[OS] 메모리 핟당 기법

메모리 핟당 기법

여러 프로세스를 동시에 실행하는 경우 프로세스 크기가 서로 달라 메모리를 어떻게 나누어 사용할지에 대한 문제가 생긴다.


가상 메모리는 실제 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있게 한다.
실제로 가상 메모리의 최대 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정되며, CPU bit에 따라 결정된다. 32bit CPU의 경우 메모리 최대 크기는 2^32 = 4GB로, 가상 메모리의 최대 크기 또한 4GB이다.

구분 가상 메모리 물리 메모리
최대 메모리 크기 CPU bit에 의존 CPU bit에 의존
메모리 분할 방식 - 세그먼테이션
- 페이징
- 가변 분할 방식
- 고정 분할 방식
주소 지정 방식 가상 주소 절대 주소, 상대 주소


연속 할당 기법

프로그램 전체를 한 공간에 연속적으로 할당한다.


비연속 할당 기법(분산 할당 기법)

프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당한다.

- 페이징(Paging) 기법

고정 분할 방식을 이용한 가상 메모리 관리 기법이다. 가상 메모리 상의 주소 공간을 일정한 크기로 분할한다. 주소 공간의 단위는 페이지이며, 실제 기억공간에서의 단위는 페이지와 같은 크기의 프레임이다.

외부 단편화는 없으나 내부 단편화가 발생할 수 있다.

가상 주소에서 물리 주소로 변환하기 위해 페이지 맵 테이블을 사용한다.
페이지 테이블에서 페이지 번호를 매핑하여 프레임 번호를 얻을 수 있다.

페이지 주소변환


- 세그먼테이션(Segmentation) 기법

가변 분할 방식을 이용한 가상 메모리 관리 기법이다. 물리 메모리의 프로세스 크기에 따라 가변적으로 나누어 사용한다. 페이징과 달리 가변적인 크기로 분할한다.

내부 단편화는 없으나 외부 단편화가 발생할 수 있다. 평균 세그먼트의 크기가 작을수록 외부 단편화는 작아진다.

주소 변환을 위해 세그먼트의 위치 정보를 가지고 있는 세그먼테이션 매핑 테이블이 필요하다.
이 테이블은 limit(세그먼트 크기)과 base(물리 메모리상의 시작 주소 정보)를 갖는다.

가상 주소를 (S,D)로 표현한다. S는 세그먼트의 No이고, D는 세그먼트 시작 지점에서 해당 주소까지의 거리를 의미한다. 물리주소는 base[S]+D 로 계산한다.

No limit base
0 280 120
1 120 450
2 100 630

논리주소 (2, 100) => 물리주소 630+100 = 730번지
논리주소 (1, 200) => 거리가 세그먼트의 크기(170)보다 크기 때문에 메모리 관리자는 해당 프로세스를 강제 종료한다. (trap(사용자가 의도치 않게 일으키는 인터럽트)을 발생시킴)

세그멘테이션 기법의 주소 변환


참고