๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OS

9์žฅ Virtual Memory

 

reference: kocw์˜ ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜์™€ ๊ถŒ์ง„์šฑ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜(๋Œ€ํ•™ ์ •๊ทœ ์ˆ˜์—…)
์ˆ˜์—…์„ ๋“ฃ๊ณ ๋‚˜์„œ ๊ฐ•์˜ ๊ต์žฌ๋ฅผ ํƒ€์ดํ•‘ํ•˜๊ณ  ํ•„๊ธฐํ•œ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์›น๋ทฐ์—์„œ toc๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
github์˜ md ํŒŒ์ผ๋กœ ๋ณด๋Š” ๊ฒŒ ํŽธํ•˜์‹œ๋‹ค๋ฉด, ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


1 Demand Paging

์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ page๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ

๊ทธ๋ฆผ์—์„œ ์ œ์ผ ์˜ค๋ฅธ์ชฝ์˜ ์›ํ†ตํ˜•์€ backing store๋กœ HDD๋‚˜ SDD๊ฐ€ ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์€ ๊ทนํžˆ ์ ๋‹ค. ํ•˜์ง€๋งŒ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด ์žฌ์‚ฌ์šฉ ๋  ํ™•๋ฅ (hit ratio)๊ฐ€ 90% ์ด์ƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์š”ํ•  ๋•Œ๋งŒ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ํšจ์œจ์ ์ด๋‹ค.

ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•„์š”ํ•  ๋•Œ๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์‘๋‹ต์ด ๋น ๋ฅด๋‹ค

  • I/O ์–‘์˜ ๊ฐ์†Œ
  • Memory ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
  • ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„
  • ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ˆ˜์šฉ

Valid / Invalid bit์˜ ์‚ฌ์šฉ

  • Invalid์˜ ์˜๋ฏธ
    1. ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฃผ์†Œ ์˜์—ญ์ธ ๊ฒฝ์šฐ
    2. ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ(physical memomy)์— ์—†๋Š”(์˜ฌ๋ผ์˜ค์ง€ ์•Š์€) ๊ฒฝ์šฐ
    3. ์š”์ฒญํ•œ ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ → page fault
  • ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  page entry๊ฐ€ invalid๋กœ ์ดˆ๊ธฐํ™”
  • address translation ์‹œ์— invalid bit์ด set๋˜์–ด ์žˆ์œผ๋ฉด → Page Fault
  • (physical memory์— ๋กœ๋”ฉ์ด ์•ˆ ๋˜์–ด ์žˆ๋„ค? ๋นจ๋ฆฌ backing store์—์„œ ๊ฐ€์ ธ์™€! ๋ผ๊ณ  ์„ ์–ธํ•˜๋Š” ๊ฒƒ)

2 Page Fault

(โ‘  ์™€ ๊ฐ™์€ ํ‘œ์‹œ๋Š” ๊ทธ๋ฆผ์—์„œ์˜ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค)

CPU๊ฐ€ 3๋ฒˆ ํŽ˜์ด์ง€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์‹œ๋„ํ•ด์„œ

โ‘  invalid page๋ฅผ ์ ‘๊ทผํ•˜๋ฉด MMU(memory manage unit - HW)๊ฐ€ โ‘ก trap(interrupt)์„ ๋ฐœ์ƒ์‹œํ‚ด (page fault trap)

kernel mode(OS๊ฐ€ cpu๋ฅผ ์žก๊ณ  ์žˆ๋Š” ๋ชจ๋“œ)๋กœ ๋“ค์–ด๊ฐ€์„œ page fault handler๊ฐ€ invoke๋จ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ page fault handler๊ฐ€ page fault๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  1. Invalid Reference๋ƒ? (eg. bad address, protection violation) → abort(์ค‘๋‹จ) process
  2. Get an empty page frame (free frame์ด ์—†์œผ๋ฉด ๋บ์–ด์˜จ๋‹ค: replace ์•Œ๊ณ ๋ฆฌ์ฆ˜)
  3. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ disk์—์„œ memory๋กœ ์ฝ์–ด์˜จ๋‹ค.
    1. disk I/O๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ preempt ๋‹นํ•จ(Blocked)
    2. โ‘ข, โ‘ฃ Disk read๊ฐ€ ๋๋‚˜๋ฉด โ‘ค page tables entry ๊ธฐ๋ก, valid/invalid bit = "valid"
    3. ready queue์— Process (Ready) ๋ฅผ insert → dispatch later
  4. ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์žก๊ณ  ๋‹ค์‹œ Running
  5. โ‘ฅ ์•„๊นŒ ์ค‘๋‹จ๋˜์—ˆ๋˜ instruction์„ ์žฌ๊ฐœ

3 Performance of Demand Paging

Page Fault Rate (page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋น„์œจ) 0 ~ 1.0

if p = 0: no page faults

if p = 1: every reference is a fault

Effective Access Time = (1-p) * memory access

โ€‹ + p(OS & HW page fault overhead + [ swap page out if needed ๋‹ค ์ฐจ ์žˆ์œผ๋ฉด]+ swap page in + OS & HW restart overhead)

4 Page Replacement Algorithm

Page Replacement

Free Frame์ด ์—†๋Š” ๊ฒฝ์šฐ

  • ์–ด๋–ค frame์„ ๋นผ์•—์•„์˜ฌ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ
  • ๊ณง๋ฐ”๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ page๋ฅผ ์ซ“์•„๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ๋™์ผํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ซ“๊ฒจ๋‚ฌ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ์Œ

Page Replacement Algorithm

  • Page - fault rate์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‰๊ฐ€
    • ์ฃผ์–ด์ง„ page reference string์— ๋Œ€ํ•ด์„œ page fault๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‚ด๋Š”์ง€ ์กฐ์‚ฌ

Optimal Algorithm

  • MIN (OPT) : ๊ฐ€์žฅ ๋จผ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋˜๋Š” page๋ฅผ replace
  • ๋ฏธ๋ž˜์˜ ์ฐธ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์•„๋Š”๊ฐ€?
    • Offline algorithm (=์‹ค์ œ๋กœ online์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฏธ๋ž˜์— ์–ด๋–ค ๊ฒƒ์ด ์‚ฌ์šฉ๋ ์ง€ ์•Œ๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์—)
  • ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ upper bound ์ œ๊ณต
    • Belady's Optimal Algorithm, MIN, OPT ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ

FIFO (First In First Out) Algorithm

FIFO : ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์„ ๋จผ์ € ๋‚ด์ซ“์Œ

FIFO Anomaly (Belady's Anomaly) : more frames → not less page faults, more page faults

์—ญํšจ๊ณผ๊ฐ€ ๋‚จ. ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์•„๋‹Œ ๊ฒŒ ํŒ๋ช…๋จ.

* Anomaly: ๋ณ€์น™์ด๋ž€ ๋œป

LRU (Least Recently Used) Algorithm

LRU : ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐ๋œ ๊ฒƒ์„ ์ง€์›€

๊ทธ๋ฆผ ์„ค๋ช…

1๋ฒˆ page fault๊ฐ€ ๋‚˜์„œ loading (swap in)

2๋ฒˆ, 3๋ฒˆ 4๋ฒˆ๋„ page fault๊ฐ€ ๋‚˜์„œ loading

1๋ฒˆ, 2๋ฒˆ ์žˆ๋Š” ๊ฒƒ ์ฐธ์กฐ

5๋ฒˆ page๋ฅผ ์ฐธ์กฐํ•ด์•ผํ•˜๋Š”๋ฐ ์—†์Œ. ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์นœ๊ตฌ์ธ 3๋ฒˆ์„ ์ง€์šฐ๊ณ (swap out) 5๋ฒˆ์„ ๊ฐ€์ ธ๋‹ค๋†“์Œ.

1๋ฒˆ, 2๋ฒˆ ์žˆ๋Š” ๊ฒƒ ์ฐธ์กฐ

3๋ฒˆ page๊ฐ€ ์—†๊ณ , ๊ฐ€์žฅ ์ฐธ์กฐ๊ฐ€ ์ ๊ฒŒ๋œ 4๋ฒˆ๊ณผ ๊ต์ฒด

์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ 8๋ฒˆ์˜ page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์•ž์„  FIFO ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

LFU (Least Frequently Used) Algorithm

LFU : ์ฐธ์กฐ ํšŸ์ˆ˜ (reference count)๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ์ง€์›€

  • ์ตœ์ € ์ฐธ์กฐ ํšŸ์ˆ˜์ธ page๊ฐ€ ์—ฌ๋Ÿฟ ์žˆ๋Š” ๊ฒฝ์šฐ
    • LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด์—์„œ๋Š” ์—ฌ๋Ÿฌ Page ์ค‘ ์ž„์˜๋กœ ์„ ์ •ํ•œ๋‹ค.
    • ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๊ฐ€์žฅ ์˜ค๋ž˜ ์ „์— ์ฐธ์กฐ๋œ page๋ฅผ ์ง€์šฐ๊ฒŒ ๊ตฌํ˜„ํ• ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์žฅ๋‹จ์ 
    • LRU์ฒ˜๋Ÿผ ์ง์ „ ์ฐธ์กฐ ์‹œ์ ๋งŒ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์žฅ๊ธฐ์ ์ธ ์‹œ๊ฐ„ ๊ทœ๋ชจ๋ฅผ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— page์˜ ์ธ๊ธฐ๋„๋ฅผ ์ข€ ๋” ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Œ
    • ์ฐธ์กฐ ์‹œ์ ์˜ ์ตœ๊ทผ์„ฑ์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•จ
    • LRU๋ณด๋‹ค ๊ตฌํ˜„์ด ๋ณต์žกํ•จ

LRU์™€ LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

* LRU (์ฐธ์กฐ๊ฐ€ ์˜ค๋ž˜์ „) MRU (์ฐธ์กฐ๊ฐ€ ์ตœ๊ทผ)

LRU๋Š” linked list๋กœ ๊ตฌํ˜„๋˜์—ˆ์„ ์‹œ, O(1)

LFU๋Š” count ๊ฐ’์— ๋”ฐ๋ผ์„œ ์ •๋ ฌ์„ ๋‹ค์‹œ ํ•ด์•ผํ•จ

์ƒˆ๋กญ๊ฒŒ ์‚ฝ์ž…๋˜๋Š” ์นœ๊ตฌ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•จ O(n) ์ด๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค๊ณ , ์กฐ๊ธˆ ๋” ๋ฐœ์ „๋˜์–ด์„œ

ํž™ ๊ตฌ์กฐ๋กœ O(log n)๊นŒ์ง€ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

5 ๋‹ค์–‘ํ•œ caching ํ™˜๊ฒฝ

caching ๊ธฐ๋ฒ•

  • paging system์ฒ˜๋Ÿผ ํ•œ์ •๋œ ๋น ๋ฅธ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ๊ณ„์†์ ์œผ๋กœ ์š”์ฒญ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ €์žฅ ๊ณต๊ฐ„์— ์ฝ์–ด๋“ค์˜€๋‹ค๊ฐ€ ํ›„์† ์š”์ฒญ์‹œ cache(์ €์žฅ ๊ณต๊ฐ„)๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์„œ๋น„์Šคํ•˜๋Š” ๋ฐฉ์‹
  • Paging System ์™ธ์—๋„ cache memory, buffer caching, Web caching ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ

์บ์‰ฌ ์šด์˜์˜ ์‹œ๊ฐ„ ์ œ์•ฝ

  • ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜(swap in/out)์—์„œ ์‚ญ์ œํ•  ํ•ญ๋ชฉ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ผ์— ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
  • Buffer caching์ด๋‚˜ Web caching์˜ ๊ฒฝ์šฐ: O(1)์—์„œ O(log n) ์ •๋„๊นŒ์ง€ ํ—ˆ์šฉ
  • Paging System์ธ ๊ฒฝ์šฐ
    • Page Fault์ธ ๊ฒฝ์šฐ์—๋งŒ OS๊ฐ€ ๊ด€์—ฌํ•จ
    • ํŽ˜์ด์ง€๊ฐ€ ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ฐธ์กฐ์‹œ๊ฐ ๋“ฑ์˜ ์ •๋ณด๋ฅผ OS๊ฐ€ ์•Œ ์ˆ˜ ์—†์Œ
    • ํŽ˜์ด์ง€ ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋นˆ๋ฒˆํ•˜์—ฌ O(1)์ธ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ list ์กฐ์ž‘๋„ ๋ถ€๋‹ด

6 Clock Algorithm

  • LRU์˜ ๊ทผ์‚ฌ(approximation) ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์‹ค์ œ ํŽ˜์ด์ง•์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์—ฌ๋Ÿฌ ๋ช…์นญ์œผ๋กœ ๋ถˆ๋ฆผ : second change algorithm, NUR (Not Used Recently), NRU (Not Recently Used)
  • Reference bit์„ ์‚ฌ์šฉํ•ด์„œ ๊ต์ฒด ๋Œ€์ƒ ํŽ˜์ด์ง€ ์„ ์ • (Circular list)

clock algorithm

  • Reference bit๊ฐ€ 0์ธ ๊ฒƒ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํฌ์ธํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์•ž์œผ๋กœ ์ด๋™
  • ํฌ์ธํ„ฐ ์ด๋™ํ•˜๋Š” ์ค‘์— Reference bit 1์€ ๋ชจ๋‘ 0์œผ๋กœ ๋ฐ”๊ฟˆ (์•„์ง swap out์€ ์•ˆํ•จ)
  • Reference bit์ด 0์ธ ๊ฒƒ์„ ์ฐพ์œผ๋ฉด ๊ทธ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด (swap out, ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ swap in)
  • ํ•œ ๋ฐ”ํ€ด ๋˜๋Œ์•„์™€์„œ๋„(=second chance) 0์ด๋ฉด ๊ทธ๋•Œ๋Š” replace ๋‹นํ•จ
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š”(MMU๋ฅผ ํ†ตํ•ด์„œ ์ž์ฃผ ์ ‘๊ทผ๋˜๋Š”) ํŽ˜์ด์ง€๋ผ๋ฉด second change๊ฐ€ ์˜ฌ ๋•Œ 1์ด ์œ ์ง€๋จ (MMU๊ฐ€ 0์—์„œ 1๋กœ ๋ฐ”๊พธ๊ธฐ์—)

Clock algorithm์˜ ๊ฐœ์„ 

  • reference bit์™€ modified bit (dirty bit)์„ ํ•จ๊ป˜ ์‚ฌ์šฉ (๋ถ€๋‹ด ๋ณ„๋กœ X)
  • reference bit=1 : ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€
  • modified bit=1 : ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€ (I/O๋ฅผ ๋™๋ฐ˜ํ•˜๋Š” ํŽ˜์ด์ง€) → 0์ด๋ฉด ๋ฐฑ์—… ๊ณผ์ • ์ƒ๋žต

7 Page Frame์˜ Allocation

Allocation problem : ๊ฐ process์— ์–ผ๋งˆ๋งŒํผ์˜ page frame์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€ ?

Allocation์˜ ํ•„์š”์„ฑ

  • ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช…๋ น์–ด ์ˆ˜ํ–‰์‹œ ๋ช…๋ น์–ด, ๋ฐ์ดํ„ฐ ๋“ฑ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ๋™์‹œ ์ฐธ์กฐ
    • ๋ช…๋ ์–ด ์ˆ˜ํ–‰์„ ์œ„ํ•ด ์ตœ์†Œํ•œ ํ• ๋‹น๋˜์–ด์•ผ ํ•˜๋Š” frame์˜ ์ˆ˜๊ฐ€ ์žˆ์Œ
  • Loop๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” page๋“ค์€ ํ•œ๊บผ๋ฒˆ์— allocate ๋˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•จ
    • ์ตœ์†Œํ•œ์˜ allocation์ด ์—†์œผ๋ฉด ๋งค loop ๋งˆ๋‹ค page fault

Allocation Scheme

  • Equal Allocation: ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋˜‘๊ฐ™์€ ๊ฐœ์ˆ˜ ํ• ๋‹น
  • Proportional Allocation: ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ํ• ๋‹น
  • Priority Allocation: ํ”„๋กœ์„ธ์Šค์˜ priority์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ• ๋‹น

8 Global vs Local Replacement

Global Replacement

ํฌ์ธํŠธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ „์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค!

  • Replace ์‹œ ๋‹ค๋ฅธ Process์— ํ• ๋‹น๋œ frame์„ ๋นผ์•—์•„ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • Process๋ณ„ ํ• ๋‹น๋Ÿ‰์„ ์กฐ์ ˆํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ž„
  • FIFO, LRU, LFU ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ Global Replacement๋กœ ์‚ฌ์šฉ์‹œ์— ํ•ด๋‹น
  • Working Set, PFF ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ

Local Replacement

  • ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame๋‚ด์—์„œ๋งŒ replacement
  • FIFO, LRU, LFU ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ Process ๋ณ„๋กœ ์šด์˜์‹œ

9 Thrashing

  • Thrashing์˜ ์‚ฌ์ „์  ์˜๋ฏธ: ๋’น๊ตด๋‹ค, ๊ตด๋ฆฌ๋‹ค
  • ํ”„๋กœ์„ธ์Šค์˜ ์›ํ™œํ•œ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ page frame ์ˆ˜๋ฅผ ํ• ๋‹น ๋ฐ›์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒ

degree of multiprogramming: ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜ / CPU utilization:์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๊ฐ€

์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก cpu ์ด์šฉ๋ฅ ์ด ๋†’์•„์ง„๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์–ด๋Š ์ˆœ๊ฐ„๋ถ€ํ„ฐ ํ”„๋ ˆ์ž„์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋˜๋ฉด ๊ณ„์† Page fault๊ฐ€ ๋‚˜์„œ ๊ณ„์† backing store์— ์ ‘๊ทผ์„ ํ•ด์•ผํ•˜๋Š” I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์–ด๋Š ์ˆœ๊ฐ„ cpu๋Š” ์ผํ•˜๋Š” ์‹œ๊ฐ„์ด ์ ์–ด์ ธ ์ด์šฉ๋ฅ ์ด ๋š ๋–จ์–ด์ง„๋‹ค. ์ด๊ฒƒ์„ Thrashing์ด๋ผ๊ณ  ํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด cpu๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•  ์‹œ๊ฐ„์— ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” I/O ์ž‘์—… ๋•Œ๋ฌธ์— ์ผ์ • ์‹œ๊ฐ„ ๋ชป์“ฐ๊ฒŒ ๋˜๋Š” ํ˜„์ƒ์ด๋‹ค.

  1. Page Fault Rate์ด ๋งค์šฐ ๋†’์•„์ง€๊ณ  CPU Utilization์ด ๋‚ฎ์•„์ง
  2. OS๋Š” MPD(Multiprogramming degree)๋ฅผ ๋†’์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ํŒ๋‹จ
  3. ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€๋จ (Higher MPD)
  4. ํ”„๋กœ์„ธ์Šค ๋‹น ํ• ๋‹น๋œ frame์˜ ์ˆ˜๊ฐ€ ๋”์šฑ ๊ฐ์†Œ - ์•…์ˆœํ™˜

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค๋Š” page์˜ swap in / swap out์œผ๋กœ ๋งค์šฐ ๋ฐ”์จ

๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์— CPU๋Š” ํ•œ๊ฐ€ํ•จ

๊ฒฐ๋ก ์ ์œผ๋กœ, low Throughput

10 Working Set Model

Locality of Reference

  • ํ”„๋กœ์„ธ์Šค๋Š” ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ผ์ • ์žฅ์†Œ๋งŒ์„ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•œ๋‹ค.
  • ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ๋˜๋Š” ํ•ด๋‹น page๋“ค์˜ ์ง‘ํ•ฉ์„ locality set์ด๋ผ ํ•œ๋‹ค.

Working Set Model

  • Locality์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•œ๊บผ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ํ•˜๋Š” page๋“ค์˜ ์ง‘ํ•ฉ์„ working set์ด๋ผ ์ •์˜ํ•จ
  • Working Set ๋ชจ๋ธ์—์„œ๋Š” Process์˜ Working set ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ชจ๋“  frame์„ ๋ฐ˜๋‚ฉํ•œ ํ›„ swap out (suspend)
  • Thrashing์„ ๋ฐฉ์ง€ํ•จ
    • ์™œ? page fault๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
  • Multiprogramming degree๋ฅผ ๊ฒฐ์ •ํ•จ
    • ์–ด๋–ป๊ฒŒ? ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค๊ฐ€ ์žˆ์œผ๋ฉด Multiprogramming degree (ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜)๋ฅผ ๋‚ฎ์ถ”๊ฒŒ ๋จ.

Working Set Algorithm

๊ทธ๋ฆผ: ํ•œ๋งˆ๋””๋กœ working set์ธ 1,2,5,6,7์„ ํ•œ ๊ทธ๋ฃน์œผ๋กœ, 3.4๋ฅผ ํ•œ ๊ทธ๋ฃน์œผ๋กœ paging (swap in/out) ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Working Set์˜ ๊ฒฐ์ •

  • Working Set Window๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ƒ„
    • window๋Š” ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ์•ผ, ์‹œ๊ฐ ์˜ ๋œป
  • Window Size๊ฐ€ โˆ†์ธ ๊ฒฝ์šฐ
    • ์‹œ๊ฐ t์—์„œ์˜ working set WS(t)
      • Time Interval [t-โˆ†, t]์‚ฌ์ด์— ์ฐธ์กฐ๋œ ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ
    • Working Set์— ์†ํ•œ page๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€, ์†ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋ฒ„๋ฆผ
    • (์ฆ‰, ์ฐธ์กฐ๋จ ํ›„ โˆ†์‹œ๊ฐ„ ๋™์•ˆ ํ•ด๋‹น page๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•œ ํ›„ ๋ฒ„๋ฆผ)

Working-Set Algorithm

  1. Process๋“ค์˜ working set size์˜ ํ•ฉ์ด page frame์˜ ์ˆ˜๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ
    • ์ผ๋ถ€ process๋ฅผ swap out ์‹œ์ผœ ๋‚จ์€ process์˜ working set์„ ์šฐ์„ ์ ์œผ๋กœ ์ถฉ์กฑ์‹œ์ผœ ์ค€๋‹ค (MPD๋ฅผ ์ค„์ž„)
    • ์‰ฝ๊ฒŒ ๋งํ•ด MPD์„ ์ค„์—ฌ ํ•˜๋‚˜๋ผ๋„ ๋Œ๋ ค์•ผ์ง€~
  2. Working set์„ ๋‹ค ํ• ๋‹นํ•˜๊ณ ๋„ page frame์ด ๋‚จ๋Š” ๊ฒฝ์šฐ
    • Swap out ๋˜์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ working set์„ ํ• ๋‹น (MPD๋ฅผ ํ‚ค์›€)
    • multi programming degree๋ฅผ ํ‚ค์›Œ ๋” ๋งŽ์€ working set์ด ๋“ค์–ด์˜ค๋„๋ก ํ•ด์ค€๋‹ค๊ณ ~

Window size

(๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค !)

  • Working set์„ ์ œ๋Œ€๋กœ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” window size๋ฅผ ์ž˜ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • โˆ† ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด locality set์„ ๋ชจ๋‘ ์ˆ˜์šฉํ•˜์ง€ ๋ชปํ•  ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค.
  • โˆ† ๊ฐ’์ด ํฌ๋ฉด ์—ฌ๋Ÿฌ ๊ทœ๋ชจ์˜ locality set ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โˆ† ๊ฐ’์ด ∞์ด๋ฉด ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” page๋ฅผ working set์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

11 PFF (Page Fault Frequency) Scheme

Page Fault์˜ ๋นˆ๋„๋ฅผ ๋ณด๊ณ  frame ํ• ๋‹น ๋ถ€๋ถ„์„ ์กฐ์ ˆํ•˜์ž!

*# of frames: application์— ํ• ๋‹นํ•œ frame์˜ ์ˆ˜

frame ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด, ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๋‹ค๋ฉด page-fault๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒ (A๋ผ๋Š” ์–ดํ”Œ์— ํ• ๋‹น๋œ frame ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ž‘๋‹ค!)

Page Fault Rate์˜ ์ƒํ•œ๊ฐ’๊ณผ ํ•˜ํ•œ๊ฐ’์„ ๋‘”๋‹ค.

  • Page Fault Rate์ด ์ƒํ•œ๊ฐ’์„ ๋„˜์œผ๋ฉด frame์„ ๋” ํ• ๋‹นํ•œ๋‹ค.
  • Page Fault Rate์ด ํ•˜ํ•œ๊ฐ’ ์ดํ•˜์ด๋ฉด ํ• ๋‹น frame ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.

๋นˆ frame์ด ์—†์œผ๋ฉด ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ swap out

12 Page Size์˜ ๊ฒฐ์ •

page๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 4K

Page Size๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋ฉด (= ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž˜๊ฒŒ ์ž๋ฆ„)

  • ํŽ˜์ด์ง€ ์ˆ˜ ์ฆ๊ฐ€
  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ ์ฆ๊ฐ€ (cpu๋Š” page table์„ ํ†ตํ•ด page์— ์ ‘๊ทผ)
  • Internal Fragmentation ๊ฐ์†Œ (๋‚จ๋Š” ์นœ๊ตฌ๋“ค)
  • Disk Transfer์˜ ํšจ์œจ์„ฑ ๊ฐ์†Œ
    • Seek/Rotation (์—ฌ๋Ÿฌ๋ฒˆ ์ฐพ๊ธฐ์— ์ฆ๊ฐ€) vs Transfer (์ „์†ก ์‹œ๊ฐ„์€ ๊ฐ์†Œ)
    • ์ผ๋ฐ˜์ ์œผ๋กœ Seek/Rotation ์ด ํ›จ์”ฌ ๊ธธ๊ธฐ์— ํšจ์œจ์„ฑ ๊ฐ์†Œ
  • ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ์ด ํšจ์œจ์ 
    • Locality์˜ ํ™œ์šฉ ์ธก๋ฉด์—์„œ๋Š” ์ข‹์ง€ ์•Š์Œ

Trend : Larger Page Size

ํ•˜์ง€๋งŒ ํŠธ๋ ŒํŠธ๋Š” ํŠธ๋ Œ๋“œ์ผ ๋ฟ, ์žฅ๋‹จ์ ์„ ํŒŒ์•…ํ•˜๊ณ  ์žˆ๊ณ , ์ฃผ์–ด์ง„ ์ƒํ™ฉ์— ์•Œ๋งž๋Š” page size๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

'OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

12์žฅ Disk Management And Scheduling  (0) 2021.06.19
11์žฅ File Systems Implementation  (0) 2021.06.19
10์žฅ File Systems  (0) 2021.06.19
8์žฅ Memory Management  (0) 2021.06.19
7์žฅ Deadlock  (0) 2021.06.19
6์žฅ Process Synchronization  (0) 2021.06.19