Dahyee 2022. 7. 22. 12:42

메모리 할당(Memory Allocation)

  • 가상 메모리는 실제 메모리(Physical Memory)에 올라와 있지 않기 때문에 실제 메모리(RAM)에 올려서 CPU가 연산을 실행할 수 있게 하는 작업이 필요.
  • 이 과정을 메모리 할당이라고 한다.
  • 실제 메모리에 올라가면 그 때 물리적 주소(Pysical Address)가 생긴다.

1. 연속메모리 할당

  • 프로세스를 하나의 덩어리로 프로세스 전체를 실제 메모리에 할당함.
  • 전체를 다 올리기 때문에 가상메모리가 안 쓰임.

1-1. 고정크기할당

  • 메모리(physcial memory)를 일정 크기로 나눠서 각 프로세스가 하나의 파티션에 할당됨.
  • 크기가 작은 프로세스가 하나의 파티션에 할당되면 메모리 공간이 남는(hole) 낭비 발생. (내부 단편화)
  • 크기가 큰 프로세스는 실행이 안됨.

1-2. 가변크기할당

  • 각 프로세스의 크기에 맞춰 메모리를 할당.
  • 하나의 파티션의 크기 = 하나의 프로세스의 크기
  • 각 프로세스 사이의 남는 공간이 생겨서 메모리 낭비 발생. (외부 단편화)

 

2. 비연속메모리할당

  • 하나의 프로세스를 나눠서 나눈 것 하나하나를 실제 메모리(RAM)에 할당.
  • 프로세스 안의 모든 조각이 RAM에 올라가는 것이 아니라 cpu가 접근하려는 데이터, 그리고 공간지역성/시간지역성에 따라 필요한 조각들만 할당 됨.
  • 프로세스를 나누는 기준에 따라 세그멘테이션과 페이징으로 나뉜다.

2-1. 세그멘테이션

  • 의미단위로 프로세스를 분할.
  • 메모리(RAM)는 안나눠져 있음.
  • 세그먼트 테이블에 의해서 논리주소가 물리주소로 변환 됨.
  • 내부단편화 無, 외부단편화 有

2-2. 페이징

  • 일정크기로 물리메모리와 가상메모리를 분할 함.
  • 물리메모리의 분할 1 = 프레임, 가상메모리의 분할 1 = 페이지
  • 페이지 테이블에 의해 가상주소가 물리 주소로 변환됨.
  • 내부단편화 有, 외부단편화 無