• toc {:toc}

Background

  • ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ, ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ์ „์ฒด์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งŽ์ง€ ์•Š๋‹ค. โ‡’ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ๋‚ญ๋น„ โ€”โ€”โ†’ ๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์˜ฌ๋ ค์„œ ์‚ฌ์šฉํ•˜์ž!

Virtual Memory

Physical memory๋กœ ๋ถ€ํ„ฐ logical memory ๋ถ„๋ฆฌ

  • ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉํ•˜์ž. โ†’ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์•ˆ์˜ฌ๋ ธ์ง€๋งŒ ์˜ฌ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™์‹œ์ผœ์•ผ ํ•จ.

  • Logical memory > Physical memory

  • ์žฅ์ 

    • Address spaces๋ฅผ ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ concurrentํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ๊ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
      • CPU utilization๊ณผ throughput ์ฆ๊ฐ€๋œ๋‹ค.
    • Process creation์„ ํ•  ๋•Œ๋„ ๋ถ€๋‹ด์ด ์ค„์–ด๋“ ๋‹ค.
    • Swap์„ ์ ๊ฒŒ ํ•ด๋„ ๋œ๋‹ค.

Virtual Address Space

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๋Š”๊ฐ€์— ๋Œ€ํ•œ logical view
  • ์ฃผ๋กœ 0์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋๊นŒ์ง€ ์ด์–ด์ง„๋‹ค. MMU๊ฐ€ logical to physical mapping ํ•œ๋‹ค.

Demand Paging

  • ์•„์ด๋””์–ด : ํ•„์š”ํ•  ๋•Œ Page๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

  • Page ํ•„์š” > Page ์ฐธ์กฐ >

    • invalid > abort
    • not-in-memory > memory๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
  • Swappingํ•˜๋Š” paging system๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

    • Lazy swapper : ํ•„์š”ํ•  ๋•Œ๋งŒ swapํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • page fault handler์ธ pager๋ฅผ ํ†ตํ•ด์„œ swapํ•œ๋‹ค.

With Valid-Invalid Bit

  • ๊ฐ page entry์— valid-invalid bit ํƒ‘์žฌ
  • Valid : ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์žˆ๋‹ค. Memory resident
  • Invalid : ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ์—†๋‹ค. > page fault > Swap in

Handling Page Fault

Page Fault handling ๊ณผ์ •

  1. ๋งŒ์•ฝ page์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์žˆ๋‹ค๋ฉด(๊ฐ€์ •), ์ฒซ๋ฒˆ์งธ ์ฐธ์กฐ๋Š” Lazy swapper๋ฅผ ์‚ฌ์šฉํ•ด swap ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— trap(Page Fault)์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  2. ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ค๋ฅธ table์„ ํ™•์ธํ•œ๋‹ค. (if invalid > abort(์ค‘๋‹จ), if not in memory > ๋นˆ frame ํ•„์š”)
  3. Free frame์„ ์ฐพ๋Š”๋‹ค.
  4. Scheduled disk operation์„ ํ†ตํ•ด page๋ฅผ frame์œผ๋กœ swap in ํ•œ๋‹ค.
  5. Page table์„ ๊ฐฑ์‹ ํ•œ๋‹ค.
  6. Instruction์„ ์žฌ์‹คํ–‰ํ•œ๋‹ค.
  • ์‚ฌ๋ก€
    • ๋ฐฐ๊ฒฝ : Logical memory์— A~H ๊นŒ์ง€ 8๊ฐœ์˜ page ์กด์žฌ
    • Page table์— 0, 2, 5๋ฒˆ๋งŒ valid, ๋‚˜๋จธ์ง€๋Š” invalidํ•œ ์ƒํƒœ
  1. Page B์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ. B์— ์ ‘๊ทผ
  2. Invalid โ‡’ Page fault ๋ฐœ์ƒ
  3. Backing store์—์„œ swap in ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ด๋™
  4. Page table ์—…๋ฐ์ดํŠธ ๋ฐ valid-invalid bit ์—…๋ฐ์ดํŠธ
  5. Page B์— ์ ‘๊ทผ โ€”โ€”โ€”> Lazy swapper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ์— page ์ ‘๊ทผํ•  ๋•Œ page fault๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ swap inํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

Performance of Demand Paging

  • Page fault rate : p
    • 0 < p < 1
    • p = 0 ์ด๋ฉด Page fault ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • P = 1 ์ด๋ฉด Page fault ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋ฐœ์ƒํ•œ๋‹ค.
  • Effective Access Time (EAT)
    • EAT = (memory access) + {(page fault overhead), (swap page out), (swap page in)}
    • Page fault๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„ ๋•Œ โ‡’ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„๋งŒ ์†Œ์š”
    • Page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ overhead, swap ์‹œ๊ฐ„ ์†Œ์š”

Copy-on-Write (COW)

  • ๋ถ€๋ชจ, ์ž์‹ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ™์€ page๋“ค์„ ๊ณต์œ ํ•˜๋„๋ก ํ—ˆ๋ฝํ•˜๋Š” ๊ฒƒ
  • ์˜ˆ์‹œ
    • P1 : ๋ถ€๋ชจ, P2 : ์ž์‹ ๊ฐ™์€ page A, B, C๋ฅผ ๊ณต์œ 
    • ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ P1์ด C๋ฅผ ์ˆ˜์ •
    • A, B, C ๋ฉ”๋ชจ๋ฆฌ ๊ทธ๋Œ€๋กœ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๊ณ  ๋‹ค๋ฅธ free frame์— C ๋ณต์‚ฌํ•ด ์ˆ˜์ •

Free-Frame List

  • Free frame๋“ค์„ list๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ.
  • Free frame์— ์ „ํ˜•์ ์œผ๋กœ 0์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.
  • ---โ‡’ 0์„ ์ฑ„์›Œ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ์ด์ „ ๊ฐ’์ด ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.
  • ์‹œ์Šคํ…œ์ด ์ฒ˜์Œ์— ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ free frame์€ free frame list์— ์ €์žฅ๋œ๋‹ค.

Page Replacement

  • Background

    • Free frame์„ ์‚ฌ์šฉํ•ด์„œ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋Š”๋ฐ, free frame์ด ์—†๋‹ค๋ฉด?
    • ์›๋ž˜ ์žˆ๋˜ page๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๊ณ  ๋‹ค์Œ page๋ฅผ ํ•ด๋‹น frame์— ๋†“์ž!
    • ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์›๋ž˜ ์žˆ๋˜ page ์ข…๋ฃŒ ์‹œํ‚ฌ ๊ฒƒ์ธ๊ฐ€?
    • ๊ธฐ์ค€? โ†’ ์„ฑ๋Šฅ! ---โ‡’ ์ตœ๋Œ€ํ•œ page fault๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž!
  • Basic Page Replacement

  1. ๋””์Šคํฌ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” page์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. Free frame์„ ์ฐพ๋Š”๋‹ค.
    1. ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉํ•œ๋‹ค.
    2. ์—†๋‹ค๋ฉด ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•ด victim frame์„ ์ •ํ•œ๋‹ค.
    3. victim frame์— ์žˆ๋Š” page table์˜ dirty bit๊ฐ’์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋””์Šคํฌ์— frame์„ ์“ด๋‹ค(์ €์žฅ).
  3. ํ•„์š”๋กœ ํ•˜๋Š” page๋ฅผ free frame์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
  4. trap์ด ๋ฐœ์ƒํ–ˆ๋˜ instruction์„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.

---โ‡’ Victim frame, desired page 2๊ฐœ์˜ page transform์ด ๋ฐœ์ƒํ•œ๋‹ค.

Page Replacement Algorithm

Frame-allocation algorithm

  • ์–ผ๋งˆ๋‚˜ ๋งŽ์€ frame์„ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•ด์•ผ ํ• ๊นŒ?

Page-replacement algorithm

  • ์–ผ๋งˆ๋‚˜ ๋งŽ์€ frame๋“ค์ด ๊ต์ฒด๋˜๋Š”๊ฐ€?
  • ๊ฐ€์žฅ ์ ๊ฒŒ page fault๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•œ๋‹ค.

ํ‰๊ฐ€๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ Page reference string์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • Page reference string
    • Page ์ฐธ์กฐ ์ˆœ์„œ๋ฅผ ์ €์žฅํ•ด๋†“์€ string

FIFO Page Replacement

  • ๊ฐ€์žฅ ๋จผ์ € ์˜จ, ๊ฐ€์žฅ ์˜ค๋ž˜ ์žˆ๋˜ page๊ฐ€ victim์ด ๋˜์ž.

  • Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3

  • Frame ๊ฐœ์ˆ˜ 3๊ฐœ๋กœ ๊ฐ€์ •

  • Beladyโ€™s anomaly : ์ผ๋ฐ˜์ ์œผ๋กœ, free frame์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆด ์ˆ˜๋ก ๊ฒน์น˜๋Š” page๊ฐ€ ๋งŽ์•„์ ธ page fault๊ฐ€ ๋œ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋‚˜, ์˜คํžˆ๋ ค ๋” ์ฆ๊ฐ€ํ•˜๋Š” ํ˜„์ƒ์„ ์˜๋ฏธํ•œ๋‹ค.

Optimal Page Replacement

  • ๊ฐ€์žฅ ๊ธด ์‹œ๊ฐ„ ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์˜ˆ์ •์ธ page๊ฐ€ victim์ด ๋˜์ž.

  • ๋ฏธ๋ž˜๊นŒ์ง€ ๊ณ ๋ คํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ โ†’ ๋ฏธ๋ž˜๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์—†๋‹ค. โ†’ ๋•Œ๋ฌธ์— ๋ง ๊ทธ๋Œ€๋กœ โ€˜์ตœ์ โ€™

  • ํ˜„์‹ค์ ์ด์ง€ ์•Š๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

  • Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3

  • Frame ๊ฐœ์ˆ˜ 3๊ฐœ๋กœ ๊ฐ€์ •

LRU(Least Recently Used) Page Replacement

  • ๊ฐ€์žฅ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๋˜ page๊ฐ€ victim์ด ๋˜์ž.

  • Optim์—์„œ๋Š” ๋ฏธ๋ž˜์— ์ง‘์ค‘ํ•ด์„œ ์ง„ํ–‰ํ–ˆ์œผ๋‚˜, LRU์—์„œ๋Š” ๊ณผ๊ฑฐ์— ๋Œ€ํ•ด ์ง‘์ค‘ํ•ด์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๊ฒƒ์„ ์„ ํƒํ•œ๋‹ค.

  • FIFO๋ณด๋‹ค๋Š” ์ข‹์ง€๋งŒ Optim๋ณด๋‹ค๋Š” ์ข‹์ง€ ์•Š๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ  ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

  • Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3

  • Frame ๊ฐœ์ˆ˜ 3๊ฐœ๋กœ ๊ฐ€์ •

  • LRU๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”๊ฐ€

    • Counter implementation
    • Stack implementation

Counter implementation

  • ๋ชจ๋“  page entry์— counter๊ฐ€ ์กด์žฌํ•œ๋‹ค. Page๊ฐ€ ์ฐธ์กฐ๋  ๋•Œ๋งˆ๋‹ค counter๊ฐ€ clock์„ copyํ•˜๊ณ , time stemp๊ฐ€ ๊ฐ€์žฅ ์ด์ „์˜ ๊ฒƒ์ด victim์ด ๋œ๋‹ค.
  • Page๊ฐ€ ๋ณ€๊ฒฝ๋ผ์•ผ ํ•  ๋•Œ, counter๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง„ ๊ฒƒ์„ ์ฐพ๋Š”๋‹ค.
    • Frame์ด ๋งŽ์œผ๋ฉด search overhead๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. Time stemp ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋น„๊ต ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ.

Stack implementation

  • Double link๋กœ ์—ฐ๊ฒฐ๋œ page number stack์„ ์œ ์ง€ํ•œ๋‹ค.
  • Page๊ฐ€ ์ฐธ์กฐ๋˜๋ฉด ๋งจ ์œ„๋กœ ๋ณด๋‚ธ๋‹ค.
    • 6๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ€์žฅ ๋ฐ‘์— ์žˆ๋Š” page๋ฅผ ๊ต์ฒดํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— searchํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋งค ์—…๋ฐ์ดํŠธ๊ฐ€ ๋น„์‹ธ๋‹ค.

LRU Approximation Algorithms

  • LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์„ ์œ„ํ•ด์„œ๋Š” counter, stack๋“ฑ ์ ์ ˆํ•œ ํ•˜๋“œ์›จ์–ด์˜ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค.
  • LRU๋Š” Reference bit๋ฅผ ์‚ฌ์šฉํ•ด ํ•˜๋“œ์›จ์–ด ์ง€์›์—†์ด LRU์™€ ๋น„์Šทํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ๋‹ค.
  • Reference bit
    • ์ดˆ๊ธฐ์— 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.
    • Page๊ฐ€ ์ฐธ์กฐ๋˜๋ฉด 1๋กœ ๋ฐ”๋€๋‹ค.
    • Reference bit = 0 ์ธ ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋žœ๋ค์œผ๋กœ ์„ ํƒํ•ด์„œ ๋ณ€๊ฒฝํ•œ๋‹ค.

Second-chance algorithm

  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” FIFO์ด๋‚˜, reference bit๋ฅผ ์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜.
  • ์›ํ˜• ํ๋กœ ๊ตฌ์„ฑ๋˜์–ด reference bit๋ฅผ ์‚ฌ์šฉํ•ด 1์ผ ๋•Œ ๋ด์ฃผ๊ณ  0์ด๋ฉด ๊ต์ฒดํ•œ๋‹ค.
  • ๋ชจ๋“  reference bit๊ฐ€ 1์ด๋ฉด FIFO๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

Global / Local Replacement

  • Global Replacement : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปดํ“จํ„ฐ ๋ชจ๋“  frame์˜ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ frame์„ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ page frame์„ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋งค์šฐ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Throughput์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋” ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.
  • Local Replacement : ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋œ frame์˜ ์ง‘ํ•ฉ์—์„œ๋งŒ frame์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Local ๋งˆ๋‹ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์„ฑ๋Šฅ์ด ๋” ์ผ์ •ํ•˜๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์‚ฌ์šฉํ•  ์–‘์„ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—

Thrashing

  • ์ •์˜ : ํ”„๋กœ์„ธ์Šค๊ฐ€ swappingํ•˜๋А๋ผ ๋ฐ”์œ ์ƒํƒœ swap์œ„ํ•ด ๋Œ€๊ธฐ์ค‘ > ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ > ์„ฑ๋Šฅ ํ•˜๋ฝ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถฉ๋ถ„ํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด page fault rate๊ฐ€ ๋งค์šฐ ์ปค์ง„๋‹ค.
    • CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ ๋‹ค. โ†’ ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“œ๋‹ˆ OS๋Š” ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํˆฌ์ž…ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. โ†’ Thrashing ์‹ฌํ™”
  1. ์šด์˜์ฒด์ œ โ†’ CPU ์ด์šฉ๋ฅ  ๊ฐ์‹œ
  2. ์ด์šฉ๋ฅ ์ด ๋„ˆ๋ฌด ๋‚ฎ์•„์ง€๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •๋„๋ฅผ ๋†’์ธ๋‹ค.
  3. ์ด ๋•Œ, global replacement๋ฅผ ์‚ฌ์šฉํ•ด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€์ธ์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ต์ฒดํ•œ๋‹ค.
  4. ๊ต์ฒด๋œ ํŽ˜์ด์ง€๋“ค์ด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๋‹ค์‹œ page fault๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  5. ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ frame์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  6. Page swap in, out์„ ์œ„ํ•ด paging์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด queueing์ด ์ง„ํ–‰๋˜๊ณ  ready queue๋Š” ๋น„๊ฒŒ ๋œ๋‹ค.
  7. ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ CPU ์ด์šฉ๋ฅ ์ด ๋–จ์–ด์ง€๊ณ  OS๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  8. ๋” ๋งŽ์€ page fault๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Global replacement๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค. Local, priority page replacement๋ฅผ ์‚ฌ์šฉํ•ด ์˜ํ–ฅ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Locality model
    • ํ• ๋‹น๋œ frame๋ณด๋‹ค ํ”„๋กœ์„ธ์Šค์˜ ํฌ๊ธฐ๊ฐ€ ๋” ํด ๋•Œ thrashing ๋ฐœ์ƒ
    • size of locality > total memory size (Thrashing ๋ฐœ์ƒ ์กฐ๊ฑด)
    • ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐ, ์ ‘๊ทผ ์š”์ฒญ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋Š” ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. โ‡’ ํŠน์ • ์˜์—ญ์—์„œ ์ง‘์ค‘์ ์œผ๋กœ ์ ‘๊ทผ ์š”์ฒญ์ด ๋œ๋‹ค.

Working-Set Model

  • Locality๋ฅผ ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ• ๊นŒ?
  • ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ(๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ).
  • Delta = Window Size = ํŽ˜์ด์ง€ ์ฐธ์กฐ์˜ ๊ณ ์ •
  • (ํ”„๋กœ์„ธ์Šค ์˜ Working set size) = ๊ฐ€์žฅ ์ตœ๊ทผ Delta๋™์•ˆ ์ ‘๊ทผํ•œ ์ด ํŽ˜์ด์ง€ ์ˆ˜
    • Delta๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์ „์ฒด locality๋ฅผ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
    • Delta๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด ์—ฌ๋Ÿฌ locality๋“ค์„ ๋™๋ฐ˜ํ•œ๋‹ค.
    • Delta๊ฐ€ infiniteํ•˜๋ฉด ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋™๋ฐ˜ํ•œ๋‹ค.
  • = total demand frames = ์š”๊ตฌ๋˜๋Š” ์ด frame ์ˆ˜
    • Locality ๊ทผ์‚ฌ
    • Delta์— ๋”ฐ๋ผ์„œ WSS๊ฐ€ ํ•˜๋‚˜์˜ locality๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋žต์ ์œผ๋กœ ์–ผ๋งˆ๋‚˜ locality๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๊ทผ์‚ฌํ•œ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ D > m (m : ํ• ๋‹น๋œ frame)์ด๋ฉด Thrashing

Page-Fault Frequency (PFF)

  • ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€์˜ page fault ๋นˆ๋„์ˆ˜๋ฅผ ์„ค์ •ํ•ด๋†“๊ณ  local replacement ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
    • Page fault rate์˜ ์ƒํ•œ, ํ•˜ํ•œ์„ ์„ ์ •ํ•œ๋‹ค.
    • ์ƒํ•œ์„ ๋ณด๋‹ค ๋†’์€ ๊ฒฝ์šฐ page fault๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋” ๋งŽ์€ frame์„ ํ• ๋‹นํ•ด์ค€๋‹ค.
    • ํ•˜ํ•œ์„ ๋ณด๋‹ค ๋‚ฎ์€ ๊ฒฝ์šฐ page fault๊ฐ€ ์ ๊ฒŒ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ frame ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.
  • WSS๋Š” ์ง์ ‘์ ์œผ๋กœ page fault๋ฅผ ์ธก์ •ํ•˜์ง€ ์•Š์ง€๋งŒ PFF์˜ ๊ฒฝ์šฐ page fault rate๋ฅผ ์ธก์ •ํ•ด ์กฐ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ง์ ‘์ ์ธ ๋ฐฉ์‹์ด๋‹ค.

Allocating Kernel Memory

์ด์ „๊นŒ์ง€๋Š” User memory์— ๋Œ€ํ•œ ๋‚ด์šฉ User memory์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋Œ€์šฐํ•œ๋‹ค. Free-memory pool์—์„œ ํ• ๋‹นํ•œ๋‹ค.

  • User : malloc โ†’ paging โ†’ frames์— ๋Œ€์‘
  • Kernel : kmalloc โ†’ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ  contiguousํ•˜๊ฒŒ ํ• ๋‹นํ•œ๋‹ค.
    • Paging์„ ํ•˜๋ฉด ๋А๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์— contiguousํ•˜๊ฒŒ ์‚ฌ์šฉ

Buddy System Allocator

  • ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ segment๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค.
  • ๊ณ ์ •๋œ ํฌ๊ธฐ = 2์˜ n์Šน (์ตœ์†Œ 4K ์ด์ƒ ๊ฐ€์ง„๋‹ค.)
    • ๋งŒ์•ฝ, ์š”์ฒญ๋œ ์‚ฌ์ด์ฆˆ๊ฐ€ 3K์ผ์ง€๋ผ๋„ ์˜ฌ๋ฆผํ•˜์—ฌ 4K๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค.
    • ๋น„์–ด์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 256K์ผ ๋•Œ ๋งŒ์•ฝ 21K๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด (๋งค์šฐ ์ž‘์€ ํ• ๋‹น์„ ํ•„์š”๋กœ ํ•œ๋‹ค๋ฉด) ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 2๊ฐœ์”ฉ ๋‚˜๋ˆ ๊ฐ€๋ฉฐ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ์žฅ์  : ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” chunk๋“ค์„ ๋” ํฐ chunck๋กœ ๋น ๋ฅด๊ฒŒ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์  : 2์˜ n์Šน์œผ๋กœ ๋ถ„ํ• ๋˜๊ธฐ ๋•Œ๋ฌธ์— internal framentation์ด ๋ฐœ์ƒํ•œ๋‹ค.

image

Slab Allocator

  • Slab : ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฐ์†๋œ ํŽ˜์ด์ง€๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ์˜์—ญ
  • Cache : Slab์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž„์‹œ ๋ณด๊ด€์†Œ ๊ฐœ๋…. ํ•˜๋‚˜ ์ด์ƒ์˜ slab์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • Slab์€ ๋ฏธ๋ฆฌ ๋‹ค์–‘ํ•œ ์‚ฌ์ด์ฆˆ์˜ cache๋ฅผ ๋งŒ๋“ค์–ด ๋†“๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ cache๋Š” ๋นˆ object(structure)๋กœ ์ฑ„์›Œ์ง„๋‹ค.
  • Structure๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์•„ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ๋ฐ”๋กœ๋ฐ”๋กœ ํ• ๋‹นํ•ด์ฃผ๊ณ  ์‚ฌ์šฉ์ด ์™„๋ฃŒ๋˜๋ฉด ํšŒ์ˆ˜ํ•œ๋‹ค.
  • ์ฒ˜์Œ cache ์ƒ์„ฑ โ†’ free๋กœ ํ‘œ์‹œ / cache์— structure ์ €์žฅ โ†’ used๋กœ ํ‘œ์‹œ
  • Slab state : Full (=all used) / Empty (=all free) / Partial (=mix of free and used)
  • ๋นˆ slab์ด ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด slab์„ ํ• ๋‹นํ•œ๋‹ค.
  • Cache์—์„œ ๊ฐ ํฌ๊ธฐ๋งˆ๋‹ค์˜ Object๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด fragmentation์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ์„ ๋งŒ์กฑ์‹œํ‚จ๋‹ค.

image