4. Virtual Memory

4์žฅ Virtual Memory ๊ฐœ์š”

Virtual Memory๋Š” ์‹ค์ œ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ํฐ Physical memory๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธตํ™” ๊ธฐ๋ฒ•์ด๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๊ณ ์œ ํ•œ virtual address space๋ฅผ ์ œ๊ณตํ•ด ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ฒฉ๋ฆฌ์™€ protection/sharing์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ•œ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ•

  • โ‘  Virtual Address ๊ณต๊ฐ„์„ Page ๋‹จ์œ„๋กœ ์ชผ๊ฐ ๋‹ค. ์˜ˆ: 32-bit ํ”„๋กœ์„ธ์„œ๋ฉด $2^{32}$-1์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์„ page๋กœ ๋ถ„ํ• .
  • โ‘ก ๊ฐ ํ”„๋กœ๊ทธ๋žจ์€ Page ๋‹จ์œ„๋กœ access (์ „์ฒด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ)
  • โ‘ข Page ์ €์žฅ: Physical memory๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋งŒํผ physical memory์— ์˜ฌ๋ฆฌ๊ณ , ๋‚˜๋จธ์ง€๋Š” disk (HDD, SSD)์— ์ €์žฅ
  • โ‘ฃ CPU๋Š” virtual address๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ page access

์žฅ์ 

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹ค์ œ physical memory๋ณด๋‹ค ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Œ
  • ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  • Virtual Address ๊ณต๊ฐ„์€ ์ผ์ •(ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ฆ„)ํ•˜๊ณ  Physical Memory๋Š” ์‹ค์ œ ๋‚ด๊ฐ€ PC์— ์„ค์น˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
  • ํ”„๋กœ๊ทธ๋žจ 1๊ฐœ ๋‹น 1๊ฐœ์˜ Virtual Address space๋ฅผ ๊ฐ๊ฐ ๊ฐ€์ง€๊ฒŒ ๋จ

Virtual Memory ๊ฐœ์š”

Paging

โ‘  Virtual Memory

ํ”„๋กœ์„ธ์„œ์˜ virtual memory ๊ณต๊ฐ„์„ ๊ฐ™์€ ์‚ฌ์ด์ฆˆ์˜ page๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ.

  • $p$: page number ($p_{\max}$ page)
  • $o$: page offset ($o_{\max}$ B/page)
  • Virtual address: $o_{\max} \times p + o$

์˜ˆ: Size of VA 100B, Size of Page 10B. ์ฃผ์†Œ 29 $10 \times 2 + 9$ โ†’ page number 2, page offset = 9.

์˜ˆ: 8-bit processor, Size of Page 16B. VA 0010 0001 โ†’ page number 2, page offset 1 โ†’ $16 \times 2 + 1 = 33$๋ฒˆ์ง€ access.

โ‘ก Physical Memory

๋™์ผํ•œ frame ์‚ฌ์ด์ฆˆ๋กœ ๋‚˜๋ˆ”.

  • $f$: frame number ($f_{\max}$ frame)
  • $o$: frame offset ($o_{\max}$ B/frame)
  • Physical address: $o_{\max} \times f + o$

Size of page Size of frame โ†’ page offset frame offset, page number โ‰  frame number

Virtual memory์—์„œ physical memory๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๊ฐ€๊ณ  ๋‚˜๋จธ์ง€๋Š” Disk์— ์žˆ์Œ.

Virtual Address โ†’ Physical Address ๋ณ€ํ™˜

VA (31-0)
Virtual page number (bits 31-12) + Page offset (bits 11-0)

โ†’ Translation โ†’

PA
Physical page number (29-12) + Page offset (11-0)

page offset = frame offset (๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋‚˜๋‰˜๊ธฐ ๋•Œ๋ฌธ)

Physical Memory ๋ฐ Address Translation

Virtual Address Translation

A page table maps virtual pages to physical frames.

CPU๋Š” Virtual Address ($p, o$)๋ฅผ ์ƒ์„ฑ โ†’ Page Table๋กœ $p \to f$ ๋ณ€ํ™˜ โ†’ Physical Address ($f, o$)๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ.

Page Table ๊ตฌ์„ฑ

๊ฐ ํ”„๋กœ์„ธ์„œ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๊ฐ€์ง.

Flags (1bit๋กœ ์ด๋ค„์—ฌ ๋‹ค์Œ์„ ์•Œ๋ ค์คŒ): - Valid/invalid (= resident) bit: Page๊ฐ€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ (์—†์œผ๋ฉด ๋””์Šคํฌ์— ์กด์žฌ) - Dirty bit: ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€ - Reference (= clock or used) bit

Page frame number: ๋ณ€ํ™˜ ๊ฒฐ๊ณผ

PTBR (Page Table Base Register)

  • Page Table์ด ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋””์— ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • Page Table์ด ์‹œ์ž‘ํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ด
  • PTBR + p โ†’ ํ•ด๋‹น PTE(Page Table Entry) ์œ„์น˜

Page์˜ ๊ฐœ์ˆ˜: 32-bit processor, size of page = 4KB โ†’ $2^{32} / 4\text{KB} = 2^{20}$๊ฐœ

์ค‘์š” ํฌ์ธํŠธ

  • ๊ฐ ํ”„๋กœ๊ทธ๋žจ(ํ”„๋กœ์„ธ์Šค)๋งˆ๋‹ค ํ•˜๋‚˜์˜ Page Table์„ ๊ฐ–๋Š”๋‹ค
  • Page Table์€ DRAM์— ์ €์žฅ๋œ๋‹ค

Page Table ๊ตฌ์กฐ ๋ฐ ์˜ˆ์ œ

Demand Paging

CPU๊ฐ€ ํ•ด๋‹น page๋ฅผ ์ฝ์„ ๋•Œ ๋น„๋กœ์†Œ main memory์— ์˜ฌ๋ฆผ (ํ•„์š”ํ•  ๋•Œ).

์žฅ์ 

  • ๋ชจ๋“  page๋ฅผ ๋ฏธ๋ฆฌ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š์•„๋„ ๋จ โ†’ ํฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ

๋‹จ์ : External Fragmentation

Page์˜ ์—ฐ์†๋œ ์˜์—ญ์ด ํ•„์š”ํ•  ๋•Œ ์™ธ๋ถ€ ํŒŒํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ (๋‹จ paging ์ž์ฒด๋Š” fixed size๋กœ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ์— external fragmentation์€ ๊ฑฐ์˜ ์—†์ง€๋งŒ internal fragmentation์€ ๋ฐœ์ƒ).

Translation Look-aside Buffer (TLB)

Address translation์„ ์œ„ํ•ด ๋งค๋ฒˆ Page Table (in DRAM) access โ†’ Cache access โ†’ DRAM access๊ฐ€ ํ•„์š” โ†’ ๋„ˆ๋ฌด ๋А๋ฆผ.

Solution: TLB (Translation Look-aside Buffer) = page table์˜ cache.

  • Fully-associative cache
  • Recent page ๋ณ€ํ™˜์„ ์บ์‹ฑ โ†’ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ TLB hit์œผ๋กœ DRAM page table access๋ฅผ ๊ฑด๋„ˆ๋œ€
  • TLB hit: Page table access๊ฐ€ ํ•„์š” ์—†์ด ๋ฐ”๋กœ physical address ๊ณ„์‚ฐ

Demand Paging ๋ฐ TLB

A Big Picture (TLB + Cache + Memory)

์ „์ฒด ๊ฐ€์ƒ โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋ณ€ํ™˜ + ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ๋ฆ„:

  1. CPU๊ฐ€ VA ์ƒ์„ฑ
  2. TLB access โ†’ TLB Hit/Miss
  3. TLB Miss โ†’ Page Table access โ†’ PT Hit/Miss
  4. PT Miss โ†’ Page fault โ†’ Disk I/O๋กœ page ๊ฐ€์ ธ์˜ด
  5. ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ Cache access
  6. Cache miss โ†’ Main memory access

On TLB Miss

  • TLB๊ฐ€ page table entry(PTE)๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด DRAM ์ ‘๊ทผ
  • Page table entry๊ฐ€ valid bit=1 โ†’ TLB ๊ฐฑ์‹ , ์ฃผ์†Œ ๋ณ€ํ™˜ ์„ฑ๊ณต
  • Page table entry valid bit=0 โ†’ Page fault โ†’ OS์—์„œ ์ฒ˜๋ฆฌ (page fault handler)

TLB Miss Handler

Page table์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์™€์„œ TLB ๊ฐฑ์‹ .

TLB ๋ฐ TLB Miss Handler

Page Fault Handler

  • โ‘  ๋””์Šคํฌ์—์„œ ํ•ด๋‹น๋˜๋Š” page๋ฅผ ์ฐพ์Œ
  • โ‘ก Main memory์—์„œ ๋Œ€์ฒดํ•ด์•ผ ํ•  page ์„ ํƒ (LRU ์‚ฌ์šฉ)
  • ๋งŒ์•ฝ dirty bit์ด 1์ด๋ผ๋ฉด Main memory์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € Disk์— ์—…๋ฐ์ดํŠธ
  • โ‘ข Main memory๋กœ page๋ฅผ ์˜ฎ๊ฒจ์ฃผ๊ณ  page table์„ ์—…๋ฐ์ดํŠธ (PTE์˜ valid bit์„ 1๋กœ ๋งŒ๋“ฆ)
  • โ‘ฃ Process ๋‹ค์‹œ ์‹œ์ž‘

Page Size ๊ฒฐ์ •

โ‘  Page size๋ฅผ ์ž‘๊ฒŒ ํ–ˆ์„ ๋•Œ

  • ์žฅ์ : Internal fragmentation problem์ด ์ ๊ฒŒ ๋ฐœ์ƒ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ โ†‘
  • ๋‹จ์ : Page table์ด ์ปค์ง, page fault handling overhead๊ฐ€ ๋” ์ž์ฃผ ๋ฐœ์ƒ

โ‘ก Page size๋ฅผ ํฌ๊ฒŒ ํ–ˆ์„ ๋•Œ

  • ์žฅ์ : Page table์ด ์ž‘์•„์ง, page fault handling overhead๊ฐ€ ๋œ ๋ฐœ์ƒ
  • ๋‹จ์ : Internal fragmentation problem์ด ์ž์ฃผ ๋ฐœ์ƒ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ โ†“

Instruction์„ ์ฃฝ ์ฝ์–ด๋‚˜๊ฐ€๋‹ค๊ฐ€ ๊ฒฝ๊ณ„์— ๋งˆ์ฃผํ•˜๋ฉด page fault ๋ฐœ์ƒ โ†’ ๋ฐœ์ƒ๋นˆ๋„ โ†‘

Paging โ€” Protection and Sharing

โ‘  Protection

  • Page ๋‹จ์œ„๋กœ ๊ฐ€๋Šฅ (ํšจ์œจ์ ์ธ Protection)
  • ๊ฐ processor๋Š” ์ž์‹ ๋งŒ์˜ address space๋ฅผ ๊ฐ–๊ธฐ์— ๋‹ค๋ฅธ processor๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ

โ‘ก Sharing

  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ™์€ physical memory๋ฅผ accessํ•  ์ˆ˜ ์žˆ์Œ (๊ฐ™์€ frame์„ ๊ณต์œ )

โ‘ข Basic Mechanism

  • User mode: user address space๋ฅผ accessํ•˜๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง
  • Supervisor (kernel) mode: OS๊ฐ€ accessํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ (๋ชจ๋“  ๊ณณ access ๊ฐ€๋Šฅ)
  • Page๋งˆ๋‹ค ๊ถŒํ•œ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Œ (Read/Write)

โ‘ฃ System Call

  • Processor๊ฐ€ ์ˆ˜ํ–‰ ์ค‘ ๋‹ค๋ฅธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ๋•Œ OS์— ์š”์ฒญ (exception์˜ ํ•œ ์ข…๋ฅ˜)
  • User โ†’ Supervisor (I/O ์‚ฌ์šฉ ์‹œ ์š”์ฒญ)
  • ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„์ง€๋ฉด Supervisor โ†’ User (๊ณผ์ •๋ฐ˜๋ณต)

Page Fault Handler, Page Size, Protection

Virtual Memory Performance

Example

  • Memory access time: 100 ns
  • Disk access time: 25 ms (= 25,000,000 ns, page fault cost)
  • Effective access time:
  • If $p$ = probability of a page fault
  • $1 - p$: normal access (100 ns)
  • $p$: page fault (100 + 25,000,000 ns)
  • If we want only 10% degradation โ†’ $p$๊ฐ€ ๋งค์šฐ ์ž‘์•„์•ผ ํ•จ (๋ฏธ์„ธํ•œ fault ratio)

LRU Approximation โ€” Second Chance Algorithm

Clock (page replacement) + Reference bit.

  • ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค reference bit์ด ์žˆ์Œ
  • Page ์ฐธ์กฐ ์‹œ reference bit์„ 1๋กœ ์„ค์ •
  • ๊ต์ฒด๊ฐ€ ํ•„์š”ํ•  ๋•Œ: clock pointer๊ฐ€ ๋Œ๋ฉฐ, reference bit 0์ธ page๋ฅผ ์ œ๊ฑฐ, reference bit 1์ธ page๋Š” 0์œผ๋กœ ๋ฆฌ์…‹ ํ›„ ๋‹ค์Œ์œผ๋กœ ์ด๋™
  • ๊ฑฐ์˜ LRU์™€ ๋น„์Šทํ•œ ํšจ๊ณผ, ๊ตฌํ˜„์ด ๊ฐ„๋‹จ

Virtual Memory Performance ๋ฐ LRU ๊ทผ์‚ฌ

I/O Interlock

DMA (Direct Memory Access) Problem: Page๊ฐ€ ์ฐธ์กฐ๋Š” ๋˜์ง€ ์•Š์ง€๋งŒ I/O๊ฐ€ ์‚ฌ์šฉ ์ค‘์ผ ๋•Œ I/O๊ฐ€ ์ž‘์—… ์ค‘์ธ ๋ฐ์ดํ„ฐ๊ฐ€ page fault๊ฐ€ ๋‚œ ๊ฒฝ์šฐ ๋ฌธ์ œ ๋ฐœ์ƒ.

Solution: lock bit ์‚ฌ์šฉ. Second chance algorithm์ด ๋Œ๋‹ค๊ฐ€ lock bit = 1์ด๋ฉด ํ†ต๊ณผ (I/O๊ฐ€ ์‚ฌ์šฉ ์ค‘).

Segmentation with Paging

Paging์„ ํ•˜๊ธฐ ์ „์— ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ๋ผ๋ฆฌ ๋‚˜๋ˆˆ๋‹ค โ†’ Segmentation.

 Heap         โ†’   Heap
 Run-Time Stack โ†’  Run-Time Stack
 Program Data โ†’   Program Data, Libraries
 Program Text โ†’   Program Text, User Code
  • Sharing๊ณผ Protection์„ ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Œ
  • Virtual address = $(s \times p_{\max} + p) \times o_{\max} + o$
  • $s$: segment number, $p$: page number, $o$: page offset

Address Translation with Segmentation

  • STBR (Segment Table Base Register) โ€” Segment table์ด DRAM์˜ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š”์ง€ ์•Œ๋ ค์คŒ
  • Segmentation Table: Page table์ด ์žˆ๋Š” ์œ„์น˜๋ฅผ ์•Œ๋ ค์คŒ (์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”์ง€)
  • TLB๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ, s+p๋ฅผ Tag๋กœ ์‚ฌ์šฉ

I/O Interlock ๋ฐ Segmentation with Paging

์žฅ์ 

Protection, sharing์ด segment ๋‹จ์œ„๋กœ ํ•˜๋Š” ๊ฒŒ page ๋‹จ์œ„๋ณด๋‹ค ๋” ์ด๋“. Program text, shared segment ๊ฐ™์€ ๋‹จ์œ„๋กœ ๊ณต์œ  ๊ด€๋ฆฌ.

Typical Memory Hierarchy (The Big Picture)

VA = [Virtual page number (20) | Page offset (12)]
        โ†“
       TLB (Valid, Dirty, Tag, Physical page number)
        โ†“ Hit
PA = [Physical page number | Page offset]
        โ†“
  Cache (Valid, Tag, Data)
        โ†“ Hit
  Data

Shared Segment ๋ฐ Memory Hierarchy ์ „์ฒด

์ „์ฒด ํ๋ฆ„ โ€” Flowchart

Virtual address โ†’ TLB access
  โ”œโ”€ TLB hit? 
  โ”‚   โ”œโ”€ No โ†’ TLB miss exception
  โ”‚   โ””โ”€ Yes โ†’ Physical address
  โ”‚             โ†“ Write?
  โ”‚             โ”œโ”€ No โ†’ Try to read from cache
  โ”‚             โ”‚        โ”œโ”€ Cache hit โ†’ Deliver data to CPU
  โ”‚             โ”‚        โ””โ”€ Cache miss stall, read block
  โ”‚             โ””โ”€ Yes โ†’ Write access bit?
  โ”‚                      โ”œโ”€ Off โ†’ Write protection exception
  โ”‚                      โ””โ”€ On โ†’ Try to write to cache
  โ”‚                               โ”œโ”€ Cache hit โ†’ Write + update dirty bit
  โ”‚                               โ””โ”€ Cache miss stall, read block

TLB / Page Table / Cache ์กฐํ•ฉ ๊ฐ€๋Šฅ์„ฑ

TLB Page table Cache Possible?
Hit Hit Miss Possible (TLB ์žˆ์œผ๋ฉด PT ์•ˆ ํ™•์ธ)
Miss Hit Hit TLB miss, PT ์žˆ์Œ, ์บ์‹œ์— ์žˆ์Œ
Miss Hit Miss TLB miss, PT ์žˆ์Œ, ์บ์‹œ miss
Miss Miss Miss Page fault โ†’ ์žฌ์‹œ๋„ ํ›„์— ์บ์‹œ miss
Hit Miss Miss Impossible: TLB์— ์žˆ๋Š”๋ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ์€ ๋ถˆ๊ฐ€๋Šฅ
Hit Miss Hit Impossible
Miss Miss Hit Impossible: ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š”๋ฐ ์บ์‹œ์— ์žˆ๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅ
Hit Hit Hit ๊ฐ€์žฅ ์ž์ฃผ ๋ฐœ์ƒ (๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ)

Flowchart ๋ฐ ์กฐํ•ฉ ๊ฐ€๋Šฅ์„ฑ ํ‘œ

์ „์ฒด ์š”์•ฝ โ€” Virtual โ†’ Physical Access ๋‹จ๊ณ„

  • CPU โ†’ Virtual Address $(s, p, o)$
  • TLB์˜ valid bit = 1์ธ ๊ฒƒ์˜ Tag ๋น„๊ต
  • TLB Hit: Physical page number + $o$ โ†’ Cache access (Tag + Index + Offset)
  • TLB Miss: Page table ์ ‘๊ทผ ((STBR + $s$ โ†’ Segment table) + $p$ โ†’ page table)
    • PT valid bit = 1 โ†’ PT Hit, TLB๋กœ ๊ฐ’์„ ์˜ฎ๊ฒจ์ฃผ๊ณ  TLB ์žฌ์ ‘๊ทผ
    • PT valid bit = 0 โ†’ PT Miss (Page fault), LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด PT์˜ ๋Œ€์ฒด๋  ํŽ˜์ด์ง€ ์„ ํƒ (I/O ์ˆ˜ํ–‰)
    • Dirty bit = 0 โ†’ Disk๋กœ๋ถ€ํ„ฐ PT์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ฃผ๊ณ  TLB๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  TLB ์žฌ์ ‘๊ทผ
    • Dirty bit = 1 โ†’ PT โ†’ Disk ํ›„, Disk๋กœ๋ถ€ํ„ฐ PT์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ฃผ๊ณ  TLB๋กœ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ณ  TLB ์žฌ์ ‘๊ทผ

Cache access: Index๋กœ ์ฐพ์•„๊ฐ€ valid bit = 1์ธ ๊ฒƒ์˜ Tag ๋น„๊ต

  • Hit: Data ์‚ฌ์šฉ
  • Miss: Main memory๋กœ๋ถ€ํ„ฐ Data๋ฅผ ์˜ฎ๊ฒจ์คŒ โ†’ Cache ๋‹ค์‹œ Access (dirty bit / LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉ)

์ „์ฒด VM โ†’ PA ํ๋ฆ„

์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์ œ โ€” Context Switching

  • P0๊ฐ€ CPU ์‚ฌ์šฉ ์‹œ Timer๋ฅผ ๋งž์ถค (์˜ˆ: 10 ms)
  • TLB Miss์‹œ exception ๋ฐœ์ƒ
  • Fault๋‚˜๋ฉด I/O Controller๊ฐ€ ๊ฐ€์ ธ์˜ฌ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๋„˜๊น€ (P1)
  • Context Switching (valid = 0์œผ๋กœ ๋‹ค ์„ค์ •): TLB Miss๊ฐ€ ๋‚˜์ง€๋งŒ DRAM์— ์žˆ๊ธฐ์— ๊ณ„์† ์‚ฌ์šฉ
  • I/O Controller๊ฐ€ ์‹œํ‚จ ์ผ์„ ๋‹ค ํ•ด์„œ (exception ๋ฐœ์ƒ)
  • P1์˜ ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋‚ฎ์•„์ง€๊ฒŒ ๊ณ„์† ์‚ฌ์šฉ, ํ›„ P1์˜ ์‚ฌ์šฉ์‹œ๊ฐ„์„ ๋‹ค ์‚ฌ์šฉ (Timer๊ฐ€ ์šธ๋ฆผ) โ†’ P0๊ฐ€ ์‚ฌ์šฉ Context Switching์ด ์ผ์–ด๋‚จ
  • Disk์—์„œ ์˜ฎ๊ฒจ๊ฐ”๊ธฐ์— DRAM์—์„œ ์˜ฎ๊ฒจ์„œ ์‚ฌ์šฉ

Context Switching ์‹œ๋‚˜๋ฆฌ์˜ค

์ •๋ฆฌ

  • Virtual memory extends the physical memory illusion, enables multi-programming, provides protection/sharing
  • Paging splits memory into fixed-size pages / frames
  • Page table maps virtual pages to physical frames (stored in DRAM, indexed by PTBR)
  • TLB caches page table entries to avoid DRAM access on every memory reference
  • Page fault handler swaps pages between disk and memory (LRU with clock reference bit)
  • Segmentation with paging gives coarse-grained sharing/protection on top of paging
  • Overall memory access: TLB โ†’ Cache โ†’ Main Memory โ†’ Disk

๋น„์Šทํ•œ ๊ธ€ ์ถ”์ฒœ

Comments (0)

No comments yet. Be the first to comment!