Memory Management & Virtualization Physics
물리적 메모리의 한계를 넘어선 가상 주소 공간의 추상화와 페이징, 세그멘테이션 및 하드웨어 가속 기술을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
메모리 관리 및 가상화 물리(Memory Management & Virtualization Physics, MMVP)는 제한된 물리적 RAM 자원을 수많은 프로세스에게 무한하고 연속적인 공간처럼 보이게 만드는 '공간의 연금술'을 다룹니다.
운영체제는 MMU(Memory Management Unit) 하드웨어와 협력하여 가상 주소를 물리 주소로 실시간 변환하며, 이 과정에서 보호와 격리를 수행합니다. 학습자는 페이징(Paging) 아키텍처, 페이지 테이블 계층 구조, 그리고 TLB(Translation Lookaside Buffer) 캐싱이 성능에 미치는 물리적 영향을 학습합니다. 이를 통해 메모리 부족 상황에서도 시스템 안정성을 유지하는 효율적인 자원 관리 전략을 수립합니다.
2. Scope & Boundaries
In-Scope
- Address Translation: 가상 주소(VA)에서 물리 주소(PA)로의 변환 메커니즘 및 MMU 역할
- Paging Systems: 페이지 테이블 관리, 다단계 페이징, 역페이지 테이블(Inverted Page Table)
- Memory Allocation: 커널/유저 영역 할당 기법 (Buddy System, Slab Allocator, Malloc mechanics)
- Virtualization Core: 요구 페이징(Demand Paging), 페이지 교체(Page Replacement) 알고리즘
- Hardware Acceleration: TLB(Translation Lookaside Buffer) 거동 및 대형 페이지(Huge Pages)
Out-of-Scope
- 가비지 컬렉션(GC) 소프트웨어 알고리즘 (05. Programming Languages 영역으로 위임)
- 영구 저장 장치 I/O 스택 상세 (04. Storage Mechanics 영역으로 위임)
Boundaries
- MMVP vs. Architecture: Architecture는 '메모리 소자 자체의 물리'에 집중한다면, MMVP는 '그 소자를 논리적으로 분할하고 보호하는 운영체제의 논리'에 집중합니다.
3. Counterexample
- 단순히 C 언어에서
malloc과free를 사용하는 것은 MMVP 학습이 아닙니다.malloc호출 시 **브레이크 주소(brk)**가 이동하거나 **익명 매핑(mmap)**이 생성되는 과정, 그리고 실제 메모리 접근 시 **페이지 폴트(Page Fault)**가 발생하여 디스크에서 데이터가 로딩되는 물리적 흐름을 추적할 수 있어야 합니다.
4. Prerequisites
- 디지털 논리 및 프로세서 물리 (Basic): 폰 노이만 아키텍처의 주소 버스(Address Bus) 개념이 필수적입니다. (01. Digital Logic)
- 컴퓨터 아키텍처 및 임베디드 메카니즘 (Recommended): 캐시 계층 구조(L1/L2/L3)와 지역성(Locality) 이해가 권장됩니다. (02. Computer Architecture)
5. Learning Map
- Virtual Paging: 가상 주소가 물리 주소로 사상되는 페이지 테이블 구조를 배웁니다.
- I-O Stack & Cache: 페이지 캐시를 통한 디스크 입출력 가속화 물리를 이해합니다.
- VFS Internals: 다양한 파일 시스템을 통합 관리하는 가상 계층을 분석합니다.
- Persistence Engine: 데이터의 영속성과 정합성을 보장하는 물리적 모델을 완성합니다.
6. Learning Topics
Basic
Core: 가상 메모리와 주소 변환 기초 (Virtual Memory Basics)
- Why to Learn: 프로그램에 독립적인 주소 공간을 제공하여 시스템 안정성과 보안을 확보하기 위함입니다.
- What to Learn:
- 논리 주소(Logical) vs 물리 주소(Physical) 대응 관계
- 내부 파편화(Internal) vs 외부 파편화(External Fragmentation) 물리
- 베이스/리미트 레지스터를 이용한 기초적인 메모리 보호
- How to Learn:
- 프로세스마다 동일한 가상 주소(예:
0x400000)를 가질 수 있는 이유 도식화 - 단순 페이징 모델에서 오프셋(Offset)과 페이지 번호 분리 실습
- 프로세스마다 동일한 가상 주소(예:
- Implement: 가상 주소 입력 시 매핑 테이블을 참조하여 물리 주소를 반환하는 기초 모사 프로그램
Recommended
Core: 페이징 아키텍처와 페이지 테이블 (Paging Architecture)
- Why to Learn: 현대 운영체제가 방대한 주소 공간을 메모리 낭비 없이 관리하는 방식을 이해하기 위해서입니다.
- What to Learn:
- 다단계 페이지 테이블(Multi-level Paging)과 메모리 오버헤드 계산
- TLB 히트/미스(Hit/Miss)가 명령 실행 사이클에 미치는 영향
- 공유 라이브러리를 위한 Copy-on-Write(CoW) 물리 메커니즘
- How to Learn:
- 64비트 아키텍처에서의 페이지 테이블 단계(4-level, 5-level) 구조 분석
- TLB 플러시(Flush)가 컨텍스트 스위칭 성능에 미치는 손익 계산
- Implement: 요구 페이징(Demand Paging) 시나리오에서의 트랩 핸들링 흐름도 작성
Practical
Core: 페이지 교체와 스와핑 역학 (Page Replacement & Swapping)
- Why to Learn: 물리 메모리가 가득 찬 상황에서도 중요한 작업을 끊김 없이 실행하기 위함입니다.
- What to Learn:
- FIFO, LRU, LFU 등 고전적 교체 알고리즘의 한계와 실무형 Clock 알고리즘
- 스래싱(Thrashing) 현상과 워킹 셋(Working Set) 모델의 물리적 의미
- 스왑 아웃(Swap-out) 시 발생하는 디스크 I/O 시퀀스
- How to Learn:
- 특정 참조열(Reference String)에 대해 알고리즘별 페이지 부재 횟수 비교
- 시스템 모니터링 도구를 통해 실시간 메모리 압박(Memory Pressure) 지표 관측
- Implement: LRU 캐시 기능을 가진 페이지 교체 시뮬레이터 구현
Advanced
Core: 커널 메모리 할당 및 가상화 심화 (Kernel Allocation & Advanced)
- Why to Learn: 운영체제 자체의 메모리 효율성을 극대화하고 클라우드 가상화 성능을 튜닝하기 위해서입니다.
- What to Learn:
- 슬랩 할당기(Slab Allocator)를 통한 커널 오브젝트 관리 및 캐싱
- 비균등 메모리 접근(NUMA) 아키텍처에서의 메모리 배치 최적화
- 하드웨어 보조 가상화(EPT/NPT)를 통한 2계층 주소 변환(Two-dimensional Paging)
- How to Learn:
- 리눅스 커널의
/proc/slabinfo를 분석하여 주요 커널 자원 할당 현황 파악 - 가상 머신(VM) 환경에서의 메모리 벌루닝(Ballooning) 물리 원리 연구
- 리눅스 커널의
- Implement: 버디 시스템(Buddy System) 라이브러리를 이용한 메모리 할당/해제 엔진 프로토타입
7. Terminology
8. References
Primary References
- [P1] CS2023 - OS/Virtual Memory — Address translation and paging.
- [P2] SWEBOK - Computing Foundations — Memory hierarchy and management.
Secondary References
- [Operating Systems: Three Easy Pieces] Remzi H. Arpaci-Dusseau — The "Virtualization" part is excellent.
- [A Guide to Kernel Memory Allocators] — Deep dive into Slab/Slob/Slub history.
Industry References
- [Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3] — System programming guide.
- [Linux Kernel Memory Management Documentation] — Official implementation details.
9. Final Checklist
Primary Checklist
- 주소 변환 과정에서 다단계 페이지 테이블이 단일 테이블 대비 메모리를 아끼는 원리를 수리적으로 설명 가능한가? (P1)
- 페이지 폴트 발생 시 하드웨어 트랩부터 디스크 I/O 후 복귀까지의 물리적 시퀀스를 재구성할 수 있는가? (P1)
Secondary Checklist
- 내부 파편화와 외부 파편화가 시스템 성능과 가용 용량에 미치는 영향을 구분하여 인지하는가?
- Copy-on-Write 메커니즘이
fork()시스템 콜의 물리적 성능을 어떻게 개선하는지 이해하는가?
Industry Checklist
- 프로젝트 환경에서 Huge Pages를 설정했을 때 TLB 미스율 변화와 애플리케이션 지연 시간 간의 상관관계를 분석할 수 있는가? (SFIA)
-
/proc/meminfo데이터를 해석하여 시스템이 스와핑(Swapping) 상태에 진입했는지 여부를 판별 가능한가?