๐Ÿ“Œ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ

5 minute read

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ (Virtual Memory)

Demanding Page: ์š”์ฒญ์ด ์žˆ์œผ๋ฉด ๊ทธ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ

  • ์‹ค์ œ๋กœ ํ•„์š”ํ•  ๋•Œ Page๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋‘๋Š” ๊ฒƒ
    • I/O ์–‘์˜ ๊ฐ์†Œ
    • Memory ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
    • ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„
    • ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ˆ˜์šฉ
  • Valid / InValid bit์˜ ์‚ฌ์šฉ
    • Invalid์˜ ์˜๋ฏธ
      • ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฃผ์†Œ ์˜์—ญ์ธ ๊ฒฝ์šฐ
      • ํŽ˜์ด์ง€๊ฐ€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ
    • ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  Page Entry๊ฐ€ invalid์— ์ดˆ๊ธฐํ™”
    • address tranlation ์‹œ์— invalid bit์ด set๋˜์–ด ์žˆ์œผ๋ฉด โ†’ โ€œpage faultโ€ (์š”์ฒญํ•œ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ป๋Š” ๊ฒฝ์šฐ)
  • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์œผ๋ฉด valid ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด invalid
  • ํ”„๋กœ๊ทธ๋žจ์˜ logical memory(์ฃผ์†Œ๊ณต๊ฐ„)์—์„œ ํ•ด๋‹น ์ฃผ์†Œ๋“ค์„ ์ œ๊ณตํ•ด์คŒ ๋”ฐ๋ผ์„œ page table์—์„œ๋Š” ํ•ด๋‹น ์ฃผ์†Œ ๊ณต๊ฐ„ ๋งŒํผ์˜ entry๊ฐ€ ๋งŒ๋“ค์–ด์ง. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด, valid/invalid ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„

Page Fault

  • invalid page๋ฅผ ์ ‘๊ทผํ•˜๋ฉด MMU(์ฃผ์†Œ ๋ณ€ํ™˜์„ ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด)๊ฐ€ trap์„ ๋ฐœ์ƒ์‹œํ‚ด. (Page fault trap)
  • kernel mode๋กœ ๋“ค์–ด๊ฐ€์„œ page fault handler๊ฐ€ invoke(์‹คํ–‰)๊ฐ€ ๋จ.
  • ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ page fault๋ฅผ ์ฒ˜๋ฆฌํ•จ.
    1. Invalid Reference? (eg. bad address, protection violation) โ†’ abort process (์ด์ƒํ•œ๊ฑด๋ฉด ๊ฐ•์ œ๋กœ abort, ์ค‘๋‹จ ์‹œํ‚ด)
    2. Get on entry page frame (์—†์œผ๋ฉด ๋บ์–ด์˜จ๋‹ค: replace / ํŽ˜์ด์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋บ์–ด์™€์•ผํ•จ)
    3. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ disk์—์„œ memory๋กœ ์ฝ์–ด์˜จ๋‹ค.
      1. disk I/O๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ์ด ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ preempt ๋‹นํ•จ.(block)
      2. Disk read๊ฐ€ ๋๋‚˜๋ฉด, page tables entry ๊ธฐ๋ก, valid/invalid bit = โ€œvalidโ€
      3. Ready queue์— process๋ฅผ insert โ†’ dispatch later
    4. ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์žก๊ณ  ๋‹ค์‹œ running
    5. ์•„๊นŒ ์ค‘๋‹จ๋˜์—ˆ๋˜ instruction์„ ์žฌ๊ฐœ
  • ์—ฌ๊ธฐ์„œ page Fault๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š”๊ฐ€? ์— ๋”ฐ๋ผ์„œ ์†๋„ ์ธก๋ฉด์—์„œ ๋‹ฌ๋ผ์ง

page fault performance (๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ฃผ์†Œ๋ณ€ํ™˜์ด ๋˜์ง€ ์•Š์Œ (๊ฑฐ์˜ ์•ˆ๋‚จ))

  • Page Fault Rate 0 <= p <= 1, (์ตœ๋Œ€ํ•œ ๋‚ฎ์•„์ง€๊ฒŒ ํ•ด์•ผํ•จ)
    • if p = 0, no page faults
    • if p = 1, every reference is a fault
  • Effective access Time = (1-p) + p
    • 1-p is x memory access (๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„)
    • p (OS & HW page fault overhead + [Swap page out if needed] + Swap page in + OS & HW restart overhead)

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

  • Page replacement
    • ์–ด๋–ค frame์„ ๋บ์–ด์˜ฌ์ง€ ๊ฒฐ์ •ํ•ด์•ผํ•จ.
    • ๊ณง๋ฐ”๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ page๋ฅผ ์ซ“์•„๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Œ
    • ๋™์ผํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ซ“๊ฒจ๋‚ฌ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ์Œ
  • Replacement Algorithm
    • page fault rate๋Š” ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ‰๊ฐ€
      • ์ฃผ์–ด์ง„ page reference string์— ๋Œ€ํ•ด page fault๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‚ด๋Š”์ง€ ์กฐ์‚ฌ
      • Reference String์˜ ์˜ˆ
        • 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Optimal Algorithm (Page Fault๋ฅผ ๊ฐ€์žฅ ์ ๊ฒŒ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, Reference String์„ ๋ฏธ๋ฆฌ ์•Œ๊ณ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •, ๋น„ํ˜„์‹ค์ )

  • MIN(OPT): ๊ฐ€์žฅ ๋จผ ๋ฏธ๋ž˜์— ์ฐธ์กฐ๋˜๋Š” page๋ฅผ replace
  • 4 frame example
  • ๋ฏธ๋ž˜์˜ ์ฐธ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์•„๋Š”๊ฐ€?
    • Offline Algorithm
  • ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ upper bound(์ œ์ผ ์ข‹๊ธฐ ๋•Œ๋ฌธ์—) ์ œ๊ณต
    • Beladyโ€™s optimal Algorithm, MIN, OPT ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆผ

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

  • FIFO Anomaly (Beladyโ€™s Anomaly)
    • more frame โ†’ less page fault ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค์ž„ (ํŽ˜์ด์ง€๋ฅผ ๋Š˜๋ ค์คฌ๋Š”๋ฐ page fault๊ฐ€ ์˜คํžˆ๋ ค ๋Š˜์–ด๋‚˜๋Š” ํ˜„์ƒ)

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

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

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

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

  • LRU: ์‚ฌ์šฉ์„ ํ•œ์ค„๋กœ ์ค„์„ธ์šฐ๊ธฐ ํ•จ. ์—…๋ฐ์ดํŠธ๋Š” ๋งจ ์•ž์œผ๋กœ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋˜๊ณ , ์‚ญ์ œ๋Š” ๊ฐ€์žฅ ๋งจ ์œ„์— ์žˆ๋Š” ์‚ญ์ œํ•˜๋ฉด ๋จ. ์ด ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋น…์˜คO(1)์ด ๋จ. Linked Lisk๋กœ ๊ตฌํ˜„
  • LFU: ์–˜๋„ ํ•œ์ค„๋กœ ์ค„์„ธ์šฐ๊ธฐ๋ฅผ ํ•˜๋ฉด ์•ˆ๋จ, LFU๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ๋•Œ ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์–ด๋””๊นŒ์ง€ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด์•ผํ•จ. ๊ทธ๋ž˜์„œ ๊ตฌํ˜„์ด ๋ณต์žก. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ž„. ๊ทธ๋ž˜์„œ heap(Tree)๋กœ ๊ตฌํ˜„ํ•จ. O(log n)

ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์˜ฌ๋ผ๊ฐ (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐœ๋…) ํ•„์š”๊ฐ€ ์—†๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ Backing Storage์— ๋นผ๋†“์Œ. Page fault๋Š” ์šด์˜์ฒด์ œ๋กœ ์‹คํ–‰์ด ๋„˜์–ด๊ฐ.

๋‹ค์–‘ํ•œ ์บ์‰ฌ๊ธฐ๋ฒ•

  • ์บ์Ё๊ธฐ๋ฒ•
    • ํ•œ์ •๋œ ๋น ๋ฅธ ๊ณต๊ฐ„(=์บ์‰ฌ)์— ์š”์ฒญ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ํ›„์†์š”์ฒญ์‹œ ์บ์‰ฌ๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•
    • paging system ์™ธ์—๋„ cache memory(๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ ๋ณด๋‹ค CPU์— ๊ฐ€๊นŒ์›€), buffer caching, web caching ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ
  • ์บ์‰ฌ ์šด์˜์˜ ์‹œ๊ฐ„ ์ œ์•ฝ (order of any)
    • ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ญ์ œํ•  ํ•ญ๋ชฉ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ผ์— ์ง€๋‚˜์น˜๊ฒŒ ์‹œ๊ฐ„์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†์Œ
    • Buffer caching, Web caching์€ O(1) ~ O(log n)๊นŒ์ง€ ๊ฐ€๋Šฅ
    • Paging System์ธ ๊ฒฝ์šฐ
      • page fault์ธ ๊ฒฝ์šฐ์—๋งŒ OS๊ฐ€ ๊ด€์—ฌํ•จ.
      • ํŽ˜์ด์ง€๊ฐ€ ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š”๊ฒฝ์šฐ ์ฐธ์กฐ์‹œ๊ฐ ๋“ฑ์˜ ์ •๋ณด๋ฅผ OS๋ฅผ ์•Œ ์ˆ˜๊ฐ€ ์—†์Œ
      • O(1)์ธ LRU์˜ list ์กฐ์ž‘ ์กฐ์ฐจ ๋ถˆ๊ฐ€๋Šฅ
      • ๊ทธ๋ž˜์„œ paging system์—์„œ๋Š” LRU, LFU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์Œ
  • clock Algorithm
    • LRU ๊ทผ์‚ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์—ฌ๋Ÿฌ ๋ช…์นญ์œผ๋กœ ๋ถˆ๋ฆผ
      • Second chance Algorithm
      • NUR(not used recently) ๋˜๋Š” NRU(not recently used)
      • Reference bit์„ ์‚ฌ์šฉํ•ด์„œ ๊ต์ฒด ๋Œ€์ƒ ํŽ˜์ด์ง€ ์„ ์ • (circular list)
    • reference bit๊ฐ€ 0์ธ ๊ฒƒ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํฌ์ธํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์•ž์œผ๋กœ ์ด๋™
    • ํฌ์ธํ„ฐ ์ด๋™ ์ค‘์—์„œ reference bit 1์€ ๋ชจ๋‘ 0์œผ๋กœ ๋ฐ”๊ฟˆ
    • Reference bit 0์ธ ๊ฒƒ์„ ์ฐพ์œผ๋ฉด ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด
    • ํ•œ ๋ฐ”ํ€ด ๋Œ๊ณ  ์™€์„œ๋„ (=second chance) 0์ด๋ฉด ๊ทธ๋•Œ๋Š” replace ๋‹นํ•จ
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€๋ฉด second chance๊ฐ€ ์˜ฌ ๋•Œ 1
  • clock Algorithm์˜ ๊ฐœ์„ 
    • reference bit(access bit)์™€ modify bit(dirty bit)๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ
    • reference bit = 1: ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€ (์ฝ๊ธฐ๋งŒ)
    • Modify bit = 1: ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€(I/O๋ฅผ ๋™๋ฐ˜ํ•œ ํŽ˜์ด์ง€) (์ฝ๊ณ  ์“ฐ๊ธฐ ๋ชจ๋‘)

page Frame์˜ Allocation

  • Allocation problem: process์— ์–ผ๋งˆ๋งŒํผ์˜ page fault๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ๊ฐ€?
  • Allocation์˜ ํ•„์š”์„ฑ
    • ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช…๋ น์–ด ์ˆ˜ํ–‰์‹œ ๋ช…๋ น์–ด, ๋ฐ์ดํ„ฐ ๋“ฑ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ๋™์‹œ ์ฐธ์กฐ
      • ๋ช…๋ น์–ด ์ˆ˜ํ–‰์„ ์œ„ํ•ด ์ตœ์†Œํ•œ ํ• ๋‹น๋˜์–ด์•ผ ํ•˜๋Š” frame์˜ ์ˆ˜๊ฐ€ ์žˆ์Œ
    • Loop๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” page๋“ค์€ ํ•œ๊บผ๋ฒˆ์— allocate ๋˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•จ.
      • ์ตœ์†Œํ•œ์˜ allocation์ด ์—†์œผ๋ฉด ๋งค loop๋งˆ๋‹ค page fault
  • Allcation Scheme
    • Equal allocation: ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋˜‘๊ฐ™์€ ๊ฐฏ์ˆ˜ ํ• ๋‹น
    • Proportional allocation: ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ํ• ๋‹น
    • Priority allocation: ํ”„๋กœ์„ธ์Šค์˜ priority์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ• ๋‹น

global replacement vs local replacement

  • global (์ž๋™์ ์œผ๋กœ ์กฐ์ ˆ๋จ) / ์ž์œ ๊ฒฝ์ œ
    • Replace ์‹œ ๋‹ค๋ฅธ process์— ํ• ๋‹น๋œ frame์„ ๋นผ์•—์•„ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    • process๋ณ„ ํ• ๋‹น๋Ÿ‰์„ ์กฐ์ ˆํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ž„
    • FIFO, LRU, LFU ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ global replacement๋กœ ์‚ฌ์šฉ์‹œ์— ํ•ด๋‹น working set, PFF ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ
  • local (ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ํ• ๋‹น๋จ ๊ณ ์ •์ ์œผ๋กœ) / ๊ณต์‚ฐ์ฃผ์˜
    • ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame ๋‚ด์—์„œ๋งŒ replacement
    • FIFO, LRU, LFU ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ process ๋ณ„๋กœ ์šด์˜์‹œ

Threshing Diagram

  • ๋ฉ€ํ‹ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€๋น„ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ธ๊ฑด๋ฐ. ์—ฌ๊ธฐ์„œ threshing์ด ์ผ์–ด๋‚˜๋ฉด CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋š ๋–จ์–ด์ง.
  • Threshing๋Š” page fault ํ•˜๋А๋ผ ์ •์‹ ์€ ์—†๋Š”๋ฐ, CPU๋Š” ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์„ ๋งํ•จ.

Threshing

  • ํ”„๋กœ์„ธ์Šค์˜ ์›ํ™œํ•œ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ page frame ์ˆ˜๋ฅผ ํ• ๋‹น ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ
  • Page fault rate์ด ๋งค์šฐ ๋†’์•„์ง
  • CPU utilization์ด ๋งค์šฐ ๋‚ฎ์•„์ง
  • OS๋Š” MPD(Multiprogramming Degree)๋ฅผ ๋†’์—ฌ์•ผํ•œ๋‹ค๊ณ  ํŒ๋‹จ
  • ๋˜ ๋”ฐ๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€๋จ (higher MPD)
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ frame์˜ ์ˆ˜๊ฐ€ ๋”์šฑ ๊ฐ์†Œ
  • ํ”„๋กœ์„ธ์Šค๋Š” page์˜ swap in / swap out์œผ๋กœ ๋งค์šฐ ๋ฐ”์จ
  • ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์— CPU๋Š” ํ•œ๊ฐ€ํ•จ
  • low throughput

working set

  • locality of reference
    • ํ”„๋กœ์„ธ์Šค๋Š” ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ผ์ • ์žฅ์†Œ๋งŒ์„ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•œ๋‹ค.
    • ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ํ•ด๋‹น page๋ฅผ locality set์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • Working Set model
    • locality์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•œ๊บผ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ํ•˜๋Š” page๋“ค์˜ ์ง‘ํ•ฉ์€ working set์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • working set ๋ชจ๋ธ์—์„œ๋Š” process์˜ working set ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ์–ด์•ผ ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ชจ๋“  frame์„ ๋ฐ˜๋‚ฉํ•œ ํ›„ swap out(suspend)
    • Threshing์„ ๋ฐฉ์ง€ํ•จ
    • Multiprogramming degree๋ฅผ ๊ฒฐ์ •ํ•จ.

working set algorithm (global replacement)

  • working set์˜ ๊ฒฐ์ •
    • working set window๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ƒ„
    • working size๊ฐ€ ๋ธํƒ€์ธ ๊ฒฝ์šฐ
      • ์‹œ๊ฐ t์—์„œ์˜ working set (WSti)
        • Time interval์— ์‚ฌ์šฉ๋œ ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ
        • working set์— ์†ํ•œ page๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€, ์†ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋ฒ„๋ฆผ
        • ์ฆ‰, ์ฐธ์กฐ๋œ ํ›„ ๋ธํƒ€ ์‹œ๊ฐ„ ๋™์•ˆ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•œ ํ›„์— ๋ฒ„๋ฆผ

page fault frequency (PFF)

  • Page fault rate์˜ ์ƒํ•œ๊ฐ’๊ณผ ํ•˜ํ•œ๊ฐ’์„ ๋‘”๋‹ค.
    • Page fault rate์˜ ์ƒํ•œ๊ฐ’์„ ๋„˜์œผ๋ฉด frame์„ ๋” ํ• ๋‹นํ•œ๋‹ค.
    • Page fault rate์ด ํ•˜ํ•œ๊ฐ’์„ ๋„˜์œผ๋ฉด frame์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.
  • ๋นˆ frame์ด ์—†์œผ๋ฉด ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ swap out ํ•œ๋‹ค.

page size์˜ ๊ฒฐ์ •

  • Page size๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋ฉด
    • ํŽ˜์ด์ง€ ์ˆ˜ ์ฆ๊ฐ€
    • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ ์ฆ๊ฐ€
    • internal fragmentation ๊ฐ์†Œ
    • Disk transfer์˜ ํšจ์œจ์„ฑ ๊ฐ์†Œ
      • Seek/rotation vs transfer
    • ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ์ด ํšจ์œจ์ 
      • locality์˜ ํ™œ์šฉ ์ธก๋ฉด์—์„œ๋Š” ์ข‹์ง€ ์•Š์Œ
  • trend
    • Larger page size