[메모리] 3. 가상메모리와 페이징

2025. 11. 02.
게시일
Nov 2, 2025
작성중…

MMU

작성중…

메모리 단편화

작성중…
 

가상메모리

작성중…
 

세그멘테이션

작성중…

페이징 개요

작성중…
 

주소변환과 페이지 테이블

작성중…

On demand paging

TLB

매번

Multi-level Page Table


페이지 폴트

어떻게 OS가 Page Fault를 처리하는가?
작성중…
 

캐싱과 페이징 총정리

아래는 캐싱, 가상메모리, 페이징, TLB, 다층 Page Table이 적용된 일반적인 현대 컴퓨터 시스템에서 CPU가 가상메모리로 메모리를 받아올 때의 단계를 정리해보자.
 
명령어가 특정 가상 주소로 메모리를 요구한다. CPU 의 MMU는 아래 단계를 거쳐 메모리를 레지스터에 적재한다.
  1. TLB Lookup (물리 주소 변환 단계)
  • TLB hit → 가상 주소를 물리 주소로 즉시 변환
  • TLB miss
      1. Page Table Walk (상위 → 하위 Page Table 탐색)
          • Page Table을 저장한 Page가 미생성되었거나 evicted된 경우 → Page Fault 발생 → OS가 해당 Page Table 페이지를 생성하거나 swap-in → Page table walk 재개
          • Page Table을 저장한 Page가 valid하면 PTE lookup 수행
      1. PTE Lookup
          • PTE valid → TLB update → 주소 변환 완료
          • PTE invalid → Page Fault
            • demand-zero page → frame 할당 → TLB update → 명령 재실행
            • evicted page → swap-in → TLB update → 명령 재실행
  1. Cache Lookup (물리 주소 기반 데이터 접근)
      • Cache hit → CPU 레지스터로 전달
      • Cache miss → RAM에서 cache line 로드 (cache fill) → 데이터 전달
 
제일 이상적인 것은 TLB Hit → Cache Hit이다. 프로그램 실행 극초기가 지나면, 메모리 접근 대부분은 TLB Hit → Cache Hit/Miss 수준에서 벌어진다.
 

페이지 보호

작성중…

Page Swap 알고리즘

작성중…

Context Switch와 Paging

이 부분은 Process와 시분할 기법과 Context-Switching에 대한 배경지식이 있어야 합니다.
Context Switching을 하면 TLB도 당연히 갈아끼운다. 원칙적으로는 Context-Switching이 일어날 때 마다 TLB Flushing을 하나, 요즘 CPU에서는 TLB마다 프로세스 식별자를 붙여서 Flush를 하지 않아도 된다. 이를 ASID라고 한다.
제목: [메모리] 3. 가상메모리와 페이징작성일: 2025. 11. 02.