콘텐츠로 바로가기

Virtual Memory & Paging

각 프로세스에게 독립적이고 거대한 메모리 공간의 환상을 제공하는 가상 주소 체계와, 이를 물리 메모리에 조각내어 사상하는 페이징 하드웨어의 작동 원리를 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

가상 메모리 및 페이징(Virtual Memory & Paging, VMP)은 운영체제가 컴퓨터의 한정된 물리 램(RAM)을 마치 무한하고 연속적인 '가상 공간'처럼 프로세스들에게 속여서 제공하는 메모리 가상화의 핵심 물리 기술입니다.

프로그램은 실제 메모리의 위치를 알 필요가 없습니다. 학습자는 CPU가 내뱉는 가상 주소가 **페이지 테이블(Page Table)**과 **MMU(Memory Management Unit)**를 거쳐 어떻게 실제 하드웨어 주소로 광속 전환되는지 배웁니다. 또한, 물리 메모리가 부족할 때 자주 안 쓰는 데이터를 디스크로 쫓아내는 **스와핑(Swapping)**과, 필요한 순간에만 데이터를 불러오는 **요구 페이징(Demand Paging)**의 물리적 동작 메커니즘을 심도 있게 다룹니다. 이를 통해 현대 컴퓨터가 수많은 고사양 앱을 안정적으로 동시에 구동할 수 있게 만드는 기초 토대를 이해합니다.

2. Scope & Boundaries

In-Scope

  • Address Translation: 가상 주소에서 물리 주소로의 하드웨어 매핑 과정
  • Page Table Structures: 단일, 다단계(Multi-level), 역(Inverted) 페이지 테이블 물리 구조
  • Demand Paging: 페이지 폴트(Page Fault)의 감지와 동기적 데이터 물리 적재
  • Protection & Sharing: 페이지 별 권한(R/W/X) 제어 및 여러 프로세스 간 물리 페이지 공유

Out-of-Scope

  • TLB(Translation Lookaside Buffer) 하드웨어 캐시 상세 (02-02-03 노드에서 분담)
  • 가상 메모리 관련 고도의 보안 공격(예: Meltdown) (02-04-01 노드에서 분담)

Boundaries

  • VMP vs. Memory Mapping: 단순 메모리 맵이 '전체 레이아웃'을 정의한다면, VMP는 '실행 시점의 동적 주소 변환과 자원 할당 물리'에 집중하여 구분합니다.

3. Counterexample

  • 단순히 "메모리를 관리하는 것"을 VMP라고 정의하는 것은 잘못입니다. 운영체제가 제공하는 가상 주소 공간이 실제 설치된 물리 램 용량보다 왜 더 클 수 있는지(Over-commitment) 물리적 근거를 제시할 수 있어야 하며, 외부 단편화(External Fragmentation) 문제를 해결하기 위해 왜 '페이징'이라는 물리적 조각내기 방식이 세그멘테이션보다 우월해졌는지 입증하지 못한다면 VMP의 핵심 가치를 이해하지 못한 것입니다.

4. Prerequisites

  • Virtual Memory & TLB Mechanics (Basic): 주소 변환 기초와 TLB 역할이 필수입니다. (02-02-03 VMT)
  • Bare-metal Memory Mapping (Recommended): 하드웨어 메모리 맵 구조 이해가 권장됩니다. (02-05-01 BMM)

5. Learning Map

  1. The Great Illusion: 실제 램 주소를 감추고 가짜 주소(Virtual Address)를 배포하는 철학을 배웁니다.
  2. Page Registry: 가상 주소와 물리 주소를 잇는 거대한 장부(Page Table)를 구축합니다.
  3. The Fault Trap: 메모리에 데이터가 없을 때 CPU가 멈추고 디스크로부터 데이터를 길어오는 물리 복구 시퀀스를 익힙니다.
  4. Eviction Policy: 좁은 램 공간에서 누구를 내쫓고 누구를 남길지 결정하는 생존 물리를 완성합니다.

6. Learning Topics

Basic

Core: 가상 주소 공간의 정의와 물리적 분할 (Virtual Address Space)

  • Why to Learn: 프로그램 간의 침범을 막고 개발자가 메모리 위치 고민 없이 코딩하게 하기 위함입니다.
  • What to Learn:
    • Address Space Partitioning: 유저 공간과 커널 공간의 물리적 경계
    • Pages and Frames: 가상 주소의 단위 '페이지'와 물리 주소의 단위 '프레임'
    • Protection Bits: 실행 방지(NX), 읽기 전용 등 하드웨어 보호 수준
  • How to Learn:
    • pstop 도구로 특정 프로세스의 VIRT(가상)와 RES(물리) 크기를 비교하여 가상화 배율 산출 실습
    • 읽기 전용 텍스트 영역에 쓰기를 시도했을 때 하드웨어가 내뱉는 물리적 정지 리포트 분석
  • Implement: 특정 포인터 주소를 입력받아 페이지 오프셋과 페이지 번호를 수리적으로 분리하는 프로그램

Core: 다단계 페이지 테이블과 메모리 절약 (Page Table Hierarchies)

  • Why to Learn: 모든 주소의 장부를 만들면 장부 자체가 램을 다 차지하므로, 이를 물리적으로 압축하기 위해서입니다.
  • What to Learn:
    • Multi-level Paging: 장부를 계층화하여 안 쓰는 영역의 하위 장부를 생략하는 기법
    • Translation Walk: CPU가 여러 단계의 장부를 순차적으로 뒤지는 물리적 여정
    • Memory Overhead: 페이지 테이블 자체의 물리적 램 점유율 계산
  • How to Learn:
    • 4KB 페이지 크기에서 64비트 시스템이 왜 4단계 이상의 페이지 테이블을 쓰는지 물리적 계산 실습
    • 메모리 사용량이 극히 적은 프로그램이 다단계 구조 덕분에 램을 왜 작게 쓰는지 분석
  • Implement: 2단계 페이지 테이블 구조를 시뮬레이션하여 가상 주소로 최종 물리 프레임 번호를 찾는 로직

Practical

Core: 페이지 폴트와 요구 페이징 (Page Fault Mechanics)

  • Why to Learn: 램에 데이터가 없어도 프로그램이 안 죽고 계속 실행되게 만드는 '마술'의 물리적 실체이기 때문입니다.
  • What to Learn:
    • Page Fault Flow: 예외 감지 -> 디스크 I/O -> 프레임 적재 -> 테이블 갱신 -> 재실행 시퀀스
    • Valid/Invalid Bit: 해당 페이지가 현재 물리 램에 존재하는지 알리는 하드웨어 플래그
    • Pre-paging: 성능을 위해 주변 페이지를 미리 물리적으로 읽어오는 최적화
  • How to Learn:
    • 시스템 로그에서 초당 페이지 폴트 발생 횟수를 추적하며 I/O 지연과의 물리적 상관관계 도출 실습
    • mmap 호출 후 데이터 접근 전까지 물리 메모리 할당이 일어나지 않는 'Lazy' 기지 관찰
  • Implement: 페이지 폴트 발생 시 가상의 디스크 영역에서 데이터를 프레임으로 복사하는 시뮬레이터

Advanced

Core: 페이지 소생술과 스와핑 최적화 (Swapping & Thrashing)

  • Why to Learn: 시스템이 메모리 부족으로 인해 영원히 '디스크만 읽다가' 멈추는 물리적 재앙(Thrashing)을 막기 위함입니다.
  • What to Learn:
    • Replacement Algorithms: LRU, FIFO, Clock 알고리즘의 물리적 구현 비용
    • Working Set Model: 프로세스가 현재 필수로 필요로 하는 최소 물리 페이지 집합
    • Thrashing Physics: 페이지 교체가 너무 잦아져 CPU 가동률이 0%로 추락하는 지점
  • How to Learn:
    • 램 용량을 극도로 제한한 환경에서 프로세스를 여러 개 띄워 시스템 응답성이 물리적으로 무너지는 임계점 측정 실습
    • 'Dirty bit'를 체크하여 변경된 페이지 위주로 디스크에 쓰는 물리적 쓰기 대역폭 절약법 연구
  • Implement: 데이터 접근 패턴에 따라 LRU(최근 최소 사용) 방식으로 페이지를 메모리에서 제거하는 스케줄러

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Virtual Memory 물리 메모리의 한계를 넘어 주소 공간을 추상화하여 제공하는 운영체제의 하드웨어 가상화 기법입니다. 기본 추상화 핵심 Page / Frame Physical Memory '램' 그 자체와는 다른 개념 P1:CS2023 core
Page Table 가상 주소와 물리 주소의 사상 관계를 기록한 하드웨어 참조 데이터 구조입니다. 기본 주소 변환 장부 PTE / Mapping TLB '사용자 데이터'가 아닌 '관리 정보' P1:CS2023 core
Page Fault CPU가 가상 주소에 접근했을 때 해당 데이터가 물리 메모리에 없어 발생하는 하드웨어 예외입니다. 추천 실행권 이양 Trap / Disk I/O Interrupt '프로그램 에러'가 아닌 '자원 요청' P1:CS2023 core
Thrashing (쓰래싱) 메모리 공간 부족으로 페이지 폴트가 빈번해져 시스템이 실제 연산보다 장치 입출력에만 집중하는 마비 현상입니다. 실무 시스템 붕괴 Replacement / I/O Bound Deadlock '속도가 느려지는' 정도가 아닌 '정지' P1:CS2023 core

8. References

Primary

Secondary

  • [Operating Systems: Three Easy Pieces] Remzi — The virtualization of memory.
  • [Modern Operating Systems] Andrew S. Tanenbaum — Paging systems analysis.

Industry

  • [Intel: IA-32/Intel 64 Paging Structures] — Hardware implementation reference.
  • [ARM: Identity Mapping and Memory Management] — Embedded VMP standard.

9. Final Checklist

Primary

  • '가상 주소'가 MMU를 거쳐 '물리 주소'로 변환되는 하드웨어 경로를 3단계(Directory, Table, Offset)로 설명 가능한가? (P1)
  • '페이지 폴트' 발생 시 운영체제가 커널 모드에서 수행하는 'OS 6단계 대응 물리 절차'를 입증할 수 있는 가? (P1)

Secondary

  • '단일 페이지 테이블' 구조가 64비트 환경에서 왜 물리적으로 구현 불가능(램 용량 초과)한지 수리적 근거를 제시할 수 있는 가?
  • LRU 알고리즘이 왜 이론적으로 최적에 가깝지만 실제 하드웨어 구현에서는 '비싼 비용'이 드는지 물리적 제약 사항을 소통 가능한가?

Industry

  • 대용량 DB 서버 튜닝 시, 'Huge Pages' 설정이 페이지 테이블의 깊이를 어떻게 줄이고 주소 변환 물리 오버헤드를 낮추는지 제안할 수 있는 가? (SFIA)
  • 리눅스 환경에서 OOM Killer가 작동하는 물리적 트리거 조건과 프로세스 선정 기준을 기술할 수 있는 가?