Post

[OS] Operating System(10-1): Virtual Memory, Demand Paging

[OS] Operating System(10-1): Virtual Memory, Demand Paging

๐Ÿ€ ์šด์˜์ฒด์ œ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋Š” ์‚ฌ์‹ค ๊ฐ€์ƒ ์ฃผ์†Œ์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆด ๋•Œ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ!

์ฆ‰, ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ง๊ณ  ์ผ๋ถ€๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค

  • ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋„ ์ ๊ฒŒ ์”€
    • ๊ฐ ํ”„๋กœ๊ทธ๋ž˜์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค
    • I/O๋„ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค(์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)
    • ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ ํ”„๋กœ๊ทธ๋žจ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ

Virtual Memory


๐Ÿ“šVirtual Memory: ์‚ฌ์šฉ์ž์˜ ๋…ผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ถ„๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ 

  • ๋…ผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋งŽ์ด ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.
  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค๊ณผ ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•ด ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ํ•„์š” X alt text

๐Ÿ”„๋™์ž‘ ๊ณผ์ •:
1๋‹จ๊ณ„: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์ƒ ์ฃผ์†Œ์— ์ ‘๊ทผ ์‹œ๋„ 2๋‹จ๊ณ„: MMU๊ฐ€ ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ 3๋‹จ๊ณ„: ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์œผ๋ฉด ์ ‘๊ทผ, ์—†์œผ๋ฉด ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ 4๋‹จ๊ณ„: ํ•„์š”์‹œ ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ (ํŽ˜์ด์ง€ ์Šค์™€ํ•‘)

โœ…virtual memory ๊ตฌํ˜„ ๋ฐฉ๋ฒ•:

  • MMU (Memory Management Unit):
    • ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜
    • page table์„ ์ด์šฉํ•œ address mapping
  • Demand Paging
  • Demand Segmentation

์ž์„ธํ•˜๊ฒŒ๋Š” ์ฐจ์ฐจ ์•Œ์•„๋ณด์ž

Virtual-address Space


  • Virtual address space: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์  ๊ด€์  alt text

  • stack๊ณผ heap์€ ์„œ๋กœ ํ–ฅํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ๊ทธ ์‚ฌ์ด๊ฐ€ ๊ฑฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ๋งŒ๋‚  ์ผ์€ ์—†๋‹ค.

alt text

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ, ๋น ๋ฅธ ๋กœ๋”ฉ์˜ ์ด์  ์กด์žฌ

Demand Paging(โญ)


๐Ÿ“šDemand Paging: ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  page๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋•Œ ๋ถˆ๋Ÿฌ๋“ค์ด๋Š” ๋ฐฉ์‹

  • ์ฆ‰ ํ•„์š”ํ•œ page๋งŒ ๋ถˆ๋Ÿฌ๋“ค์ด๋Š” ๊ฒƒ
  • ๋ฉ”๋ชจ๋ฆฌ ์ ๊ฒŒ ์‚ฌ์šฉ, ์‘๋‹ต ๋น ๋ฅด๊ณ  ๋”๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • I/O ์ ๊ฒŒ ์‚ฌ์šฉ
  • ๋น ๋ฅธ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘
Valid-Invalid Bit

  • Valid-Invalid Bit: ์ด ๋น„ํŠธ๋Š” ๊ฐ ํŽ˜์ด์ง€๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ„

โœ…ํŠน์ง•:

  • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ๋ชจ๋“  page์˜ Valid-Invalid ๋น„ํŠธ๋Š” i๋กœ ์„ค์ •
  • page๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋ฉด i โ†’ v๋กœ, swap out ๋˜๋ฉด v โ†’ i
  • MMU๊ฐ€ ์ด bit๋ฅผ ๊ฒ€์‚ฌํ•ด์„œ ํŠน์ • ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธ
    • ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์Œ(v) โ†’ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ ‘๊ทผ
    • ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ(i) โ†’ Page Fault ๋ฐœ์ƒ! alt text

Page Fault ์ฒ˜๋ฆฌ ๊ณผ์ •


Page Fault: ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ

๐Ÿ“Page fault ๋ฐœ์ƒ ์กฐ๊ฑด:

1
2
3
4
5
ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ โ†’ MMU ์ฃผ์†Œ ๋ณ€ํ™˜ โ†’ Valid-Invalid Bit ๊ฒ€์‚ฌ
                                           โ†“
                                    [i] Invalid์ธ ๊ฒฝ์šฐ
                                           โ†“
                                    ๐Ÿšจ PAGE FAULT! ๐Ÿšจ

โœ…ํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ ๊ณผ์ • (6๋‹จ๊ณ„)
1๏ธโƒฃ ํŽ˜์ด์ง€ ํดํŠธ ํŠธ๋žฉ ๋ฐœ์ƒ

1
CPU โ†’ MMU โ†’ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๊ฒ€์‚ฌ โ†’ Invalid Bit ๋ฐœ๊ฒฌ โ†’ ๐Ÿšจ TRAP!
  • MMU๊ฐ€ Invalid page ์ ‘๊ทผ์„ ๊ฐ์ง€
  • trap์ด ๋ฐœ์ƒํ•˜์—ฌ ์šด์˜์ฒด์ œ๋กœ ์ œ์–ด ์ „๋‹ฌ
  • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด ์ค‘๋‹จ

2๏ธโƒฃ ์šด์˜์ฒด์ œ์˜ ์ฐธ์กฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

  • Invalid bit๋Š” 2๊ฐ€์ง€ ์˜๋ฏธ:
    1. ์ฃผ์†Œ ๋ฒ”์œ„ ๋ฐ–์— ์žˆ๋Š” ๊ฒฝ์šฐ - ์ž˜๋ชป๋œ ์ฐธ์กฐ โ†’ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
    2. ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ - ์ •์ƒ ์ฐธ์กฐ โ†’ ๊ณ„์† ์ง„ํ–‰

3๏ธโƒฃ ๋นˆ ํ”„๋ ˆ์ž„ ์ฐพ๊ธฐ

  • free frame ์žˆ์Œ โ†’ ๋ฐ”๋กœ ์‚ฌ์šฉ
  • free frame ์—†์Œ โ†’ ๊ธฐ์กด page ๊ต์ฒด(swap out)
    • ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ (LRU, FIFO, Clock ๋“ฑ)

4๏ธโƒฃ ํŽ˜์ด์ง€ ์Šค์™‘ ์ธ (Swap In)

1
2
3
4
5
6
7
    ๋””์Šคํฌ I/O ์Šค์ผ€์ค„๋ง
          โ†“
    backing store์—์„œ ํŽ˜์ด์ง€ ์ฝ๊ธฐ
          โ†“
    ์ฐพ์€ free frame์— ํŽ˜์ด์ง€ ๋กœ๋“œ
          โ†“
    โœ… ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์™„๋ฃŒ

5๏ธโƒฃ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ ์ˆ˜์ •:
1
2
3
4
5
6
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     ๋ณ€๊ฒฝ ์ „      โ”‚     ๋ณ€๊ฒฝ ํ›„      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Page N โ†’ ---    โ”‚ Page N โ†’ Frame Mโ”‚
โ”‚ Valid Bit: i    โ”‚ Valid Bit: v    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ โ†’ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ ๋งคํ•‘ ์„ค์ •
  • Valid-Invalid Bit๋ฅผ v๋กœ ๋ณ€๊ฒฝ

6๏ธโƒฃ ๋ช…๋ น์–ด ์žฌ์‹คํ–‰

alt text

์•ž์˜ 6๋‹จ๊ณ„๋ฅผ ๋„์‹ํ™”

Page fault ์œ ํ˜•

alt text

  • Linux๋Š” Minor Page Fault๊ฐ€ Major Page Fault๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์ด ๋ฐœ์ƒํ•จ!
    • ์ด๋Š” ์‹œ์Šคํ…œ์ด ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ - ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋จ

Aspects of Demand Paging


  1. Pure Demand Paging์˜ ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์•„๋ฌด ํŽ˜์ด์ง€๋„ ์—†๋Š” ์ƒํƒœ
    • ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ฆ‰์‹œ Page Fault ๋ฐœ์ƒ
    • ์ดํ›„ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋“ค์ด ํ•˜๋‚˜์”ฉ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œ๋จ
  2. Multiple Page Faults
    • ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๊ฐ€ ์—ฌ๋Ÿฌ page์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์˜ˆ: ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‘ ์ˆซ์ž๋ฅผ ๋”ํ•ด์„œ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๋ช…๋ น์–ด
    • ์ตœ๋Œ€ 4๋ฒˆ์˜ page fault๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ(๋ช…๋ น์–ด, ํ”ผ์—ฐ์‚ฐ์ž1, ํ”ผ์—ฐ์‚ฐ์ž2, ๊ฒฐ๊ณผ ์ €์žฅ)

Instruction Restart

Page Fault ์ฒ˜๋ฆฌ ์ƒ์„ธ ๊ณผ์ •

alt text

Free-Frame List


๐Ÿ“šFree-Frame List: page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” free fream๋“ค์˜ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•จ

alt text

Free-Frame List ๊ตฌ์กฐ

โœ…์ž‘๋™ ์›๋ฆฌ:

  1. page fault ๋ฐœ์ƒ โ†’ ์šด์˜์ฒด์ œ๊ฐ€ secondary storage(๋ณด์กฐ์ €์žฅ์žฅ์น˜)์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•จ
  2. Free-Frame List ํ™œ์šฉ โ†’ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ free frame๋“ค์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์œ ์ง€
  3. Zero-fill-on-demand โ†’ ํ”„๋ ˆ์ž„์„ ํ• ๋‹นํ•˜๊ธฐ ์ „์— ๋‚ด์šฉ์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™” (๋ณด์•ˆ์ƒ ์ด์œ )
    • Zero-fill-on-demand๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์ด์ „ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด(ํŒจ์Šค์›Œ๋“œ, ๊ฐœ์ธ์ •๋ณด ๋“ฑ)๊ฐ€ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ
  4. secondary storage์—์„œ ํŽ˜์ด์ง€ ๋กœ๋“œ

Memory Compression


๐Ÿ“šMemory Compression: paging ๋Œ€์‹  ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•, ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์˜ ๋‚ด์šฉ์„ ์••์ถ•ํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

โœ…์ž‘๋™๊ณผ์ •:

  • ์ดˆ๊ธฐ ์ƒํƒœ: Free-frame list์— 6๊ฐœ์˜ ํ”„๋ ˆ์ž„ (7, 2, 9, 21, 27, 16)
  • Modified frame list: ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋“ค (15, 3, 35, 26)์ด ์Šค์™‘ ๊ณต๊ฐ„์— ์จ์งˆ ์˜ˆ์ • alt text

  • ์••์ถ• ๊ณผ์ •:
    • ํ”„๋ ˆ์ž„ 15, 3, 35์˜ ๋‚ด์šฉ์„ ์••์ถ•ํ•˜์—ฌ ํ”„๋ ˆ์ž„ 7์— ์ €์žฅ
    • ์••์ถ•๋œ ํ”„๋ ˆ์ž„๋“ค(15, 3, 35)์„ ๋‹ค์‹œ free-frame list๋กœ ๋ฐ˜ํ™˜ alt text

3๊ฐœ frame์˜ ๋ฐ์ดํ„ฐ๋ฅผ 1๊ฐœ frame์— ์ €์žฅํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ฆ๊ฐ€!

  • ๐Ÿ“ฑ Android & iOS - Swapping/Paging ๋Œ€์‹  Memory Compression ์‚ฌ์šฉ
  • ๐Ÿ’ป macOS & Windows 10 - Memory Compression ์ง€์› (macOS๋Š” SSD ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•๋ณด๋‹ค ๋น ๋ฆ„)

Performance of Demand Paging


Demand Paging์—์„œ page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌ๋˜๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ํ™œ๋™:

  1. Service the Interrupt - ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ช…๋ น์–ด ์‹คํ–‰ (๋น ๋ฆ„)
  2. Read the page - ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ๋กœ๋“œ (๋งค์šฐ ๋А๋ฆผ)
  3. Restart the process - ์ ์€ ์–‘์˜ ์‹œ๊ฐ„ ์†Œ์š” (๋น ๋ฆ„)
Page Fault Rate
  • p = Page Fault Rate (0 โ‰ค p โ‰ค 1)
  • p = 0: ํŽ˜์ด์ง€ ํดํŠธ ์—†์Œ (์ด์ƒ์ )
  • p = 1: ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ํŽ˜์ด์ง€ ํดํŠธ (์ตœ์•…)

  • EAT(Effective Access Time)
1
EAT = (1 - p) ร— memory_access_time + p ร— page_fault_service_time

Demand Paging Example


์˜ˆ์ œ:

  • Memory access time = 200ns
  • Average page-fault service time = 8ms
  • EAT = (1 - p) x 200 + p x (8ms)
    = (1 - p) ร— 200 + p ร— 8,000,000ns
    = 200 + p x 7,999,800
  • โ†’ EAT๋Š” p์— ๋น„๋ก€!

  • ๋งŒ์•ฝ 1,000๋ฒˆ ์ค‘ 1๋ฒˆ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ ์‹œ(p=0.001)
  • EAT = 200 + 0.001 ร— 7,999,800 = 8,200ns = 8.2ms โŒ์ด๋Š” ์ •์ƒ ์†๋„(๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์†๋„=200ns)๋ณด๋‹ค 40๋ฐฐ ๋А๋ ค์ง„ ์†๋„!

๐ŸŽฏ์œ„ ์˜ˆ์ œ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ 10% ์ดํ•˜๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด:

1
2
3
4
220 > 200 + 7,999,800 ร— p  
= 20 > 7,999,800 ร— p

โ†’ p < 0.0000025

โœ…400,000๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ค‘ 1๋ฒˆ ๋ฏธ๋งŒ์˜ ํŽ˜์ด์ง€ ํดํŠธ๋งŒ ํ—ˆ์šฉ ๊ฐ€๋Šฅ!

Demand Paging Optimizations


Demand Paging์˜ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์€ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. Swap space I/O ์ตœ์ ํ™”
    • Swap space๊ฐ€ file system ๋ณด๋‹ค ๋น ๋ฆ„(๋™์ผํ•œ device๋ผ๋„ ์„ฑ๋Šฅ ์ฐจ์ด ๋ฐœ์ƒ)
      • ๋” ํฐ chunk ๋‹จ์œ„๋กœ ํ• ๋‹น
      • ํŒŒ์ผ ์‹œ์Šคํ…œ๋ณด๋‹ค ์ ์€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ
  2. ํ”„๋กœ์„ธ์Šค ์ด๋ฏธ์ง€ ์ „์ฒด ๋ณต์‚ฌ
    • ํ”„๋กœ์„ธ์Šค ์ „์ฒด๋ฅผ ์‹œ์ž‘ ์ „(๋กœ๋“œ ์‹œ์ )์— swap space์— ๋ณต์‚ฌ
      • ์ดํ›„ page in/out์„ swap space์—์„œ ์ˆ˜ํ–‰
      • ๊ตฌํ˜• BSD Unix์—์„œ ์‚ฌ์šฉ
  3. ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์ง์ ‘ Demand Paging
    • ํ”„๋กœ๊ทธ๋žจ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์ง์ ‘ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ
      • ํ”„๋ ˆ์ž„ ํ•ด์ œ ์‹œ paging out ๋Œ€์‹  discard
      • Solaris์™€ ํ˜„์žฌ BSD์—์„œ ์‚ฌ์šฉ
    • Anonymous Memory๋งŒ ์Šค์™‘ ๊ณต๊ฐ„ ์‚ฌ์šฉ:
      • file๊ณผ ์—ฐ๊ด€๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ(Stack, Heap)
      • ์ˆ˜์ •๋˜์—ˆ์ง€๋งŒ ์•„์ง ํŒŒ์ผ์— ์“ฐ์—ฌ์ง€์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ
  4. ๋ชจ๋ฐ”์ผ ์‹œ์Šคํ…œ ์ตœ์ ํ™”
    • ์Šค์™€ํ•‘์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ• ๊ธฐ๋ฒ• ์‚ฌ์šฉ

Copy-on-Write(COW)


๐Ÿ“šCopy-on-Write(COW): ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ดˆ๊ธฐ์—๋Š” ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•˜๋‹ค๊ฐ€, ์–ด๋А ํ•œ์ชฝ์ด ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งŒ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•

  • ํšจ์œจ์ ์ธ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ - ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋งŒ ๋ณต์‚ฌ
  • ๋น ๋ฅธ fork() ์‹คํ–‰ - ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ X
  • ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ

alt text

alt text

  • vfork(): fork()์˜ ๋ณ€ํ˜•์œผ๋กœ, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์‹œ ์ค‘๋‹จํ•˜๊ณ  ์ž์‹์ด cow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ชจ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ  (ex: Linux, macOS, BSD Unix์—์„œ ์ง€์›)
    • exec() ํ˜ธ์ถœ ์ „๊นŒ์ง€ ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
This post is licensed under CC BY 4.0 by the author.