메모리 핟당 기법
여러 프로세스를 동시에 실행하는 경우 프로세스 크기가 서로 달라 메모리를 어떻게 나누어 사용할지에 대한 문제가 생긴다.
- 가상 메모리와 물리 메모리
가상 메모리는 실제 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있게 한다.
실제로 가상 메모리의 최대 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정되며, CPU bit에 따라 결정된다. 32bit CPU의 경우 메모리 최대 크기는 2^32 = 4GB로, 가상 메모리의 최대 크기 또한 4GB이다.
구분 | 가상 메모리 | 물리 메모리 |
---|---|---|
최대 메모리 크기 | CPU bit에 의존 | CPU bit에 의존 |
메모리 분할 방식 | - 세그먼테이션 - 페이징 |
- 가변 분할 방식 - 고정 분할 방식 |
주소 지정 방식 | 가상 주소 | 절대 주소, 상대 주소 |
연속 할당 기법
프로그램 전체를 한 공간에 연속적으로 할당한다.
-
고정 분할 할당(정적 할당): 프로그램 전체가 주기억장치에 위치해야 한다. 주기억장치 고정된 크기로 분할한다. 프로그램이 분할된 영역보다 클 경우 들어갈 수 없다. 내부, 외부 단편화 발생하여 낭비가 많다.
-
가변 분할 할당(동적 할당): 고정 분할 기법처럼 미리 분할해놓는 것이 아니라 프로그램을 주기억장치에 적재 시 필요한 크기로 분할한다. 고정 분할 기법보다 단편화를 줄일 수 있지만 영역과 영역 사이 단편화가 발생할 수 있다.
비연속 할당 기법(분산 할당 기법)
프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당한다.
- 페이징(Paging) 기법
고정 분할 방식을 이용한 가상 메모리 관리 기법이다. 가상 메모리 상의 주소 공간을 일정한 크기로 분할한다. 주소 공간의 단위는 페이지이며, 실제 기억공간에서의 단위는 페이지와 같은 크기의 프레임이다.
- Page: 가상 메모리를 일정한 크기로 나눈 블록
- Frame: 물리 메모리를 일정한 크기로 나눈 블록(page와 동일한 크기)
외부 단편화는 없으나 내부 단편화가 발생할 수 있다.
- 주소 변환
가상 주소에서 물리 주소로 변환하기 위해 페이지 맵 테이블을 사용한다.
페이지 테이블에서 페이지 번호를 매핑하여 프레임 번호를 얻을 수 있다.
- 페이지 테이블 매핑방식
- 직접 매핑: 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식
- 연관 매핑: 페이지 테이블 전체를 swap 영역에서 관리하는 방식. 물리 메모리의 공간이 작을 때 사용
- 집합-연관 매핑: 연관 매핑의 문제를 개선한 방식으로, 페이지 테이블을 일정한 집합으로 자른 후 이 단위로 물리 메모리에 가져옴
- 역매핑: 앞의 세 가지 방식과 달리 물레 메모리의 프레임 번호를 기준으로 테이블을 구성
- 세그먼테이션(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(사용자가 의도치 않게 일으키는 인터럽트)을 발생시킴)