• 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)

11. Virtual Memory(2)

Allocation of Frames

  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— page frame์„ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฐฐํ•  ๊ฒƒ์ธ๊ฐ€?

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œํ•œ์˜ ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ ํ•„์š”ํ•จ

    • HW ์˜ˆ: IBM 370 โ†’ SS MOVE ๋ช…๋ น์–ด ์‹คํ–‰์— 6ํŽ˜์ด์ง€ ํ•„์š”
      • instruction 6๋ฐ”์ดํŠธ โ†’ 2ํŽ˜์ด์ง€์— ๊ฑธ์น  ์ˆ˜ ์žˆ์Œ
      • source 2ํŽ˜์ด์ง€, destination 2ํŽ˜์ด์ง€ ํ•„์š”
    • SW ๊ด€์ :
      • Loop ๋‚ด์—์„œ page๋ฅผ ์ถฉ๋ถ„ํžˆ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌ
      • ๊ณ ๊ฐ์˜ loop๋งˆ๋‹ค page fault ๋ฐœ์ƒ โ†’ CPU/disk I/O ๋น„์šฉ ์ƒ์Šน
  • ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ถ„๋ฐฐ ๋ฐฉ์‹:

    • fixed allocation
    • priority allocation

Fixed Allocation

  • Equal allocation (๊ท ๋“ฑ ๋ถ„๋ฐฐ):

    • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ ์ˆ˜์˜ frame ํ• ๋‹น
    • ์˜ˆ: ์ด 100 frames, 5๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค โ†’ ๊ฐ 20๊ฐœ์”ฉ ํ• ๋‹น
  • Proportional allocation (๋น„๋ก€ ๋ถ„๋ฐฐ):

    • ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ frame์„ ๋ถ„๋ฐฐ
    • ์ˆ˜์‹:
      • ai=siSร—ma_i = \frac{s_i}{S} \times maiโ€‹=Ssiโ€‹โ€‹ร—m
      • ์˜ˆ:
        • m=64m = 64m=64, s1=10s_1 = 10s1โ€‹=10, s2=127s_2 = 127s2โ€‹=127, S=137S = 137S=137
        • a1=10137ร—64โ‰ˆ5a_1 = \frac{10}{137} \times 64 \approx 5a1โ€‹=13710โ€‹ร—64โ‰ˆ5
        • a2=127137ร—64โ‰ˆ59a_2 = \frac{127}{137} \times 64 \approx 59a2โ€‹=137127โ€‹ร—64โ‰ˆ59

Priority Allocation

  • ํ”„๋กœ์„ธ์Šค **์šฐ์„ ์ˆœ์œ„(priority)**์— ๋”ฐ๋ผ ๋น„๋ก€์ ์œผ๋กœ frame์„ ํ• ๋‹น

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๋Š” ๋” ๋งŽ์€ frame์„ ์ œ๊ณต
    โ†’ ๋” ๋นจ๋ฆฌ ์ข…๋ฃŒ๋˜๋„๋ก ํ•จ (I/O ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ฐ์†Œ โ†’ ์‹คํ–‰ ์‹œ๊ฐ„ ๋‹จ์ถ•)

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ page fault ๋ฐœ์ƒ ์‹œ:

    • ์ž์‹ ์˜ frame ์ค‘ ํ•˜๋‚˜์—์„œ victim ์„ ํƒ
    • ๋˜๋Š” ๋” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ”„๋กœ์„ธ์Šค์˜ frame ์ค‘ ํ•˜๋‚˜์—์„œ ์„ ํƒ

Global vs. Local Replacement

  • Global replacement:

    • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ frame ์ค‘์—์„œ ๊ต์ฒดํ•  frame์„ ์„ ํƒ
    • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ frame์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Œ
  • Local replacement:

    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ frame ์•ˆ์—์„œ๋งŒ ๊ต์ฒด

Thrashing

  • ํ”„๋กœ์„ธ์Šค์— ์ถฉ๋ถ„ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ page fault rate ๊ธ‰์ฆ

  • ๊ฒฐ๊ณผ:

    • CPU ์‚ฌ์šฉ๋ฅ  ๊ธ‰๊ฐ
    • ์šด์˜์ฒด์ œ๋Š” multiprogramming degree๋ฅผ ๋Š˜๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ž˜๋ชป ํŒ๋‹จ
    • ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์ถ”๊ฐ€ โ†’ ์ƒํ™ฉ ์•…ํ™”
  • Thrashing: ํŽ˜์ด์ง€ ์Šค์™‘์— ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์†Œ๋ชจ
    โ†’ CPU๋Š” ๋Œ€๊ธฐ๋งŒ ํ•˜๋ฉฐ throughput ๋งค์šฐ ๋‚ฎ์•„์ง

์˜ˆ์‹œ ์ฝ”๋“œ:

main() {
  for (i = 1; i < 100000; i++) {
    A = B + X;
  }
}

Thrashing Diagram

  • ๊ทธ๋ž˜ํ”„: CPU Utilization vs. Degree of Multiprogramming

  • ์ฒ˜์Œ์—๋Š” ์ฆ๊ฐ€ โ†’ ์ผ์ • ์ง€์  ์ดํ›„ ๊ธ‰๊ฒฉํžˆ ๊ฐ์†Œ (thrashing ๋ฐœ์ƒ)

  • ์™œ paging์ด ํšจ๊ณผ์ ์ธ๊ฐ€?

    • Locality model
      • ํ”„๋กœ์„ธ์Šค๋Š” ์ง€์—ญ์ ์œผ๋กœ๋งŒ ์ ‘๊ทผ
      • locality๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฐ”๋€œ
  • ์™œ thrashing์ด ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

    • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ locality ์ดํ•ฉ > ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ• ๋‹น๋œ ๊ณต๊ฐ„

Locality

  • ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ๋Š” **๊ณ ๋„์˜ ์ง€์—ญ์„ฑ(locality)**์„ ๊ฐ€์ง

  • ์ž„์˜ ์‹œ๊ฐ„ ฮ” ๋‚ด์— ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ๋จ

  • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ (Temporal Locality):

    • ์ตœ๊ทผ ์ฐธ์กฐ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์—๋„ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ
    • ์˜ˆ: loop, subroutine, stack
  • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ (Spatial Locality):

    • ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฐธ์กฐ๋˜๋ฉด ๊ทธ ์ฃผ๋ณ€ ๋ฉ”๋ชจ๋ฆฌ๋„ ์ž์ฃผ ์ฐธ์กฐ๋จ
    • ์˜ˆ: ๋ฐฐ์—ด ํƒ์ƒ‰, ๋ช…๋ น์–ด ์ˆœ์ฐจ ์‹คํ–‰

Locality In a Memory-Reference Pattern

  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ๋ฅผ ์‹œ๊ฐ„ ์ถ•์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ž˜ํ”„
  • ํŠน์ • ์ง€์—ญ์ด ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐ๋จ โ†’ locality ์‹œ๊ฐํ™”

Working-Set Model

  • ฮ”: working-set window

    • ์ผ์ •ํ•œ ์ˆ˜์˜ ์ตœ๊ทผ ํŽ˜์ด์ง€ ์ฐธ์กฐ (์˜ˆ: ์ตœ๊ทผ 10,000 instruction)
  • WS(t,ฮ”)={์ตœ๊ทผย ฮ”ย ๋™์•ˆย ์ฐธ์กฐ๋œย ํŽ˜์ด์ง€๋“ค}WS(t, \Delta) = \{ \text{์ตœ๊ทผ } \Delta \text{ ๋™์•ˆ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋“ค} \} WS(t,ฮ”)={์ตœ๊ทผย ฮ”ย ๋™์•ˆย ์ฐธ์กฐ๋œย ํŽ˜์ด์ง€๋“ค}

    • ฮ”๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด โ†’ locality๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜์ง€ ๋ชปํ•จ
    • ฮ”๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด โ†’ ์—ฌ๋Ÿฌ locality๊ฐ€ ํฌํ•จ๋˜์–ด ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
    • ฮ” โ†’ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ locality ์ง‘ํ•ฉ์„ ๊ฒฐ์ •
  • $ D = \sum WS_i $: ์ „์ฒด ํ”„๋กœ์„ธ์Šค์˜ working set frame ์ˆ˜

  • $ m = \text{๊ฐ€์šฉ ํ”„๋ ˆ์ž„ ์ˆ˜} $

    • D > m ์ด๋ฉด โ†’ thrashing ๋ฐœ์ƒ
  • ์ •์ฑ…:

    • D > m์ด๋ฉด โ†’ ํ”„๋กœ์„ธ์Šค ์ผ๋ถ€๋ฅผ suspend
    • โ†’ ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •๋„(MPD) ๊ฒฐ์ •

Working-Set model (์˜ˆ์‹œ)

  • page reference table:
. . 2 6 1 5 7 7 7 7 5 1 1 2 6 3 4 4 3 4 4 3 3 4 . . .
  • ฮ” ๋™์•ˆ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€๋“ค:
WS(tโ‚) = {1, 2, 5, 6, 7}
WS(tโ‚‚) = {3, 4}

Working-Set Model (์„ค๋ช…)

  • WS(t, ฮ”): ฮ” ์‹œ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€ ์ง‘ํ•ฉ

  • ๋งŒ์•ฝ ํŽ˜์ด์ง€ P๊ฐ€ ฮ” ๊ธฐ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐ๋˜์—ˆ๋‹ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€

    • ์ฆ‰, WS(t)์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค
  • WS(t)์˜ ์›์น™:

    • WS์— ํฌํ•จ๋œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด swap-out ๋Œ€์ƒ
    • suspend ์—ฌ๋ถ€๋Š” WS๊ฐ€ ๋ชจ๋‘ ๋ณด์žฅ๋˜๋Š”๊ฐ€ ์—ฌ๋ถ€๋กœ ๊ฒฐ์ •๋จ

Keeping Track of the Working Set

  • ์‹ค์ œ ๊ตฌํ˜„์€ ๋ณต์žก:

    • ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ตœ๊ทผ ์ฐธ์กฐ ์‹œ๊ฐ„ ์ €์žฅ โ†’ ๊ณต๊ฐ„, ์—ฐ์‚ฐ ๋น„์šฉ ํผ
  • ๊ทผ์‚ฌ ๋ชจ๋ธ:

    • Interval timer + reference bit
  • ์˜ˆ:

    • ฮ” = 10K
    • 5K time unit๋งˆ๋‹ค interrupt ๋ฐœ์ƒ
    • ํŽ˜์ด์ง€๋งˆ๋‹ค 2๋น„ํŠธ ์œ ์ง€
    • interrupt๋งˆ๋‹ค copy & reset
    • ์ ์–ด๋„ 1 ๋น„ํŠธ๋ผ๋„ 1์ด๋ฉด โ†’ working set์— ํฌํ•จ
  • ๋ฌธ์ œ์ :

    • ์™„๋ฒฝํ•œ ์ถ”์ ์€ ์–ด๋ ค์›€
    • ๊ฐœ์„  ์˜ˆ: 10๋น„ํŠธ๋กœ ์ถ”์  + 1000 time unit๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ
  • ์งˆ๋ฌธ:

    • ฮ”๋Š” ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ• ๊นŒ?

Page-Fault Frequency Scheme

  • ํŽ˜์ด์ง€ ํดํŠธ์œจ์— ๋”ฐ๋ผ ํ”„๋ ˆ์ž„ ์ˆ˜๋ฅผ ์กฐ์ ˆ
page fault rate
  โ†‘
  โ”‚      upper bound (๊ฐ์†Œํ•ด์•ผ ํ•จ)
  โ”‚       โ†˜
  โ”‚         โ†˜
  โ”‚           โ†˜
  โ”‚             โ†˜
  โ”‚ lower bound (์ฆ๊ฐ€ํ•ด๋„ ๋จ)
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ number of frames
  • "ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ" page fault rate ๋ฒ”์œ„๋ฅผ ์„ค์ •

  • ์‹ค์ œ fault rate๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์œผ๋ฉด โ†’ ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋ ˆ์ž„ ์ˆ˜ ๊ฐ์†Œ

  • ๋„ˆ๋ฌด ๋†’์œผ๋ฉด โ†’ ํ”„๋กœ์„ธ์Šค์˜ ํ”„๋ ˆ์ž„ ์ˆ˜ ์ฆ๊ฐ€

  • Working set ๋ฐฉ์‹: ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ฐธ์กฐ๋œ ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ์กฐ์ ˆ

  • PFF ๋ฐฉ์‹: page fault ๋ฐœ์ƒ ์‹œ์  ๊ธฐ์ค€์œผ๋กœ ์กฐ์ ˆ

Other Benefits of VM: Process Creation

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์ œ๊ณต:
    • Copy-on-Write (COW)
    • Memory-Mapped Files

Copy-on-Write

  • Copy-on-Write (COW):

    • ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ดˆ๊ธฐ์—๋Š” ๊ณต์œ ํ•จ
    • ์–ด๋А ํ•œ ์ชฝ์ด ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ โ†’ ๊ทธ๋•Œ ๋ณต์‚ฌ๋จ
  • ์žฅ์ :

    • ์‹ค์ œ๋กœ ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋งŒ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์ด ๋งค์šฐ ํšจ์œจ์ ์ž„

Before Process 1 Modifies Page C

processโ‚           physical memory           processโ‚‚
   โ”‚                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”‚
   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page A โ—€โ”€โ”€โ”ค page A โ”œโ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page B โ—€โ”€โ”€โ”ค page B โ”œโ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page C โ—€โ”€โ”€โ”ค page C โ”œโ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

After Process 1 Modifies Page C

processโ‚           physical memory           processโ‚‚
   โ”‚                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”‚
   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page A โ—€โ”€โ”€โ”ค page A โ”œโ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page B โ—€โ”€โ”€โ”ค page B โ”œโ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  page C     page C โ—€โ”€โ”€โ–ถโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ  copy of page C

Memory-Mapped Files

  • ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ํŒŒ์ผ I/O:

    • ํŒŒ์ผ I/O๋ฅผ ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ฒ˜๋Ÿผ ๋‹ค๋ฃธ
    • ๋””์Šคํฌ ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์— ๋งคํ•‘ํ•จ์œผ๋กœ์จ ๊ฐ€๋Šฅ
  • ํŒŒ์ผ์€ demand paging ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋จ:

    • ์ดˆ๊ธฐ์—๋Š” ํŒŒ์ผ์˜ ํŽ˜์ด์ง€ ํฌ๊ธฐ ๋‹จ์œ„ ์ผ๋ถ€๋งŒ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    • ์ดํ›„ ์ ‘๊ทผ์€ ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌ
  • ์žฅ์ :

    • ํŒŒ์ผ ์ ‘๊ทผ์„ ๊ฐ„์†Œํ™” (read/write ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ)
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผ ํŒŒ์ผ ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Œ

Memory Mapped Files

  • ํ”„๋กœ์„ธ์Šค A์™€ B๊ฐ€ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ๊ณต์œ 
  • ๋””์Šคํฌ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์— ๋งคํ•‘ํ•˜์—ฌ, ์ ‘๊ทผ ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ
  • ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘ ๊ธฐ๋ฒ•์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํŽ˜์ด์ง€ ๊ณต์œ ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

Other Issues โ€“ Prepaging

  • Prepaging: ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ ๋‹ค๋Ÿ‰์˜ page fault๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด,

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ค์ œ๋กœ ์ฐธ์กฐํ•˜๊ธฐ ์ „์— ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œ
  • ๋ฌธ์ œ:

    • ๋ถˆํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„
  • ๋ชจ๋ธ:

    • s ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ–ˆ๊ณ , ๊ทธ ์ค‘ d ํŽ˜์ด์ง€๋งŒ ์‚ฌ์šฉ๋˜์—ˆ์„ ๋•Œ
    • ๋น„์šฉ ์ ˆ๊ฐ ์กฐ๊ฑด:

      costย ofย sย ย pageย faultsย saved>sร—(1โˆ’d)\text{cost of s \text{ page faults saved}} > s \times (1 - d) costย ofย sย ย pageย faultsย saved>sร—(1โˆ’d)

  • d๊ฐ€ 1์— ๊ฐ€๊นŒ์šฐ๋ฉด prepaging์ด ์œ ๋ฆฌํ•จ

Other Issues โ€“ Page Size

  • ํŽ˜์ด์ง€ ํฌ๊ธฐ ์„ ํƒ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ:

    • ๋‚ด๋ถ€ ๋‹จํŽธํ™”
    • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ
    • ๋””์Šคํฌ ์ „์†ก ํšจ์œจ (seek/ํšŒ์ „ vs. ๋ธ”๋ก ์ „์†ก)
    • I/O ๋นˆ๋„
    • ์ง€์—ญ์„ฑ ํ–ฅ์ƒ
  • ํŠธ๋ Œ๋“œ:

    • ํŽ˜์ด์ง€ ํฌ๊ธฐ ์ฆ๊ฐ€
    • CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์†๋„ ์ฆ๊ฐ€๋กœ ์ธํ•ด ํฐ ํŽ˜์ด์ง€๊ฐ€ ์œ ๋ฆฌํ•ด์ง
    • ๋‹จ, page fault์˜ ๋น„์šฉ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ปค์ง€๊ณ  ์žˆ์Œ

Other Issues โ€“ TLB Reach

  • TLB Reach:

    • TLB๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘
    • TLBย Reach=TLBย Sizeร—Pageย Size\text{TLB Reach} = \text{TLB Size} \times \text{Page Size} TLBย Reach=TLBย Sizeร—Pageย Size

  • ์ด์ƒ์  ์กฐ๊ฑด:

    • ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ working set์ด TLB์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์ด์ƒ์ 
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด TLB miss ์ฆ๊ฐ€
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • ํŽ˜์ด์ง€ ํฌ๊ธฐ ์ฆ๊ฐ€
      • ๋‹จ, ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฐ ํŽ˜์ด์ง€๋ฅผ ์š”๊ตฌํ•˜์ง€๋Š” ์•Š์Œ โ†’ ๋‹จํŽธํ™” ์šฐ๋ ค
    • ์—ฌ๋Ÿฌ ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€ ์ œ๊ณต
      • ํฐ ํŽ˜์ด์ง€๋ฅผ ์š”๊ตฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์œ ๋ฆฌ

Other Issues โ€“ Program Structure

  • ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๊ฐ€ page fault ์ˆ˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

  • ์˜ˆ:

int data[128][128]; // row๋‹น ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ์‚ฌ์šฉ
  • Program 1:
for (j = 0; j < 128; j++)
  for (i = 0; i < 128; i++)
    data[i][j] = 0;

โ†’ 128 ร— 128 = 16,384 page faults

  • Program 2:
for (i = 0; i < 128; i++)
  for (j = 0; j < 128; j++)
    data[i][j] = 0;

โ†’ 128 page faults
โ†’ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ˆœ์„œ๋งŒ ๋‹ฌ๋ผ์ ธ๋„ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํผ

Other Issues โ€“ I/O Interlock

  • I/O Interlock: ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ž ๊ธˆ(lock)๋˜์–ด์•ผ ํ•  ๊ฒฝ์šฐ

  • ์˜ˆ:

    • ์žฅ์น˜์—์„œ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณต์‚ฌํ•˜๋Š” ์ค‘์ธ ํŽ˜์ด์ง€๋Š” ๊ต์ฒด๋˜๋ฉด ์•ˆ ๋จ
    • โ†’ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ page replacement์˜ victim์œผ๋กœ ์„ ํƒํ•˜๋ฉด ์•ˆ ๋จ
  • ํ•ด๊ฒฐ:

    • ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ ์ •(lock) ์ƒํƒœ๋กœ ์œ ์ง€

๊ต์ˆ˜๋‹˜ ๊ฐ•์˜ ์š”์•ฝ

Address Space์˜ ์ดˆ๊ธฐ ๊ตฌ์กฐ

  • ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ์‹œ address space ๋Œ€๋ถ€๋ถ„์ด ๋น„์–ด ์žˆ์Œ
  • ์ดˆ๊ธฐ์—๋Š” heap๊ณผ stack๋„ ์—†์Œ
  • function call๋กœ stack์ด ์ƒ์„ฑ๋˜๊ณ  heap๋„ ์ ์  ํ™•์žฅ๋จ
  • Contiguous Allocation์—์„œ๋Š” ๊ฐ€์šด๋ฐ ๋นˆ ๊ณต๊ฐ„๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•ด์•ผ ํ–ˆ์Œ

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

  • ๋นˆ ๊ณต๊ฐ„์„ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š์•„๋„ ๋จ
  • ๋น„์–ด์žˆ๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋Œ€ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐฉ์ง€
  • Virtual Memory์™€ Demand Paging ๊ฐœ๋…์ด ์—ฌ๊ธฐ์„œ ์‹œ์ž‘

Logical Address vs Physical Address

Address ๋ถ„๋ฆฌ ๊ฐœ๋…

  • Logical: ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ€์ƒ์˜ ์ฃผ์†Œ
  • Physical: ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ์ฃผ์†Œ
  • ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ๋ถ„๋ฆฌ๋Š” ์šด์˜์˜ ์œ ์—ฐ์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋จ

์šด์˜์ฒด์ œ์˜ ์œ ์—ฐ์„ฑ ์˜ˆ์‹œ

  • ์ง‘์ฃผ์ธ: ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค
  • ์ง‘ ๊ด€๋ฆฌ์ธ: ์šด์˜์ฒด์ œ
  • ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ์˜ฌ๋ผ์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ (๊ฐ€์งœ ๋•…)

Demand Paging

๊ฐœ๋…

  • ์‹ค์ œ๋กœ CPU๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆผ
  • ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„ ๋น ๋ฆ„
  • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋” ํฐ ์ฃผ์†Œ ๊ณต๊ฐ„๋„ ์šด์˜ ๊ฐ€๋Šฅ

Fork ๋ฐ ๊ณต์œ 

  • page table์„ ๊ณต์œ ํ•จ์œผ๋กœ์จ fork ์†๋„ ํ–ฅ์ƒ
  • Copy-On-Write ๊ธฐ๋ฐ˜์œผ๋กœ ํŽ˜์ด์ง€ ์ˆ˜์ • ์‹œ ๋ถ„ํ™”

Page Fault Handler

์ฒ˜๋ฆฌ ํ๋ฆ„

  1. CPU๊ฐ€ ์ ‘๊ทผ โ†’ ํŽ˜์ด์ง€ ์—†์Œ โ†’ page fault ๋ฐœ์ƒ
  2. OS๊ฐ€ free frame ํƒ์ƒ‰
  3. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋””์Šคํฌ์—์„œ ์ฝ์–ด์˜ด
  4. page table ๊ฐฑ์‹  ๋ฐ valid ๋น„ํŠธ ์„ค์ •
  5. fault ๋ฐœ์ƒํ•œ instruction ์žฌ์‹œ์ž‘

Page Replacement Algorithm

Optimal (์ด๋ก ์ )

  • ์•ž์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ฑฐ
  • ์‹ค์ œ ๊ตฌํ˜„์€ ๋ถˆ๊ฐ€ (๋ฏธ๋ž˜ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅ)

Locality ๊ธฐ๋ฐ˜ ์ ‘๊ทผ

  • ์ตœ๊ทผ์— ์ ‘๊ทผ๋œ ํŽ˜์ด์ง€๋Š” ์•ž์œผ๋กœ๋„ ์ ‘๊ทผ๋  ํ™•๋ฅ  ๋†’์Œ
  • LRU: ์ตœ๊ทผ ๊ฐ€์žฅ ์˜ค๋ž˜์ „์— ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€ ์ œ๊ฑฐ

LRU์˜ ๊ตฌํ˜„ ๋ฌธ์ œ

  • Timestamp ๊ธฐ๋ฐ˜ ๊ตฌํ˜„์€ overhead ํผ
  • Memory reference ๋งˆ๋‹ค ์‹œ๊ฐ„ ๊ธฐ๋ก ํ•„์š”
  • logical counter๋กœ๋„ ์—ฌ์ „ํžˆ ์ˆœ์„œ ํŒ๋ณ„ ์–ด๋ ค์›€

LRU Approximation

Reference Bit ๊ธฐ๋ฐ˜ ๊ธฐ๋ฒ•

  • ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค 1๋น„ํŠธ ์‚ฌ์šฉ (0 ๋˜๋Š” 1)
  • ์ฃผ๊ธฐ์ ์œผ๋กœ 0์œผ๋กœ ์ดˆ๊ธฐํ™”, ์ฐธ์กฐ ์‹œ 1๋กœ ๋ณ€๊ฒฝ
  • Page ๊ต์ฒด ์‹œ 0์ธ ํŽ˜์ด์ง€๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒ

Enhanced Approximation

  • Reference bit ๊ธฐ๋ก์„ ๋‹ค๋น„ํŠธ๋กœ ํ™•์žฅ (8๋น„ํŠธ ๋“ฑ)
  • ๊ณผ๊ฑฐ ์ฃผ๊ธฐ ์ฐธ์กฐ ์ด๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆœ์„œ ์œ ์ถ” ๊ฐ€๋Šฅ

Second-Chance (Clock Algorithm)

  • ํŽ˜์ด์ง€๋ฅผ ์›ํ˜• ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ
  • victim ํฌ์ธํ„ฐ๊ฐ€ reference bit๊ฐ€ 0์ธ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒ
  • 1์ธ ๊ฒฝ์šฐ bit๋งŒ 0์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋‹ค์Œ ํŽ˜์ด์ง€ ํƒ์ƒ‰
  • overhead ์ ๊ณ  locality๋„ ์ž˜ ๋ฐ˜์˜ํ•จ

LFU (Least Frequently Used)

  • ์ ‘๊ทผ ๋นˆ๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ํŽ˜์ด์ง€ ์ œ๊ฑฐ
  • LRU + LFU ๊ฒฐํ•ฉ ๊ธฐ๋ฒ•๋„ ์กด์žฌ
  • Prepaging์„ ํ†ตํ•œ ์ดˆ๊ธฐ page fault ์™„ํ™”
์ตœ๊ทผ ์ˆ˜์ •:: 25. 6. 19. ์˜คํ›„ 8:26
Contributors: kmbzn
Prev
10. Virtual Memory(1)
Next
12. File System

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

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