ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

1. Page reference string

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— Page reference string ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค. CPU๊ฐ€ ๋‚ด๋Š” ์ฃผ์†Œ๋Š” ์ด์ง„์ˆ˜ ๋‹จ์œ„์ด์ง€๋งŒ, ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ง„์ˆ˜ ์ฃผ์†Œ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•ด์•ผํ•œ๋‹ค.

|CPU ๋…ผ๋ฆฌ ์ฃผ์†Œ|์š”์ฒญํ•  ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ| |:-------:--------|:--------:----------------| |100|1| |101|1| |432|4| |612|6| |103|1| |104|1| |611|6| |612|6|

์˜ˆ๋ฅผ ๋“ค์–ด, CPU๊ฐ€ ๋‚ด๋Š” ์ฃผ์†Œ๋ฅผ ์œ„์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•ด๋ณด์ž. ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ฃผ์†Œ๋Š” ์‹ญ์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค. ๋งŒ์•ฝ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ฅผ 100์ด๋ผ ํ•˜๋ฉด, ์šฐ์ธก๊ณผ ๊ฐ™์ด ๋œ๋‹ค. ์ฃผ์†Œ 100๋ฒˆ์ง€๋Š” 1๋ฒˆ ํŽ˜์ด์ง€์—์„œ offset์ด 0์ธ ์œ„์น˜์ด๊ณ , 101์€ 1๋ฒˆ ํŽ˜์ด์ง€์˜ offset 1์ธ ์œ„์น˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์„ page reference string์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด {1, 4, 6, 1, 6}์ด๋‹ค. ์ด๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ์—ฐ์†๋œ ํŽ˜์ด์ง€๋Š” ์ƒ๋žตํ•˜๊ณ  ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋งŒ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ์ด์œ ๋Š” ์—ฐ์†๋œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ํ•œ ๋ฒˆ page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ์—๋Š” ์ ˆ๋Œ€ page fault๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, CPU๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” page์˜ ๋ฒˆํ˜ธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค๋ฉด, disk๋กœ ๊ฐ€์„œ page๋ฅผ ๊ฐ€์ ธ์˜ฌ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์œ„์˜ ๋ฒˆํ˜ธ๋“ค๋งŒ ๊ฐ€์ง€๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

2. First-In First-Out(FIFO)

FIFO์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฐ€์žฅ ๋จผ์ € page-in ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋จผ์ € page-out ์‹œํ‚จ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ์•„์ด๋””์–ด์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

2.1 ์˜ˆ์ œ

  • ํŽ˜์ด์ง€ ์ฐธ์กฐ์—ด(page reference string)
    • {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 7, 0, 1}
  • ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„ ๊ฐœ์ˆ˜(number of frame): 3
  • ์ตœ์ดˆ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น„์–ด์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19| |:|:|:|:|:|:|:|:|:|::|::|::|::|::|::|::|::|::|::| |7|0|1|2|0|3|0|4|2|3|0|3|2|1|2|0|7|0|1|

orderpage-inframe statesPage fault countpage-outfirst page
17{7}17
20{7, 0}27
31{7, 0, 1}37
42{2, 0, 1}470
50{2, 0, 1}40
63{2, 3, 1}501
70{2, 3, 0}612
84{4, 3, 0}723
92{4, 2, 1}831
103{4, 2, 3}914
110{0, 2, 3}1042
123{0, 2, 3}102
132{0, 2, 3}102
141{0, 1, 3}1123
152{0, 1, 2}1230
160{0, 1, 2}120
177{7, 1, 2}1301
180{7, 0, 2}1412
191{7, 0, 1}1527

๊ฒฐ๊ณผ๋Š” ์ตœ์ข… page fault ์ˆ˜๋Š” 15์ด๋‹ค. ์˜ˆ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ, ์ด์ „์— page-outํ•œ ํŽ˜์ด์ง€๋ฅผ ๊ทธ ๋‹ค์Œ ๋ฐ”๋กœ page-in์„ ํ•˜๋ คํ•œ๋‹ค๋ฉด ๋‹ค์‹œ page fault๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ธ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

2.2 Beladyโ€™s Anomaly

ํ”„๋ ˆ์ž„ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด(= ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋ฉด) page fault ์ˆ˜๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์ด ์ •์ƒ์ ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์˜ FIFO๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด์™€ ๊ฐ™์ด ํŠน์ •ํ•œ ํŽ˜์ด์ง€ ์ฐธ์กฐ์—ด์— ๋Œ€ํ•ด์„œ๋Š” ํ”„๋ ˆ์ž„ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ page fault ์ˆ˜๊ฐ€ ์˜คํžˆ๋ ค ์ฆ๊ฐ€ํ•˜๋Š” ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฅผ Beladyโ€™s Anomaly๋ผ ํ•œ๋‹ค.

3. Optimal(OPT)

OPT๋Š” ๋ง๊ทธ๋Œ€๋กœ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ํฌ์ƒ์–‘ ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•œ๋‹ค.

3.1 ์˜ˆ์ œ

  • ํŽ˜์ด์ง€ ์ฐธ์กฐ์—ด(page reference string)
    • {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 7, 0, 1}
  • ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ”„๋ ˆ์ž„ ๊ฐœ์ˆ˜(number of frame): 3
  • ์ตœ์ดˆ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น„์–ด์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์‹œ์  ์—์„œ ๊ทธ ์ดํ›„์— ์ตœ์ดˆ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์‹œ์ ์˜ ๊ฑฐ๋ฆฌ ๋ฅผ dist๋กœ ๋‘”๋‹ค. ์ด ๊ฐ’์ด ๊ฐ€์žฅ ํฐ ํŽ˜์ด์ง€๊ฐ€ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋กœ ์ •ํ•œ๋‹ค.(ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ดํ›„์— ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” INF๋กœ ๊ฐ€์žฅ ํฐ ๊ฐ’์œผ๋กœ ํ•œ๋‹ค.)

|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19| |:|:|:|:|:|:|:|:|:|::|::|::|::|::|::|::|::|::|::| |7|0|1|2|0|3|0|4|2|3|0|3|2|1|2|0|7|0|1|

orderpage-inframe statesPage fault countpage-outdist
17{7}1{15}
20{7, 0}2{14, 3}
31{7, 0, 1}3{13, 2, 11}
42{2, 0, 1}47{5, 1, 10}
50{2, 0, 1}4{4, 2, 9}
63{2, 0, 3}51{3, 1, 4}
70{2, 0, 3}5{2, 4, 3}
84{2, 4, 3}60{1, INF, 2}
92{2, 4, 3}6{4, INF, 1}
103{2, 4, 3}6{3, INF, 2}
110{2, 0, 3}74{2, 5, 1}
123{2, 0, 3}7{1, 4, INF}
132{2, 0, 3}7{2, 3, INF}
141{2, 0, 1}83{1, 2, 5}
152{2, 0, 1}8{INF, 1, 4}
160{2, 0, 1}8{INF, 2, 3}
177{7, 0, 1}92{INF, 1, 2}
180{7, 0, 1}91{INF, INF, 1}
191{7, 0, 1}92{INF, INF, INF}

OPT์˜ ๊ฒฐ๊ณผ๋Š” ์ด 9๋ฒˆ์˜ page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Š” FIFO์˜ 15๋ฒˆ๋ณด๋‹ค ํฌ๊ฒŒ ์ค„์–ด๋“  ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ OPT์˜ ๋ฐฉ๋ฒ•์€ ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹ค์ œ ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋ฏธ๋ž˜์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์–ด๋Š ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์žฅ ์˜ค๋ž˜ ์‚ฌ์šฉ์•ˆ๋˜๋Š” ์ง€๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋‹ค.

4. Least-Recently-Used(LRU)

OPT๋Š” ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฏธ๋ž˜๋ฅผ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ๋Š”๋ฐ, ์ตœ์ ์˜ ํ•ด๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ๊ทผ์‚ฌ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ LRU๊ฐ€ ๋‚˜์™”๋‹ค. LRU๋Š” ์ตœ๊ทผ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์—๋„ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ๊ณผ๊ฑฐ์˜ ํŽ˜์ด์ง€ ๊ธฐ๋ก์„ ํ†ตํ•ด ํฌ์ƒ์–‘ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•œ๋‹ค.

4.1 ์˜ˆ์ œ

LRU๋Š” ๊ทผ์‚ฌ ํ•ด๋ฅผ ๊ตฌํ•˜๋ฏ€๋กœ OPT๋ณด๋‹ค๋Š” page fault๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, FIFO๋ณด๋‹ค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ ๊ฒŒ ์ผ์–ด๋‚œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„ ํ™˜๊ฒฝ์—์„œ๋Š” LRU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

Reference