๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 100MB ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์—์„œ 200MB ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1. Demanding Paging

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ• ๊นŒ? ์•ž์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐฉ์ง€์˜ ๋™์  ํ• ๋‹น์—์„œ๋„ ๋ดค๋“ฏ์ด, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋ถ„์€ ํŽ˜์ด์ง€ ๋‹จ์œ„์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ ํ˜„์žฌ ํ•„์š”ํ•œ(์š”๊ตฌ๋˜์–ด์ง€๋Š”) ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ Demanding Paging(์š”๊ตฌ ํŽ˜์ด์ง•) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

1.1 ๋™์ž‘

  1. CPU๊ฐ€ page table์— ๊ฐ€์„œ ํ•ด๋‹น page์— ์ ‘๊ทผํ•œ๋‹ค.
  2. ์ด ๋•Œ, Memory์— ์˜ฌ๋ผ์˜จ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด(invaild), Interupt๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.
  3. OS ๋‚ด๋ถ€์˜ ISR์—์„œ ์ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Ÿฌ Disk์—์„œ page๋ฅผ ์ฐพ๋Š”๋‹ค.
  4. ์ฐพ์€ Page๋ฅผ Memory์— ์˜ฌ๋ ค Frameํ™” ํ•œ๋‹ค.
  5. page table์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.
  6. CPU์—๊ฒŒ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๋ผ๊ณ  ๋ช…๋ นํ•œ๋‹ค.

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ์š”๊ตฌ ํŽ˜์ด์ง•์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ์š”๊ตฌ ํŽ˜์ด์ง•์„ ๊ฐ™์€ ์šฉ์–ด๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

1.2 Page Fault(ํŽ˜์ด์ง€ ๋ถ€์žฌ)

ํŽ˜์ด์ง€ ๋ถ€์žฌ๋Š” ์œ„์—์„œ ์‚ดํŽด๋ณธ CPU๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ฆ‰, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ valid bit๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ์ด๋‹ค.

์œ„์—์„œ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ ์ด ๋ถ€๋ถ„์ด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

1.2.1 Pure Demanding Paging

Pure Demanding Paging์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ดˆ๋กœ ์‹คํ–‰๋  ๋•Œ๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์•„๋ฌด ํŽ˜์ด์ง€๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ž๋งˆ์ž page fault๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฆ‰, ์ˆœ์ˆ˜ํ•˜๊ฒŒ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. Pure Demanding Paging์˜ ์žฅ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์ž‘๋ถ€ํ„ฐ page fault๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์†๋„๋ฉด์—์„œ ๋Š๋ฆฌ๋‹ค.

1.2.2 Prepaging

Prepaging์€ pure demanding paging๊ณผ ๋ฐ˜๋Œ€๋Œ€๋Š” ๊ฐœ๋…์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ ํŒ๋‹จ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์˜ ์žฅ์ ์€ page fault๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ์ ์œผ๋ฏ€๋กœ ์†๋„๋ฉด์—์„œ ๋น ๋ฅด์ง€๋งŒ, ๋‹จ์ ์œผ๋กœ ๋ฏธ๋ฆฌ ์˜ฌ๋ผ๊ฐ„ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋œ๋‹ค.

1.2.3 Swapping VS Demanding Paging

Swapping์™€ Demanding Paging์˜ ๊ณตํ†ต์ ์€ ๋‘˜ ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์™€ backing store ์‚ฌ์ด๋ฅผ ์„œ๋กœ ์˜ค๊ณ  ๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, Swapping์€ ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ์ด๋™ํ•˜๊ณ  Demanding Paging์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ด๋™ํ•˜๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

1.2.4 ์œ ํšจ ์ ‘๊ทผ ์‹œ๊ฐ„(Effective Access Time)

Demending Paging์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์—†์œผ๋ฉด backing store์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ด ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ‰๊ท ์ ์œผ๋กœ ์–ด๋Š์ •๋„ ์†Œ์š”๋˜๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ ์œ ํšจ ์ ‘๊ทผ ์‹œ๊ฐ„์ด๋ผ ํ•œ๋‹ค.

  • p
    • ํŽ˜์ด์ง€ ๋ถ€์žฌ ํ™•๋ฅ (probability of a page fault = page fault rate)
  • Tm
    • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„(DRAM)
  • Tp
    • Page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„(๋Œ€๋ถ€๋ถ„ backing store(ํ•˜๋“œ๋””์Šคํฌ)๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„์ด ์ฐจ์ง€ํ•œ๋‹ค. (seek time + rotational delay + transfer time)

p = 1/1,000

|์šฉ์–ด|์ •์˜|๊ฐ’| |::----|::----|:โ€”| |p|ํŽ˜์ด์ง€ ๋ถ€์žฌ ํ™•๋ฅ |1/1000| |Tm|๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„|200nsec| |Tp|Disk ํƒ์ƒ‰ ์‹œ๊ฐ„|8msec|

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„์— ๋น„ํ•ด 40๋ฐฐ ์ •๋„ ๋Š๋ฆฌ๋‹ค.

p = 1/399,990

|์šฉ์–ด|์ •์˜|๊ฐ’| |::----|::----|:โ€”| |p|ํŽ˜์ด์ง€ ๋ถ€์žฌ ํ™•๋ฅ |1/399,990| |Tm|๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„|200nsec| |Tp|Disk ํƒ์ƒ‰ ์‹œ๊ฐ„|8msec|

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„์— ๋น„ํ•ด 10% ๋Š๋ฆฌ๋‹ค.

์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ(Locality of reference)

์œ„์˜ ์˜ˆ์ œ๋ฅผ ๋ณด์•˜์„ ๋•Œ, page fault๋Š” ๋งค์šฐ ์ ์€ ํ™•๋ฅ ๋กœ ๋ฐœ์ƒํ•ด์•ผ ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ˜„์‹ค์ ์œผ๋กœ ํŽ˜์ด์ง€ ๋ถ€์žฌ๋Š” ์–ด๋Š์ •๋„๋กœ ๋ฐœ์ƒํ• ๊นŒ? ์ด๋Š” **์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ(Locality of reference)**๋กœ ์ธํ•ด ํŽ˜์ด์ง€ ๋ถ€์žฌ ํ™•๋ฅ ์€ ๋งค์šฐ ๋‚ฎ๋‹ค. ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋Š” โ€˜๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์€ ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ๊ณผ ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ์„ ๊ฐ€์ง„๋‹คโ€™๋Š” ์˜๋ฏธ์ด๋‹ค.

  • ์‹œ๊ฐ„์  ์ง€์—ญ์„ฑ
    • CPU๋Š” ์–ด๋Š ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฝ์€ ํ›„, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๊ทธ ๊ณต๊ฐ„์„ ๋‹ค์‹œ ์ฝ์„ ํ™•๋ฅ ์ด ๋งค์šฐ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
    • ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋ฐ˜๋ณต๋ฌธ์ด ์žˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์€ ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๊ณต๊ฐ„์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ๋Š”๋‹ค.
  • ๊ณต๊ฐ„์  ์ง€์—ญ์„ฑ
    • CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฝ์„ ๋•Œ๋Š” ์ธ์ ‘ํ•œ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ฝ๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ์€ ๋Œ€๋ถ€๋ถ„ ์ ˆ์ฐจ์ ์ธ ์ˆœ์„œ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ์ˆœ์„œ๋Œ€๋กœ ์ฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค.

์ด์™€ ๊ฐ™์ด ํŽ˜์ด์ง€ ๋ถ€์žฌ๊ฐ€ ํ˜„์‹ค์ ์œผ๋กœ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์€ ๋งค์šฐ ๋‚ฎ์œผ๋ฏ€๋กœ ์˜ˆ์ œ์™€ ๊ฐ™์ด 40๋ฐฐ๋กœ ๋Š๋ ค์ง€๋Š” ์ผ์„ ๊ฑฐ์˜ ์—†๋‹ค. ์—ฌ๊ธฐ์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŽ˜์ด์ง€ ๋ถ€์žฌ์ผ ๋•Œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, backing store๋กœ HDD๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” SSD๋‚˜ ์ €๊ฐ€ DRAM๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

1.3 ํŽ˜์ด์ง€ ๊ต์ฒด(Page Replacement)

Demanding Paging์€ ์š”๊ตฌ๋˜์–ด์ง€๋Š” ํŽ˜์ด์ง€๋งŒ backing store์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๊ณ„์† ์‹คํ–‰ํ•จ์— ๋”ฐ๋ผ ์š”๊ตฌ ํŽ˜์ด์ง€๋„ ๊ณ„์† ๋Š˜์–ด๋‚˜๊ณ , ์–ธ์  ๊ฐ€๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.(memory full) ์—ฌ๊ธฐ์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์ƒˆ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‹ค์‹œ backing store์— ๋ณด๋‚ด๊ณ (page-out), ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผํ•œ๋‹ค.(page-in) ์ด๋ฅผ ํŽ˜์ด์ง€ ๊ต์ฒด๋ผ๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ backing store๋กœ page-out์ด ๋œ ํŽ˜์ด์ง€๋ฅผ victim page ๋ผ๊ณ  ํ•œ๋‹ค.

1.2.1 Victim Page(ํฌ์ƒ์–‘ ํŽ˜์ด์ง€)

ํฌ์ƒ์–‘ ํŽ˜์ด์ง€๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ๋จผ์ € ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€ ์ค‘ CPU์— ์ˆ˜์ •(modify)๋˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ฆ‰, ์ฝ๊ธฐ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ด๋‹ค. ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” page-out์ด ๋  ๋•Œ backing store์— ์“ฐ๊ธฐ(write) ์—ฐ์‚ฐ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. backing store๋Š” ์ฝ๋Š” ์‹œ๊ฐ„๋„ ๋Š๋ฆฌ์ง€๋งŒ, ๊ฑฐ๊ธฐ์— ๋”ํ•ด ์“ฐ๊ธฐ ์ž‘์—…๊นŒ์ง€ ํ•œ๋‹ค๋ฉด ๋”์šฑ ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ์•ˆ๋˜์—ˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— **modified bit(=dirty bit)**๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋‹ค๋ฉด ์ด ๋น„ํŠธ๋ฅผ 1๋กœ ๋‘๊ณ , ์ˆ˜์ •๋˜์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ๋‘”๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด์„œ victim page๋Š” ์ตœ๋Œ€ํ•œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์€ modified bit๋ฅผ ์ถ”๊ฐ€ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ๋ชจ์Šต์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” 0, 2, 3๋ฒˆ 3๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ด ์ค‘์—์„œ๋Š” ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?

์ œ์ผ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ์ด๋Š” ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ๋‹ค์Œ์€ ๊ฐ€์žฅ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€๋ฅผ ํฌ์ƒ์–‘ ํŽ˜์ด์ง€๋กœ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์•„์ฃผ ์œ ๋ช…ํ•œ FIFO(First-In First-Out) ๋ฐฉ์‹์ด๋‹ค. ์ด ์™ธ์—๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

Reference