PintOS 메모리 관리: 가상 주소, 페이지 테이블, 페이지 폴트
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

메모리 이야기. (PintOS)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

메모리 관리

대상자

OS 개발자, 시스템 프로그래머, 대학원생

핵심 요약

  • 가상 주소(VA)와 물리 주소(PA)의 맵핑은 PML4SPT를 통해 이루어진다.
  • Lazy loading은 필요할 때만 물리 메모리에 페이지를 할당하여 메모리 효율성을 높인다.
  • 페이지 폴트 발생 시 SPT를 통해 HDD/메모리에서 데이터를 로드하거나 스왑 영역을 활용한다.

섹션별 세부 요약

용어 정리

  • VA: 가상 주소 (데이터 저장 위치 표시용 숫자)
  • PA: 물리 주소 (DRAM에 저장된 실제 주소)
  • KVA: 커널 가상 주소 (커널 베이스(KERN_BASE) 이상의 VA)
  • UVA: 유저 가상 주소 (커널 베이스 이하의 VA)
  • PTE: 페이지 테이블 항목 (VA → PA 맵핑 정보)
  • SPT: 보충 페이지 테이블 (파일 정보, 메모리 여부 등 부가 정보 저장)

기본적인 구조 및 이해

  • VA → PA 맵핑은 PML4SPT를 통해 이루어진다.
  • KERN_BASE는 물리 메모리 0번 주소와 1:1 맵핑되어 커널이 물리 메모리 접근 가능.
  • 유저 풀은 페이지 단위로 할당되며, 프로세스별로 분할하여 사용.

VA의 구성 및 페이지 테이블

  • VA는 VPN (가상 페이지 번호)과 VPO (오프셋)로 구성.
  • PTE는 프레임 번호, Present 비트, R/W 비트, Accessed/Dirty 플래그 등을 포함.
  • SPTVM_UNINIT, VM_ANON, VM_FILE 등의 페이지 유형을 구분.

페이지 폴트와 SPT

  • 페이지 폴트는 VA에 해당하는 PA가 없을 때 발생.
  • SPT를 통해 HDD/메모리에서 데이터를 로드하거나 스왑 영역을 활용해 페이지를 할당.
  • Lazy loading은 필요할 때만 물리 메모리 할당하여 메모리 낭비 방지.

스왑 및 페이지 관리

  • 스왑은 HDD의 일정 공간을 임시 저장소로 사용.
  • VM_FILE은 변경되지 않은 경우 버려지고, 변경된 경우 원본 파일에 다시 쓰기.
  • VM_ANON (익명 페이지)는 스택/힙 데이터 저장, 스왑 영역으로 이동 가능.

결론

  • PML4SPT의 1:1 맵핑 구조를 이해하면 커널이 물리 메모리에 직접 접근 가능.
  • Lazy loadingSPT 기반의 페이지 폴트 처리는 메모리 효율성과 성능 향상에 핵심적.
  • 가상 메모리 구조는 OS 개발에서 필수적이며, VA, PA, SPT, PML4 개념을 정확히 파악해야 한다.