• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • ๐Ÿง  Algorithm

    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
  • ๐Ÿ’ฐ Finance

    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • ๐Ÿ›๏ธ Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
  • ๐Ÿ‹๏ธ Wellness

    • ๐Ÿซ’ ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ฐจ์ „์žํ”ผ(Psyllium Husk)
  • ๐Ÿ–ฅ๏ธ Computer Graphics

    • 8 - Lighting
    • 9 - Orientation & Rotation
    • 10 - Character Animation
    • 11 - Curves
    • 12 - More Lighting, Texture
  • ๐Ÿ—‚๏ธ Operating System

    • 7. Deadlocks
    • 8. Memory Management(1)
    • 9. Memory Management(2)
    • 10. Virtual Memory(1)
    • 11. Virtual Memory(2)
    • 12. File System
    • 13. Mass Storage Management
    • 14. I/O Systems
  • ๐Ÿ”ฃ Programming Language Theory

    • 13. FPL(1)

10. Virtual Memory(1)

Size of a Logical Address Space

[stack]
   โ†‘
[heap]

[data]

[text]
   โ†‘
   0
  • 32๋น„ํŠธ ์ฃผ์†Œ์˜ ๊ฒฝ์šฐ, ์ตœ๋Œ€ ์ฃผ์†Œ ๊ณต๊ฐ„:

    232โˆ’1โ‡’4GB2^{32} - 1 \Rightarrow 4 \text{GB} 232โˆ’1โ‡’4GB

    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋‹น ์ตœ๋Œ€ 4GB ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„
    • ์ด ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์‹ค์ œ๋กœ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ

Background

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ: ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ

  • ์žฅ์ :

    • ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์–ด๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ
    • ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„๋ณด๋‹ค ํ›จ์”ฌ ํด ์ˆ˜ ์žˆ์Œ
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ์†Œ ๊ณต๊ฐ„ ๊ณต์œ  ๊ฐ€๋Šฅ
    • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
    • ํŽ˜์ด์ง€๋ฅผ ์Šค์™‘์ธ/์Šค์™‘์•„์›ƒ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ๊ตฌํ˜„ ๋ฐฉ์‹:

    • Demand paging
    • Demand segmentation

Virtual Memory Larger than Physical Memory

virtual memory:
  page 0
  page 1
  page 2
  ...
  page n

โ†’ memory map โ†’ physical memory ์ผ๋ถ€๋งŒ ์œ ์ง€
โ†’ ๋‚˜๋จธ์ง€๋Š” secondary storage(๋””์Šคํฌ ๋“ฑ)์— ์ €์žฅ

Demand Paging

  • ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ๋Ÿฌ์˜ด

    • I/O ๊ฐ์†Œ
    • ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ
    • ๋ฐ˜์‘ ์†๋„ ํ–ฅ์ƒ
    • ์‚ฌ์šฉ์ž ์ˆ˜ ์ฆ๊ฐ€
  • ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ:

    • ์ž˜๋ชป๋œ ์ฐธ์กฐ โ†’ abort
    • ๋ฉ”๋ชจ๋ฆฌ์— ์—†์œผ๋ฉด โ†’ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • Lazy swapper:

    • ํ•„์š”ํ•œ ์ˆœ๊ฐ„๊นŒ์ง€ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์Œ
    • ์ด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“ˆ์„ pager๋ผ๊ณ  ๋ถ€๋ฆ„

Valid-Invalid Bit

  • ๊ฐ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ์—๋Š” valid-invalid ๋น„ํŠธ๊ฐ€ ์žˆ์Œ

  • Valid (V): ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์Œ

  • Invalid (I):

    • ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„์— ์—†์Œ (illegal)

    • ๋””์Šคํฌ์—์„œ ์•„์ง ๋กœ๋”ฉ๋˜์ง€ ์•Š์Œ (not-in-memory)

    • ๋””์Šคํฌ์—์„œ๋Š” ์œ ํšจํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์—†์Œ (obsolete)

    • ์˜ˆ: ํ•ญ๊ณต ์˜ˆ์•ฝ ์‹œ์Šคํ…œ

      • ํ•˜๋‚˜์˜ ์ „์—ญ ๋””์Šคํฌ + ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ/์ง€์ 
  • ๋ชจ๋“  ํ•ญ๋ชฉ์€ ์ดˆ๊ธฐ์—๋Š” invalid ์ƒํƒœ๋กœ ์„ค์ •

  • ์ฃผ์†Œ ๋ณ€ํ™˜ ์ค‘, invalid์ด๋ฉด โ‡’ page fault

Page Table when Some Pages are not in Main Memory

  • ์ผ๋ถ€ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†์„ ๊ฒฝ์šฐ:
    • page table์—๋Š” valid-invalid ๋น„ํŠธ๊ฐ€ ์กด์žฌ
    • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ํŽ˜์ด์ง€๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋จ
    • ์ ‘๊ทผ ์‹œ page fault ๋ฐœ์ƒ

Page Fault

  • ์œ ํšจํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€ ์ ‘๊ทผ โ†’ MMU๊ฐ€ trap ๋ฐœ์ƒ โ†’ page fault trap

  • Trap handler๋Š” OS ๋‚ด๋ถ€์— ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ

  • OS๊ฐ€ page fault๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ˆœ์„œ:

    1. OS๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜์—ฌ ์›์ธ์„ ๊ฒฐ์ •
      • illegal reference? bad address? protection violation?
      • ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ โ†’ ๊ณ„์† ์ง„ํ–‰
    2. ๋นˆ ํ”„๋ ˆ์ž„ ํ™•๋ณด
      • ์—†์œผ๋ฉด ๊ต์ฒด (replacement)
    3. ๋””์Šคํฌ์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด ์˜ด
      • ๋””์Šคํฌ I/O ์™„๋ฃŒ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋Š” wait ์ƒํƒœ
      • ์™„๋ฃŒ ํ›„ page table ๊ฐฑ์‹  (frame #, valid bit)
      • ํ”„๋กœ์„ธ์Šค๋ฅผ Ready ํ์— ๋„ฃ๊ณ  dispatch
    4. ํŽ˜์ด์ง€ fault ์ฒ˜๋ฆฌ ์™„๋ฃŒ โ†’ ํ”„๋กœ์„ธ์Šค ์žฌํ• ๋‹น
    5. fault๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๋ช…๋ น ์žฌ์‹คํ–‰

Steps in Handling a Page Fault

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€ ์ฐธ์กฐ
        โ†“
ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋””์Šคํฌ์—๋งŒ ์กด์žฌ โ†’ trap ๋ฐœ์ƒ
        โ†“
์šด์˜์ฒด์ œ๊ฐ€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๊ณผ free frame ์กฐํšŒ
        โ†“
๋””์Šคํฌ์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์˜ด (bring in)
        โ†“
page table ๊ฐฑ์‹ 
        โ†“
๋ช…๋ น ์žฌ์‹œ์ž‘

Difficulties in actual HW design

  • ์–ธ์ œ page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

    1. ๋ช…๋ น์–ด fetch ์ค‘: ๋ฌธ์ œ ์—†์Œ
    2. ํ”ผ์—ฐ์‚ฐ์ž fetch ์ค‘: instruction fetch โ†’ decode โ†’ operand fetch ์ค‘ ์žฌ์‹œ์ž‘ ํ•„์š”
    3. ์ตœ์•…์˜ ๊ฒฝ์šฐ: ๋ช…๋ น์–ด๊ฐ€ ์—ฌ๋Ÿฌ ์œ„์น˜๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ
      • ์˜ˆ: block copy ๋ช…๋ น์–ด
        copy count from_address to_address
        
        • to_address๊ฐ€ ๋‘ ๋ธ”๋ก์— ๊ฑธ์ณ ์žˆ์„ ๊ฒฝ์šฐ
        • ๋‘ ๋ฒˆ์งธ ๋ธ”๋ก ์ ‘๊ทผ ์ค‘ fault ๋ฐœ์ƒํ•˜๋ฉด ์ด์ „ ์ž‘์—… Undo ํ•„์š”
  • ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ž„์‹œ ์ฃผ์†Œ/๊ฐ’ ์ €์žฅ์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์ง€์› ํ•„์š”

Performance of Demand Paging

  • ํŽ˜์ด์ง€ ํดํŠธ ํ™•๋ฅ  0โ‰คpโ‰ค1.00 \leq p \leq 1.00โ‰คpโ‰ค1.0

    • p=0p = 0p=0 โ†’ page fault ์—†์Œ
    • p=1p = 1p=1 โ†’ ๋ชจ๋“  ์ฐธ์กฐ๊ฐ€ fault
  • ์œ ํšจ ์ ‘๊ทผ ์‹œ๊ฐ„ (Effective Access Time, EAT) ๊ณ„์‚ฐ:

    EAT=(1โˆ’p)ร—memoryย accessย time+pร—(pageย faultย overhead)EAT = (1 - p) \times \text{memory access time} + p \times (\text{page fault overhead}) EAT=(1โˆ’p)ร—memoryย accessย time+pร—(pageย faultย overhead)

  • ์˜ˆ์‹œ:

    • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„ = 200ns
    • ํ‰๊ท  page fault ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ = 8ms = 8,000,000ns
    • p=11000p = \frac{1}{1000}p=10001โ€‹์ผ ๋•Œ:

      EAT=(1โˆ’11000)ร—200+11000ร—8,000,000=8.2ย ฮผsEAT = (1 - \frac{1}{1000}) \times 200 + \frac{1}{1000} \times 8,000,000 = 8.2~\mu s EAT=(1โˆ’10001โ€‹)ร—200+10001โ€‹ร—8,000,000=8.2ย ฮผs

      โ†’ ์†๋„ ์ €ํ•˜ ์•ฝ 40๋ฐฐ
  • ์ˆœ์ˆ˜ํ•œ demand paging:

    • ์ฐธ์กฐ ์ „๊นŒ์ง€ swap-in ํ•˜์ง€ ์•Š์Œ
    • ์‹œ์ž‘ ์‹œ ์•„๋ฌด ํŽ˜์ด์ง€๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ
  • ์ฐธ์กฐ์˜ ์ง€์—ญ์„ฑ (Locality of reference):

    • ๊ฑฐ์˜ ๋ชจ๋“  workload์—์„œ ๋‚˜ํƒ€๋‚จ
    • ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ํŠน์ • ์†Œ์ˆ˜ ํŽ˜์ด์ง€๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ
    • ์ด ํŠน์„ฑ ๋•๋ถ„์— demand paging์ด ์‹ค์šฉ์ 

What happens if there is no free frame?

  • Page replacement

    • page-fault ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์„ ์ˆ˜์ •ํ•˜์—ฌ ํ”„๋ ˆ์ž„์ด ๋ถ€์กฑํ•  ๋•Œ page replacement ์ˆ˜ํ–‰
    • modify (dirty) bit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ ์ „์†ก ๋น„์šฉ ์ตœ์†Œํ™” (์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋งŒ ๋””์Šคํฌ๋กœ swap-out)
    • ๋…ผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ์™„์„ฑ
      • ๋” ์ž‘์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํฐ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ณต ๊ฐ€๋Šฅ
      • ๊ฐ™์€ ํŽ˜์ด์ง€๊ฐ€ ์‹คํ–‰ ์ค‘ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์žˆ์Œ
  • Page replacement algorithm

    • victim page(๊ต์ฒด ๋Œ€์ƒ ํŽ˜์ด์ง€)๋ฅผ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ชฉํ‘œ: page fault ์ˆ˜ ์ตœ์†Œํ™”

Basic Page Replacement

  1. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ํŽ˜์ด์ง€ ์œ„์น˜ ์ฐพ๊ธฐ
  2. ๋นˆ ํ”„๋ ˆ์ž„ ์ฐพ๊ธฐ
    • ๋นˆ ํ”„๋ ˆ์ž„์ด ์žˆ์œผ๋ฉด โ†’ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
    • ์—†์œผ๋ฉด โ†’ page replacement ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ victim frame ์„ ํƒ
  3. ๋””์Šคํฌ์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ victim frame์— ๋ถˆ๋Ÿฌ์˜ค๊ณ , page table๊ณผ free frame table ์—…๋ฐ์ดํŠธ
  4. ์ค‘๋‹จ๋œ ํ”„๋กœ์„ธ์Šค ์žฌ์‹œ์ž‘

Page-Replacement Algorithms

  • ์ตœ์†Œ page-fault ๋น„์œจ์„ ๊ฐ–๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด์ƒ์ 

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŠน์ • reference string์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ ํ‰๊ฐ€

  • ์˜ˆ์‹œ reference string:

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Graph of Page Faults vs. the Number of Frames

  • ํ”„๋ ˆ์ž„ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด page fault ์ˆ˜๋Š” ๊ฐ์†Œ
  • ๋‹จ, ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹˜ (โ†’ Beladyโ€™s anomaly)

First-In-First-Out (FIFO) Algorithm

  • Reference string:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  • 3 ํ”„๋ ˆ์ž„์ผ ๋•Œ:
1 2 3  โ†’  page fault
4      โ†’  page fault, replace 1
1      โ†’  page fault, replace 2
2      โ†’  page fault, replace 3
5      โ†’  page fault, replace 4
1 2 3 4 5 โ†’ ์ด 9 page faults
  • 4 ํ”„๋ ˆ์ž„์ผ ๋•Œ:
page fault ๋” ๋งŽ์•„์ง โ†’ 10
โ†’ Beladyโ€™s Anomaly (ํ”„๋ ˆ์ž„์ด ๋Š˜์—ˆ๋Š”๋ฐ๋„ page fault๊ฐ€ ์ฆ๊ฐ€)

Optimal Algorithm

  • ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

  • ์˜ˆ์‹œ:

Reference: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
4๊ฐœ์˜ ํ”„๋ ˆ์ž„ ์‚ฌ์šฉ ์‹œ โ†’ ์ด 6 page faults
  • ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์ ์šฉ ๋ถˆ๊ฐ€๋Šฅ (๋ฏธ๋ž˜ ์ฐธ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ํ‰๊ฐ€์˜ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ๋จ

Least Recently Used (LRU) Algorithm

  • Reference string:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
  • LRU ๋ฌธ์ œ์ :
    • LRU๋ฅผ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด:
      • ๊ฐ ํŽ˜์ด์ง€์— ํƒ€์ž„์Šคํƒฌํ”„ ํ•„์š” โ†’ page table traffic ์ฆ๊ฐ€
      • ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ฐพ๋Š” ์—ฐ์‚ฐ ํ•„์š”
      • ์ปค๋„์— ์ ์šฉํ•˜๊ธฐ์—๋Š” ๊ณต๊ฐ„/์‹œ๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํผ
    • โ†’ ๊ทผ์‚ฌ ๋ชจ๋ธ ํ•„์š”

LRU Implementation Algorithms

  • ์นด์šดํ„ฐ ๊ธฐ๋ฐ˜ ๊ตฌํ˜„:

    • ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์นด์šดํ„ฐ ์œ ์ง€
    • CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ๋งˆ๋‹ค ์นด์šดํ„ฐ ์ฆ๊ฐ€
    • ํŽ˜์ด์ง€ ์ฐธ์กฐ ์‹œ ํ˜„์žฌ ์นด์šดํ„ฐ ๊ฐ’์„ ์ €์žฅ
    • ๊ต์ฒด ์‹œ ๊ฐ€์žฅ ์ž‘์€ ์นด์šดํ„ฐ ๊ฐ’์„ ๊ฐ€์ง„ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒ
    • ๋‹จ์ :
      • ๋งค ์ ‘๊ทผ ์‹œ ์นด์šดํ„ฐ ์ ‘๊ทผ ๋น„์šฉ
      • ๊ต์ฒด ์‹œ ์ „์ฒด ๊ฒ€์ƒ‰ ํ•„์š”
      • ์˜ค๋ฒ„ํ—ค๋“œ ํผ
  • ์Šคํƒ ๊ธฐ๋ฐ˜ ๊ตฌํ˜„:

    • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(stack) ํ˜•ํƒœ๋กœ ์œ ์ง€
    • ์ฐธ์กฐ ์‹œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ top์œผ๋กœ ์ด๋™
    • ์ด๋™ ์‹œ ํฌ์ธํ„ฐ 6๊ฐœ ์ˆ˜์ • ํ•„์š”
    • ๊ต์ฒด ์‹œ ๊ฒ€์ƒ‰ ๋ถˆํ•„์š”

Use of a Stack to Record the Most Recent Page References

  • Reference string:
4 7 0 7 1 0 1 2 7 b
  • ์Šคํƒ ์ƒํƒœ ๋ณ€ํ™”:
stack before:
top โ†’ 2
       1
       0
       4

stack after:
top โ†’ 7
       2
       1
       0
       4
  • ์ตœ๊ทผ ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€๊ฐ€ top์— ์œ„์น˜

LRU Approximation Algorithms

  • Reference bit ๋ฐฉ์‹:

    • ๊ฐ ํŽ˜์ด์ง€์— 1๋น„ํŠธ ๋ ˆํผ๋Ÿฐ์Šค ๋น„ํŠธ ํ• ๋‹น (์ดˆ๊ธฐ๊ฐ’ 0)
    • ํŽ˜์ด์ง€๊ฐ€ ์ฐธ์กฐ๋˜๋ฉด ๋น„ํŠธ = 1
    • ๊ต์ฒด ์‹œ reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒ
  • ์ถ”๊ฐ€ ์ฐธ์กฐ ๋น„ํŠธ ๋ฐฉ์‹:

    • ๊ฐ ํŽ˜์ด์ง€์— 8๋น„ํŠธ ํ• ๋‹น
    • ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค reference bit๋ฅผ ๊ฐ€์žฅ ๋†’์€ ๋น„ํŠธ๋กœ ์‹œํ”„ํŠธ
    • ๋‚˜๋จธ์ง€ ๋น„ํŠธ๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‰ฌํ”„ํŠธ (ํ•˜์œ„ ๋น„ํŠธ ์‚ญ์ œ)
    • ์˜ˆ:
      • 00000000: ์ฐธ์กฐ ์•ˆ ๋จ
      • 10101010: 2์ฃผ๊ธฐ๋งˆ๋‹ค ์ฐธ์กฐ๋จ

LRU Approximation Algorithms (๊ณ„์†)

  • Second-Chance (Clock) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • reference bit ์‚ฌ์šฉ
    • ์›ํ˜• ํ๋กœ ํŽ˜์ด์ง€ ์œ ์ง€
    • ํฌ์ธํ„ฐ๊ฐ€ reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์ด๋™
    • reference bit๊ฐ€ 1์ด๋ฉด 0์œผ๋กœ ๋ฆฌ์…‹ํ•˜๊ณ  ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™
    • ์‚ฌ์‹ค์ƒ FIFO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€์— ๊ธฐํšŒ ํ•œ ๋ฒˆ ๋” ์คŒ
  • ํŠน์ง•:

    • ํฌ์ธํ„ฐ๋Š” ์ˆœํ™˜์ ์œผ๋กœ ํšŒ์ „
    • 1์ด๋ฉด bit๋งŒ 0์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์ง€๋‚˜์นจ
    • 0์ด๋ฉด victim์œผ๋กœ ์„ ํƒ
  • ํ–ฅ์ƒ๋œ Second-Chance ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • Reference bit + Modify bit ์กฐํ•ฉ
    • ์šฐ์„ ์ˆœ์œ„:
      • Not-Referenced + Not-Modified: ์ตœ์šฐ์„ ์œผ๋กœ ๊ต์ฒด
      • Referenced + Modified: ๋งˆ์ง€๋ง‰ ์šฐ์„ ์ˆœ์œ„

Second-Chance (Clock) Page-Replacement Algorithm

  • ์‹œ๊ฐ์  ์˜ˆ์‹œ:

(a)

reference bit: 1 1 0 1 0
next victim โ†’ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํ•œ ์นธ์”ฉ ์ด๋™ํ•˜๋ฉฐ ๊ฒ€์‚ฌ

(b)

reference bit๊ฐ€ 1์ธ ๊ฒฝ์šฐ๋Š” ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ์ง„ํ–‰
  • ํ•œ ๋ฐ”ํ€ด ๋Œ๋ฉด์„œ ์ ์ ˆํ•œ ๊ต์ฒด ๋Œ€์ƒ ์„ ํƒ

Counting Algorithms

  • ๊ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์ฐธ์กฐ ํšŸ์ˆ˜ ์นด์šดํ„ฐ๋ฅผ ์œ ์ง€ํ•จ

  • LFU (Least Frequently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด
  • MFU (Most Frequently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ๊ฐ€์žฅ ์ ๊ฒŒ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋Š” ์ตœ๊ทผ์— ๋ถˆ๋Ÿฌ์˜จ ํ›„ ์•„์ง ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฐ€์ •์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ,
    • ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ํŽ˜์ด์ง€๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๊ฐ€์žฅ ์ ์€ ํŽ˜์ด์ง€๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ

Virtual Memory & Page Replacement - ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜ ์š”์•ฝ

Frame Allocation๊ณผ Priority

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์— ํ”„๋ ˆ์ž„ ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ• ์ง€๋Š” OS ์ •์ฑ…์— ๋‹ฌ๋ ค ์žˆ์Œ
  • ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์ •์ฑ…(priority allocation): ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค์— ํ”„๋ ˆ์ž„์„ ๋” ๋งŽ์ด ํ• ๋‹น
    • ํ•˜์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ๋งŽ์ด ์ค„ ํ•„์š”๋Š” ์—†์Œ
  • ์ค‘์š”ํ•œ ๋ชฉํ‘œ๋Š” page fault๋ฅผ ์ค„์ด๋Š” ๊ฒƒ
    • ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์„ ์‹๋ณ„ํ•ด์„œ ํ•ด๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜๋งŒํผ๋งŒ ํ• ๋‹นํ•ด์ฃผ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ

Working Set Model

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ์„ working set์ด๋ผ ๋ถ€๋ฆ„
  • ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จ
  • ์ด working set์„ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•ด์•ผ page fault๊ฐ€ ์ค„์–ด๋“ฆ
  • ๋งŒ์•ฝ ์ „์ฒด working set์„ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค๋ฉด suspend๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•จ

Thrashing

  • ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ๋ชปํ•ด ์ง€์†์ ์œผ๋กœ page fault ๋ฐœ์ƒ
  • I/O ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๋ฉฐ CPU utilization์€ ๊ฐ์†Œ
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋ ˆ์ž„์„ ๋นผ์•—์•„์•ผ ํ•ด์„œ ์•…ํ™”๋จ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • working set์ด ๋ฉ”๋ชจ๋ฆฌ์— ํ•ญ์ƒ ์œ ์ง€๋˜๋„๋ก ๋ณด์žฅ
    • ๋˜๋Š” ์ผ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ suspend

Locality

  • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ(temporal locality): ์ตœ๊ทผ ์ฐธ์กฐํ•œ ํŽ˜์ด์ง€๋Š” ๋‹ค์‹œ ์ฐธ์กฐํ•  ํ™•๋ฅ  ๋†’์Œ
  • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ(spatial locality): ์ฐธ์กฐํ•œ ํŽ˜์ด์ง€ ๊ทผ์ฒ˜์˜ ํŽ˜์ด์ง€๋„ ์ž์ฃผ ์ฐธ์กฐ๋จ

Page Fault Frequency (PFF)

  • page fault์˜ ๋นˆ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ”„๋ ˆ์ž„ ์žฌ๋ถ„๋ฐฐ
  • ์ƒํ•œ์„ ์„ ๋„˜์œผ๋ฉด ํ”„๋ ˆ์ž„ ์ถ”๊ฐ€, ํ•˜ํ•œ์„ ๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด ํ”„๋ ˆ์ž„ ํšŒ์ˆ˜
  • working set๋ณด๋‹ค ์ •ํ™•๋„๋Š” ๋‚ฎ์ง€๋งŒ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํ›จ์”ฌ ๋‚ฎ์Œ

Global vs Local Replacement

  • Global replacement: ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋ ˆ์ž„๋„ ๋นผ์•—์•„์˜ฌ ์ˆ˜ ์žˆ์Œ
  • Local replacement: ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ ํ”„๋ ˆ์ž„๋งŒ ๊ต์ฒด ๊ฐ€๋Šฅ
  • Local replacement๋งŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ thrashing ๋ฐฉ์ง€ ์–ด๋ ค์›€

Copy-On-Write

  • ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ 
  • write๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๊ฐ๊ฐ ์†Œ์œ ํ•˜๋„๋ก ํ•จ
  • xv6์—์„œ๋Š” rsw ๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ COW ์—ฌ๋ถ€ ํ‘œ์‹œ
  • page fault๋ฅผ ํ†ตํ•ด write ์‹œ์ ์— ์ƒˆ๋กœ ํ• ๋‹น

Memory-Mapped Files

  • ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ง์ ‘ ๋งคํ•‘
  • I/O ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ„์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์„ฑ๋Šฅ ์ด์ :
    • ์ฒซ ์ ‘๊ทผ ์‹œ page fault๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ
    • ์ดํ›„ ์—ฐ์‚ฐ์€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ๋น ๋ฆ„
    • ๋””์Šคํฌ I/O ํšŸ์ˆ˜ ๊ฐ์†Œ

Page Size vs TLB Reach

  • TLB Reach: TLB๊ฐ€ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
  • page size๊ฐ€ ์ปค์ง€๋ฉด TLB Reach ์ฆ๊ฐ€
  • ๋‹ค๋‹จ๊ณ„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ depth ๊ฐ์†Œ
  • ๋‹จ์ :
    • ๋‚ด๋ถ€ ๋‹จํŽธํ™”(internal fragmentation)
    • ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋กœ๋”ฉ๋  ์ˆ˜ ์žˆ์Œ
  • ์žฅ์ :
    • Disk I/O ํšจ์œจ ์ฆ๊ฐ€
    • ์ €์žฅ์žฅ์น˜ ์ ‘๊ทผ ์„ฑ๋Šฅ ํ–ฅ์ƒ

xv6 Disk Layer, Buffer Cache, Logging

๊ตฌ์กฐ

  • xv6์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต: 7๋‹จ๊ณ„
    • boot sector
    • superblock
    • log
    • bitmap
    • inode
    • data block
    • buffer cache

Buffer Cache

  • disk block์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ ์ €์žฅ
  • ๊ตฌ์กฐ์ฒด๋กœ ๊ด€๋ฆฌ๋จ (bcache)
  • LRU ๋ฐฉ์‹์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๊ด€๋ฆฌ
  • binit, bread, bget, brelease ํ•จ์ˆ˜ ์‚ฌ์šฉ

Logging

  • log๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ ๋’ค commit
  • crash ๋Œ€๋น„ ๋ณต๊ตฌ ๊ฐ€๋Šฅ
  • commit ์‹œ:
    • dirty block๋“ค์„ log์— ๋จผ์ € ์ž‘์„ฑ
    • ์ดํ›„ ์‹ค์ œ ์œ„์น˜์— ๋ฎ์–ด์”€
    • log header ์ง€์›€

Transaction

  • log์— ์“ธ ์ž‘์—… ๋‹จ์œ„
  • begin_op โ†’ ์ž‘์—… ์ˆ˜ํ–‰ โ†’ end_op โ†’ commit
  • commit ์ง€์  ๊ธฐ์ค€์œผ๋กœ ๋ณต๊ตฌ ์—ฌ๋ถ€ ๊ฒฐ์ •
  • group commit ๋ฐฉ์‹์œผ๋กœ ํšจ์œจ์„ฑ ํ™•๋ณด

Project 3 ๊ณผ์ œ ์•ˆ๋‚ด

1. Copy-On-Write

  • fork() ์‹œ ํŽ˜์ด์ง€ ๋ณต์‚ฌ ๋Œ€์‹  ๊ณต์œ 
  • write ๋ฐœ์ƒ ์‹œ page fault๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ ๋ณต์‚ฌ
  • rsw ๋น„ํŠธ๋กœ COW ํ‘œ์‹œ
  • reference count ๊ด€๋ฆฌ ํ•„์š”

2. Large File Support

  • ๊ธฐ์กด 12 direct block โ†’ 11 direct + 1 double indirect block
  • ์ตœ๋Œ€ 64MB ํŒŒ์ผ ์ง€์›
  • maxfile, NDIRECT, NINDIRECT ์ˆ˜์ •
  • bmap, itrunc, create ๋“ฑ ํ•จ์ˆ˜ ์ˆ˜์ •

3. Symbolic Link

  • ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜๋Š” ๋งํฌ
  • T_SYMLINK ํƒ€์ž… ์ถ”๊ฐ€
  • symlink system call ๊ตฌํ˜„
  • open ์‹œ ๊ฒฝ๋กœ ์ฐธ์กฐ
  • ๋ฌดํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ cycle check ํ•„์š”
  • ์‹ค์ œ ๋Œ€์ƒ ํŒŒ์ผ์ด ์—†์–ด๋„ ๋งํฌ ์ƒ์„ฑ ๊ฐ€๋Šฅ

๊ธฐํƒ€ ์ด์Šˆ

์–ธ์–ด์— ๋”ฐ๋ผ page fault ์ˆ˜ ์ฐจ์ด

  • C๋Š” row-major
  • Fortran์€ column-major
  • ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์ ‘๊ทผ โ†’ page fault ์ฐจ์ด

TLB

  • TLB๋Š” address ๋ณ€ํ™˜์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰
  • TLB Reach = TLB entry ์ˆ˜ ร— page size
  • page size๊ฐ€ ํด์ˆ˜๋ก TLB Reach ์ฆ๊ฐ€
์ตœ๊ทผ ์ˆ˜์ •:: 25. 6. 19. ์˜คํ›„ 8:26
Contributors: kmbzn
Prev
9. Memory Management(2)
Next
11. Virtual Memory(2)

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License