Chapter 11 · Virtual Memory II

페이지 테이블 구조 최적화, TLB, 하드웨어 캐시, 메모리 참조 경로

요약

Virtual Memory II는 두 가지 핵심 문제를 다룬다. 첫째, page table이 차지하는 공간 오버헤드를 줄이는 방법이다. 32비트 주소 공간에서 4KB 페이지를 사용하면 프로세스당 약 4MB의 page table이 필요하다. 이를 완화하기 위해 linked-list page table, hashed page table, inverted page table, two-level page table, multi-level page table 등 다양한 구조가 제안된다.

둘째, 주소 변환 비용을 줄이는 방법이다. 일반 page table은 메모리 접근 횟수를 두 배로 늘리고, 2단계 구조는 세 배로 늘린다. 이를 해결하기 위해 하드웨어 TLB(Translation Lookaside Buffer)를 도입해 가상-물리 주소 변환을 캐싱한다. TLB는 완전 연관(fully associative) 방식으로 동작하며, 99% 이상의 변환을 단일 사이클에 처리한다.

또한 메인 메모리 접근 속도를 높이기 위한 hardware cache 구조(direct-mapped, set-associative, fully associative)를 살펴보고, TLB + cache + page table이 결합된 전체 memory reference 경로를 단계별로 정리한다.

핵심개념

page table 페이지 테이블

가상 페이지 번호를 물리 프레임 번호로 매핑하는 자료구조. 프로세스마다 별도로 유지되며, 32비트 주소·4KB 페이지 기준 프로세스당 약 4MB를 소비한다.

page table entry (PTE) 페이지 테이블 항목

page table의 개별 항목. 물리 프레임 번호, 유효 비트, 보호 비트 등을 포함한다. TLB는 이 PTE를 캐싱해 변환 속도를 높인다.

hashed page table 해시 페이지 테이블

가상 페이지 번호를 해시해 테이블 인덱스를 구한다. 각 버킷은 충돌 처리를 위한 연결 리스트를 가지며, 각 노드는 (VPN, 물리 프레임 번호, 다음 포인터)를 저장한다. 실제로 사용 중인 페이지만 항목이 존재해 공간을 절약한다.

inverted page table 역 페이지 테이블

물리 프레임마다 하나의 항목(소유 프로세스 PID + VPN)을 두는 구조. 시스템 전체에서 단 하나의 테이블만 존재해 공간을 절약하지만, VPN 검색에 선형 탐색이 필요해 느리다. 해시 테이블로 보완한다.

two-level page table 2단계 페이지 테이블

가상 주소를 master page# / secondary page# / offset 세 부분으로 분할한다. 실제 사용되는 secondary 테이블만 메모리에 올려 공간을 절약하지만, 변환에 메모리 접근이 2회 더 필요하다.

multi-level page table 다단계 페이지 테이블

2단계를 3단계 이상으로 확장한 구조. Alpha AXP는 3단계 페이지 테이블로 43비트 가상 주소를 처리하며, 각 단계 테이블이 정확히 한 페이지(8KB)에 들어가도록 설계된다.

TLB Translation Lookaside Buffer

MMU 내부에 위치한 하드웨어 캐시로, VPN → PTE 변환을 단일 사이클에 수행한다. 완전 연관 방식으로 모든 항목을 병렬 검색하며, 일반적으로 16–48개 항목을 보유한다.

TLB hit / TLB miss TLB 적중 / TLB 미스

TLB hit이면 단일 사이클에 변환 완료(99% 이상). TLB miss이면 하드웨어(MMU) 또는 소프트웨어(OS)가 페이지 테이블을 참조해 PTETLB에 적재한 뒤 재시작한다.

hardware cache 하드웨어 캐시

CPU와 메인 메모리 사이의 고속 메모리. 데이터를 cache block(line) 단위로 저장하고, 매핑 방식에 따라 direct-mapped, set-associative, fully associative로 분류한다.

direct-mapped cache 직접 매핑 캐시

각 메모리 블록이 캐시의 정확히 한 위치에만 들어갈 수 있다. 위치는 (Block address) mod (캐시 블록 수)로 결정된다. 구현이 단순하지만 충돌 미스(conflict miss)가 많이 발생한다.

set-associative cache 집합 연관 캐시

캐시를 여러 set으로 나누고, 각 set에 N개의 way(슬롯)를 두어 동일 set으로 매핑된 블록이 N개 중 어느 곳에나 저장될 수 있다. 연관도가 높을수록 미스율이 감소하지만 수확 체감이 나타난다.

cache tag / hit / miss 캐시 태그 / 적중 / 미스

tag는 캐시 항목이 어느 메모리 블록인지 식별하는 주소 상위 비트. 요청 주소의 태그와 일치하면 hit, 불일치하면 miss로 메인 메모리에서 블록을 적재한다.

effective access time 유효 접근 시간

히트율과 미스율을 가중 평균한 평균 메모리 접근 시간. TLB hit 비율과 cache hit 비율이 높을수록 effective access time이 짧아진다.

memory reference 메모리 참조 경로

CPU가 가상 주소를 발행한 후 데이터를 얻기까지의 전체 과정. TLBpage table → 물리 메모리(캐시) 순으로 진행되며, 각 단계의 hit/miss에 따라 경로와 비용이 달라진다.

개념정리

1. Page Table 구조 개요

page table의 공간 오버헤드는 주소 공간이 커질수록 급증한다. 32비트 가상 주소(4GB), 4KB 페이지 기준 PTE가 220개 필요하고, 항목당 4바이트이면 프로세스당 약 4MB가 요구된다. 그러나 실제 프로세스는 전체 주소 공간의 극히 일부만 사용하므로, "실제 사용하는 영역만 매핑"하는 방향으로 구조를 개선한다.

개선 방법에는 크게 두 가지 접근이 있다.

  • 동적으로 확장 가능한 구조: 연결 리스트 또는 해시를 활용해 사용 중인 항목만 유지 (예: linked-list page table, hashed page table, inverted page table).
  • 간접 참조 단계 추가: 주소를 여러 부분으로 분할해 계층적으로 탐색 (예: two-level, multi-level page table).

Linked-list page table

주소 공간 중 실제로 할당된 구간만 연결 리스트 노드로 관리한다. 사용하지 않는 영역은 항목이 없어 공간이 절약되지만, 임의 접근 시 O(n) 탐색이 필요하다.

참고 Linked-list page table의 장점은 희소(sparse) 주소 공간에서의 메모리 절약이다. 단점은 탐색 시간이 길고 포인터 추적 비용이 있다는 것이다.
page table 구조 비교
구조 핵심 아이디어 장점 단점
Linear (flat) page table VPN을 직접 인덱스로 사용 O(1) 접근 주소 공간 전체 크기에 비례한 메모리 필요
Linked-list page table 사용 중인 구간만 연결 리스트 노드로 관리 희소 주소 공간에서 공간 절약 O(n) 탐색, 포인터 오버헤드
Hashed page table VPN을 해시 → 버킷 내 연결 리스트 평균 O(1) 탐색, 희소 지원 해시 충돌 시 연결 리스트 탐색 필요
Inverted page table 물리 프레임마다 하나의 항목 시스템 전체 단 하나의 테이블 VPN 검색 시간 증가, PID 관리 필요
Two-level / Multi-level page table 가상 주소를 여러 부분으로 분할, 계층적 탐색 사용하는 secondary 테이블만 메모리에 유지 다중 메모리 접근으로 변환 비용 증가

2. Hashed / Inverted Page Tables

Hashed Page Table

가상 페이지 번호(VPN)를 해시 함수에 입력해 테이블 인덱스를 계산한다. 같은 인덱스로 해시되는 항목들은 연결 리스트로 연결된다. 각 노드는 (VPN, 물리 프레임 번호, 다음 포인터)로 구성된다. 충돌이 많지 않으면 평균적으로 빠르게 변환되고, 실제 매핑된 페이지만 항목이 존재하므로 희소 주소 공간에 효율적이다.

변형인 clustered page table은 각 항목이 연속된 여러 페이지의 매핑 정보(가상 페이지 블록 번호 + 여러 물리 페이지 번호 PPN0…PPNN)를 한꺼번에 저장한다. 연속적으로 참조되는 페이지가 많을 때 노드 수를 줄여 효율을 높인다.

참고 Clustered page table에서 가상 주소는 (가상 페이지 블록 번호, 블록 내 오프셋, 페이지 오프셋)으로 분해된다.

Inverted Page Table

전통적인 page table은 프로세스마다 존재하지만, inverted page table은 시스템 전체에서 물리 메모리 프레임당 하나의 항목만 갖는다. 각 항목에는 해당 프레임을 소유한 프로세스의 PID와 가상 페이지 번호가 기록된다.

  • 장점: 테이블 크기가 물리 메모리 크기에 비례 → 가상 주소 공간이 커도 테이블이 커지지 않는다.
  • 단점: VPN으로 검색 시 테이블 전체를 선형 탐색해야 해 느리다. 이를 보완하기 위해 hash table을 병용한다.
  • PID를 함께 관리해야 여러 프로세스가 공유 페이지를 구분할 수 있다.

3. Two-level & Multi-level Page Tables

Two-level Page Table

가상 주소를 세 부분으로 분할한다.

  • Master page # (상위 비트): master 페이지 테이블 인덱스 → secondary 테이블 위치 획득
  • Secondary page # (중간 비트): secondary 페이지 테이블 인덱스 → 물리 프레임 번호 획득
  • Offset (하위 비트): 페이지 내 바이트 오프셋

32비트 주소·4KB 페이지 예시: [10 bits | 10 bits | 12 bits]. Master 테이블은 1,024개 항목(4KB = 한 페이지)이고, secondary 테이블은 실제 사용되는 주소 영역에 대해서만 할당된다. 사용하지 않는 주소 영역의 secondary 테이블은 메모리에 존재하지 않으므로 공간이 절약된다.

참고 2단계 구조에서는 데이터 접근 1회를 위해 master 테이블 접근 + secondary 테이블 접근 + 실제 데이터 접근 = 총 3회 메모리 접근이 필요하다. 이를 TLB로 완화한다.

Multi-level Page Table (Alpha AXP 예시)

64비트 등 더 넓은 주소 공간을 위해 3단계 이상으로 확장한다. Alpha AXP 아키텍처는 3단계 페이지 테이블을 사용한다.

  • 페이지 크기: 8KB
  • 가상 주소: 43비트 유효
  • 주소 공간 세그먼트: seg0(사용자 코드, 0x), seg1(사용자 스택, 11), kseg(커널, 10)
  • Alpha 21064: 각 단계의 페이지 테이블이 정확히 한 페이지(8KB)에 들어가도록 설계

Paging Page Tables (페이지 테이블 자체를 페이징)

페이지 테이블을 어디에 저장할지에 따라 두 가지 방법이 있다.

  • (1) 물리 메모리: 주소 변환이 필요 없어 단순하다. 단, 프로세스가 존재하는 동안 항상 물리 메모리를 점유한다.
  • (2) OS 가상 주소 공간: 사용되지 않는 페이지 테이블 페이지를 디스크로 page out할 수 있어 메모리 절약이 가능하다. 단, 페이지 테이블 접근 시 추가 변환이 필요하고, 가장 바깥쪽 페이지 테이블은 반드시 wiring(고정)해야 한다.
주의 OS 가상 주소 공간에 저장하면 페이지 테이블을 page out하는 동시에 OS 전체도 페이징할 수 있다. 단, 인터럽트·예외 핸들러처럼 항상 물리 메모리에 있어야 하는 코드와 데이터는 반드시 wired(고정) 처리해야 한다.

4. TLB

page table 기반 주소 변환은 메모리 접근 횟수를 2배(1단계) 또는 3배(2단계) 이상 늘린다. 이를 해결하기 위해 MMU (Memory Management Unit) 내에 TLB를 도입한다. 목표는 가상 주소에서 데이터를 가져오는 비용을 물리 주소에서 가져오는 것과 동등하게 만드는 것이다.

TLB 구조와 특성

  • fully associative cache: 모든 항목을 병렬로 검색.
  • 캐시 태그: 가상 페이지 번호(VPN)
  • 캐시 값: 대응하는 PTE
  • PTE + offset으로 MMU가 물리 주소를 직접 계산.
  • 일반적으로 16–48개 항목 보유 (64–192KB 범위 커버)
  • 프로세스의 working setTLB에 들어가므로 hit rate가 매우 높다 (99% 이상).

TLB Miss 처리

TLB miss 발생 시 두 가지 방법으로 PTETLB에 적재한다.

  • Hardware-managed TLB (예: Intel x86): MMU가 직접 페이지 테이블을 탐색해 PTE를 적재한다. OS가 개입하지 않으며, 페이지 테이블이 하드웨어가 지정한 형식이어야 한다.
  • Software-managed TLB: TLB miss가 OS로 trap되고, OS가 페이지 테이블을 탐색해 PTE를 적재한다. 처리에 20–200 사이클이 걸리지만 페이지 테이블 형식을 OS가 자유롭게 선택할 수 있다.

TLB 관리

  • 페이지 테이블이 변경되면 해당 TLB 항목을 무효화해야 한다.
  • 프로세스 context switchTLB를 플러시(flush)해야 한다. IA-32에서는 CR3(페이지 디렉터리 기저 레지스터)가 바뀔 때 자동으로 플러시된다.
  • TLB miss로 새 PTE가 적재될 때 기존 항목을 교체(evict)해야 한다 (TLB replacement policy, 보통 LRU, 하드웨어 구현).
참고 대안으로 TLB 항목에 PID를 저장하면 컨텍스트 스위치 시 플러시를 피할 수 있지만, 항목당 저장 비용이 커진다.

5. Hardware Cache (direct-mapped vs associative)

TLB가 주소 변환을 가속하듯, hardware cache는 실제 데이터·명령어 접근을 가속한다. 캐시는 메모리를 블록 단위로 저장하며, 주소를 tag / index / offset으로 분해해 접근한다.

Direct-Mapped Cache

각 메모리 블록이 오직 하나의 캐시 위치에만 매핑된다.

  • 위치 결정: (Block address) mod (캐시 내 블록 수)
  • 캐시 블록 수가 2의 거듭제곱이면 하위 비트를 인덱스로 직접 사용한다.
  • 구현이 단순하고 빠르지만, 동일 인덱스로 매핑되는 블록들이 충돌 미스를 일으킨다.

Associative Cache

Set-associative cache는 캐시를 여러 set으로 나누고, 각 set에 N개의 way(저장 슬롯)를 둔다(N-way associative). 동일한 set으로 매핑되는 블록들이 N개의 슬롯 중 어느 곳에나 저장될 수 있어 충돌 미스가 줄어든다. Fully associative cache는 모든 항목을 병렬 비교하므로 충돌 미스가 없지만 하드웨어 비용이 크다.

How Much Associativity?

연관도를 높이면 미스율이 감소하지만 수확 체감(diminishing returns)이 나타난다. 64KB D-cache·16-word 블록 기준 SPEC2000 시뮬레이션 결과:

  • 1-way (direct-mapped): 10.3%
  • 2-way: 8.6%
  • 4-way: 8.3%
  • 8-way: 8.1%
cache 매핑 방식 비교
방식 매핑 규칙 장점 단점
Direct-mapped 블록 주소 mod 캐시 블록 수 → 고정 위치 구현 단순, 접근 빠름 충돌 미스(conflict miss) 높음
Set-associative set 내 N개 way 중 자유롭게 배치 충돌 미스 감소, 수확 체감 전까지 효율적 비교 회로 증가, 설계 복잡
Fully associative 어느 위치에나 배치, 전체 병렬 비교 충돌 미스 없음 하드웨어 비용 큼, 대용량 불가

Mapping Pages to Storage

가상 페이지는 물리 메모리(RAM)뿐 아니라 디스크(backing store)에도 매핑될 수 있다. PTE의 valid bit가 off이면 해당 페이지는 디스크에 있음을 의미하고, 접근 시 page fault가 발생한다.

6. Memory Reference 경로 (TLB → cache → page table)

CPU가 가상 주소(VA)를 발행하면 다음 순서로 데이터를 획득한다.

공통 케이스: TLB hit (99% 이상)

  1. CPU가 VA를 MMU로 전달.
  2. TLB가 VPN으로 병렬 검색 → PTE 반환.
  3. PTE의 보호 비트로 읽기/쓰기 허용 여부 검사.
  4. PTE의 물리 프레임 번호 + offset → 물리 주소(PA) 계산.
  5. PA로 메인 메모리(또는 캐시)에서 데이터를 읽어 CPU에 반환.

TLB miss — page table이 메모리에 있는 경우

  1. TLB에 VPN이 없음 → TLB miss 발생.
  2. Hardware-managed: MMU가 페이지 테이블에서 PTE 탐색 후 TLB에 적재.
    Software-managed: OS로 trap → OS가 PTE를 탐색해 TLB에 적재 후 리턴.
  3. 이후 TLB hit 케이스로 재시작.
  4. 해당 프레임이 메모리에 있으면 정상 접근, 없으면 page fault 처리.

TLB miss — page table 자체가 paged out된 경우

  1. 페이지 테이블 페이지가 디스크에 있어 재귀적 page fault 발생.
  2. page fault 핸들러가 페이지 테이블 페이지를 물리 메모리로 적재.
  3. 해당 PTETLB에 적재.
  4. 변환 재시작 → TLB hit 경로.
  5. 프레임이 유효하면 정상 접근, 아니면 추가 page fault.

Page Fault 유형

  • 보호 위반(Protection fault): 허용되지 않은 읽기/쓰기/실행 시도. OS가 프로세스에 fault를 전달하거나 copy-on-write 등 특수 처리를 수행한다.
  • 미할당(Invalid – Not allocated): 유효하지 않은 가상 페이지. OS가 프로세스에 fault 전달 또는 새 프레임 할당.
  • 스왑 아웃(Invalid – Not in physical memory): 유효하지만 디스크에 있는 페이지. OS가 프레임 확보, 디스크에서 읽기, PTE를 물리 프레임으로 업데이트.

Memory Reference Summary

Memory Reference 시나리오 요약
시나리오 TLB Page Table Frame 결과
1 hit 메모리에 있음 정상 접근
2 hit 없음 (Frame PF) Frame page fault 처리 후 완료
3 miss 메모리에 있음 메모리에 있음 TLB 업데이트 후 정상 접근
4 miss 메모리에 있음 없음 (Frame PF) TLB 업데이트 후 Frame page fault
5 miss paged out (PF) Page table PF → 핸들러 → TLB 업데이트 → 재시작

예상 서술형문제

Q1 inverted page table과 계층적 (two-level / multi-level page table)의 차이점을 장단점 중심으로 서술하시오.

모범답안 보기

계층적 page table: 프로세스마다 별도의 테이블을 두고, 가상 주소를 여러 단계(master → secondary → offset)로 분할해 탐색한다. 사용하지 않는 secondary 테이블은 메모리에 없어도 되어 희소 주소 공간에 효율적이다. 단, 변환에 여러 번의 메모리 접근이 필요하고, 프로세스 수가 많아질수록 전체 공간 사용량이 증가한다.

Inverted page table: 시스템 전체에 단 하나의 테이블만 존재하며, 물리 프레임마다 하나의 항목(PID + VPN)을 저장한다. 물리 메모리 크기에만 비례하므로 가상 주소 공간이 커도 테이블이 커지지 않는다는 장점이 있다. 단, VPN으로 검색 시 선형 탐색이 필요해 느리고(보완으로 해시 테이블 병용), PID 관리가 필요하며 공유 메모리 구현이 복잡하다.

Q2 TLB가 필요한 이유와 TLB의 동작 원리 (hit / miss 처리)를 단계별로 서술하시오.

모범답안 보기

필요성: 일반 page table은 메모리에 저장되므로 가상 주소 접근 1회에 메모리 접근이 2회(1단계) 또는 3회 이상(2단계) 필요하다. 이 오버헤드를 없애기 위해 MMU 내에 VPN→PTE 변환을 캐싱하는 TLB를 둔다. 목표: 가상 주소 접근 비용을 물리 주소 접근 비용과 동등하게 만드는 것.

TLB hit (99% 이상): CPU가 VA를 발행하면 TLB가 VPN으로 병렬 검색 → PTE 반환 → 보호 비트 확인 → 물리 주소 계산 → 메모리 접근. 단일 사이클에 변환 완료.

TLB miss: ① Hardware-managed(예: x86): MMU가 직접 페이지 테이블을 탐색해 PTETLB에 적재 후 재시작. ② Software-managed: OS로 trap, OS가 PTE를 찾아 TLB에 적재(20–200 사이클) 후 재시작. 이후 TLB hit 경로로 처리.

참고 TLBfully associative cache로 구현돼 모든 항목을 병렬 비교한다. 프로세스의 working set이 16–48개 항목에 들어오는 경우가 많아 hit rate가 극히 높다.

Q3 direct-mapped cacheset-associative cache의 차이를 설명하고, 연관도(associativity)를 높일 때의 효과와 한계를 논하시오.

모범답안 보기

Direct-mapped cache는 각 메모리 블록이 캐시의 정확히 한 위치에만 저장된다. (Block address) mod (캐시 블록 수)로 위치가 고정되어 구현이 단순하지만, 같은 인덱스로 매핑되는 블록들이 서로 교체를 반복하는 충돌 미스가 많다.

Set-associative cache는 캐시를 여러 set으로 나누고 각 set에 N개의 way(슬롯)를 두어, 동일 set으로 매핑되는 블록이 N개 중 어느 곳에나 저장될 수 있다. 충돌 미스가 줄어든다.

연관도를 높이면 미스율이 감소하지만 수확 체감이 발생한다. 64KB D-cache 실험에서 1-way→2-way: 10.3%→8.6%(−1.7%p), 2-way→4-way: −0.3%p, 4-way→8-way: −0.2%p. 또한 연관도가 높을수록 병렬 비교 회로가 늘어나 하드웨어 비용·지연이 증가한다.

Q4 CPU가 가상 주소를 발행한 후 데이터를 얻기까지의 전체 memory reference 경로를 TLB, page table, 물리 메모리를 포함해 단계별로 서술하시오. TLB miss + page table이 paged out된 케이스까지 포함할 것.

모범답안 보기

① CPU가 VA를 MMU로 전달. ② TLB에서 VPN 병렬 검색.

[TLB hit] ③ PTE 반환 → 보호 비트 확인 → PA 계산 → 물리 메모리(캐시) 접근 → 완료.

[TLB miss, page table 메모리에 있음] ③ Hardware-managed: MMU가 페이지 테이블 탐색 → PTE를 TLB에 적재. Software-managed: OS로 trap → OS가 PTE 탐색 → TLB 적재 → 리턴. ④ TLB hit 경로 재시작. 프레임이 유효하면 정상 접근, 없으면 Frame PF 처리 후 완료.

[TLB miss, page table paged out] ③ 페이지 테이블 접근 시 재귀적 PF 발생. ④ PF 핸들러가 페이지 테이블 페이지를 디스크에서 물리 메모리로 읽어들임. ⑤ PTE를 TLB에 적재 → 변환 재시작 → TLB hit 경로로 처리.

Q5 hashed page table의 구조와 동작을 설명하고, clustered page table과의 차이점을 서술하시오.

모범답안 보기

Hashed page table은 VPN을 해시 함수에 넣어 테이블 인덱스를 구한다. 같은 인덱스로 해시된 항목들은 연결 리스트로 연결되며, 각 노드는 (VPN, 물리 프레임 번호, 다음 포인터)를 저장한다. VPN을 해시 → 버킷 탐색 → 노드 순회로 PTE를 찾는다. 실제로 매핑된 페이지만 항목이 존재해 희소 주소 공간에 효율적이다.

Clustered page tablehashed page table의 변형으로, 각 버킷 노드가 단일 페이지 대신 연속된 여러 페이지의 물리 프레임 번호를 한꺼번에 저장한다 (가상 페이지 블록 번호 + PPN0, PPN1, PPN2, PPN3 …). 가상 주소는 (가상 페이지 블록 번호, 블록 내 오프셋, 페이지 오프셋)으로 분해된다. 연속적으로 참조되는 페이지들이 많은 경우 노드 수를 줄여 공간·탐색 효율을 높인다.

Q6 two-level page table에서 가상 주소가 어떻게 분할되고 물리 주소로 변환되는지, 32비트·4KB 페이지 예시를 들어 단계별로 설명하시오.

모범답안 보기

32비트 가상 주소, 4KB(212바이트) 페이지 기준: [상위 10비트 | 중간 10비트 | 하위 12비트] = [Master page # | Secondary page # | Offset]

① 상위 10비트를 master page table의 인덱스로 사용 → 해당 secondary page table의 물리 주소 획득.
② 중간 10비트를 secondary page table의 인덱스로 사용 → 목표 페이지의 물리 프레임 번호 획득.
③ 물리 프레임 번호 + 하위 12비트(offset) → 물리 주소.

Master page table은 1,024개 항목(4KB = 한 페이지)으로 구성된다. 실제 사용되는 주소 구간에 해당하는 secondary 테이블만 메모리에 올려두므로 flat page table(약 4MB) 대비 공간이 절약된다. 단, TLB가 없으면 변환에 총 3번의 메모리 접근이 필요하다.

Q7 TLB 관리 시 프로세스 context switch 때 해야 하는 작업과, TLBPID를 저장하는 방식의 장단점을 비교하시오.

모범답안 보기

Context switch 시 기본 처리: 각 프로세스는 고유한 page table을 갖기 때문에, 프로세스가 바뀌면 이전 프로세스의 VPN→PTE 매핑이 무효화되어야 한다. 따라서 TLB를 플러시(flush)—모든 항목 무효화—한다. IA-32에서는 CR3(페이지 디렉터리 기저 레지스터) 값이 바뀔 때 자동으로 플러시된다.

PID 저장 방식: TLB 항목에 PID를 함께 저장하면 컨텍스트 스위치 시 TLB를 플러시하지 않아도 된다. 현재 프로세스의 PID와 다른 항목은 자동으로 무시된다. 장점: 플러시 비용 절감, 컨텍스트 스위치 후 warm-up 시간 단축. 단점: TLB 항목당 PID 필드가 추가돼 하드웨어 비용이 증가하며, 항목 수가 고정돼 있어 여러 프로세스가 TLB를 나눠 쓰면 유효 항목 수가 줄어든다.

Q8 페이지 테이블을 물리 메모리에 저장하는 방식과 OS 가상 주소 공간에 저장하는 방식 (paging page tables)의 차이점과, wiring이 필요한 이유를 설명하시오.

모범답안 보기

물리 메모리 저장: 항상 물리 메모리에 고정되어 있어 주소 변환이 필요 없고 접근이 간단하다. 단, 프로세스가 존재하는 동안 페이지 테이블 전체가 물리 메모리를 점유해 메모리 낭비가 발생한다.

OS 가상 주소 공간 저장: 사용되지 않는 페이지 테이블 페이지를 디스크로 page out할 수 있어 메모리를 절약할 수 있다. 단, 페이지 테이블 접근 시 추가 주소 변환이 필요하고, 재귀적 page fault가 발생할 수 있다.

Wiring이 필요한 이유: OS의 특정 코드와 데이터(인터럽트·예외 핸들러, page fault 핸들러 등)는 page fault를 처리하는 주체이므로, 이 코드 자체가 page fault를 일으키면 처리가 불가능해진다. 따라서 이들은 항상 물리 메모리에 고정(wired)되어야 한다. 또한 가장 바깥 단계의 페이지 테이블도 wired 처리해야 최초 변환이 가능하다.