메모리 이야기. (PintOS)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
메모리 관리
대상자
OS 개발자, 시스템 프로그래머, 대학원생
핵심 요약
- 가상 주소(VA)와 물리 주소(PA)의 맵핑은
PML4
와SPT
를 통해 이루어진다. Lazy loading
은 필요할 때만 물리 메모리에 페이지를 할당하여 메모리 효율성을 높인다.- 페이지 폴트 발생 시
SPT
를 통해 HDD/메모리에서 데이터를 로드하거나 스왑 영역을 활용한다.
섹션별 세부 요약
용어 정리
VA
: 가상 주소 (데이터 저장 위치 표시용 숫자)PA
: 물리 주소 (DRAM에 저장된 실제 주소)KVA
: 커널 가상 주소 (커널 베이스(KERN_BASE) 이상의 VA)UVA
: 유저 가상 주소 (커널 베이스 이하의 VA)PTE
: 페이지 테이블 항목 (VA → PA 맵핑 정보)SPT
: 보충 페이지 테이블 (파일 정보, 메모리 여부 등 부가 정보 저장)
기본적인 구조 및 이해
- VA → PA 맵핑은
PML4
와SPT
를 통해 이루어진다. KERN_BASE
는 물리 메모리 0번 주소와 1:1 맵핑되어 커널이 물리 메모리 접근 가능.- 유저 풀은 페이지 단위로 할당되며, 프로세스별로 분할하여 사용.
VA의 구성 및 페이지 테이블
- VA는
VPN
(가상 페이지 번호)과VPO
(오프셋)로 구성. PTE
는 프레임 번호,Present
비트,R/W
비트,Accessed/Dirty
플래그 등을 포함.SPT
는VM_UNINIT
,VM_ANON
,VM_FILE
등의 페이지 유형을 구분.
페이지 폴트와 SPT
- 페이지 폴트는 VA에 해당하는 PA가 없을 때 발생.
SPT
를 통해 HDD/메모리에서 데이터를 로드하거나 스왑 영역을 활용해 페이지를 할당.Lazy loading
은 필요할 때만 물리 메모리 할당하여 메모리 낭비 방지.
스왑 및 페이지 관리
- 스왑은 HDD의 일정 공간을 임시 저장소로 사용.
VM_FILE
은 변경되지 않은 경우 버려지고, 변경된 경우 원본 파일에 다시 쓰기.VM_ANON
(익명 페이지)는 스택/힙 데이터 저장, 스왑 영역으로 이동 가능.
결론
PML4
와SPT
의 1:1 맵핑 구조를 이해하면 커널이 물리 메모리에 직접 접근 가능.Lazy loading
과SPT
기반의 페이지 폴트 처리는 메모리 효율성과 성능 향상에 핵심적.- 가상 메모리 구조는 OS 개발에서 필수적이며,
VA
,PA
,SPT
,PML4
개념을 정확히 파악해야 한다.