Linux의 메모리 관리
Linux 가상 메모리
3단계 페이지테이블 구조의 사용
- 페이지 디렉토리(page directory)
- 각 프로세스는 페이지 크기의 페이지 디렉토리 하나를 가짐
- 페이지 디렉토리의 각 항목은 페이지 중간 디렉토리 중 한 페이지를 가리킴
- 페이지 중간 디렉토리(page middle directory)
- 다수의 페이지로 구성될 수 있음
- 중간 디렉토리의 각 항목은 페이지테이블 중 한 페이지를 가리킴
- 페이지테이블(Page table)
- 다수의 페이지로 구성될 수 있음
- 각 항목은 프로세스의 가상페이지 하나를 참조
Linux 가상 주소 : 4개의 필드로 구성
- 첫 번째 필드 -> 페이지 디렉토리의 인덱스
- 두 번째 필드 -> 페이지 중간 디렉토리에 대한 인덱스
- 세 번째 필드 -> 페이지테이블의 인덱스
- 네 번째 필드 -> 선택된 메모리 페이지 내의 오프셋 값
Windows의 메모리 관리
Windows 가상주소 맵(Virtual Address Map)
Windows의 디폴트 32비트 가상주소공간
- 사용자 프로세스 -> 각각 독립된 32비트 주소공간(4GB)의 메모리 사용 가능
- 메모리의 절반(2GB)은 운영체제용, 절반은 사용자가 독자적으로 사용할 수 있는 가상주소공간의 크기(2GB)
Windows 페이징
- 프로세스 생성 시 2GB(32비트의 경우)에 가까운 사용자 공간 전체를 사용 가능
- 윈도우즈는 페이지들을 64KB 경계에 맞추어 할당된 연속 영역으로 관리
- 가용(available)
- 프로세스에 의해 현재 사용되지 않는 주소영역
- 예약(reserved)
- 가상메모리 관리자가 다른 용도로 할당될 수 없도록 프로세스를 위해 마련해 둔 주소영역
- 위탁(committed)
- 프로세스가 가상메모리 페이지들을 접근할 때 사용할 수 있도록 초기화된 주소영역
- 페이지는 디스크 혹은 주기억장치 상에 위치
- 디스크 상에 있는 페이지들은 파일 내에 유지되거나 페이징 파일 상에 위치