[Computer Science][Operating System] ๐Ÿ“š ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ดํ•˜๊ธฐ

๊น€์ƒ์šฑยท2024๋…„ 8์›” 14์ผ
0
post-thumbnail

ํŽ˜์ด์ง€ ๋ถ€์žฌ ๋ฐœ์ƒ ์‹œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ, ํ˜„์žฌ ํ• ๋‹น๋œ ํŽ˜์ด์ง€ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ๊ต์ฒดํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ ๊ธ€์ž…๋‹ˆ๋‹ค.

๐Ÿงฉ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ์š”๊ตฌ ํŽ˜์ด์ง€ ๊ธฐ๋ฒ•

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

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด, ์ถ”๊ฐ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๋Š” outํ•˜๊ณ , ํ•ด๋‹น ๊ณต๊ฐ„์— ํ˜„์žฌ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ in ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ out ์‹œ์ผœ์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ victim page๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ, ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ˆ˜์ •๋œ ํŽ˜์ด์ง€๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ณด๋‚ผ ๋•Œ, ํ•˜๋“œ๋””์Šคํฌ์—์„œ ๋˜ ์ˆ˜์ •์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ˆ˜์ •๋œ ์ •๋ณด๊ฐ€ ํ•˜๋“œ๋””์Šคํฌ์— ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋“œ๋””์Šคํฌ์—์„œ ์ˆ˜์ •์„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์ ์ ˆํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š Page Reference String

CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ํŠน์ • ์ฃผ์†Œ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ฃผ์†Œ๋“ค์€ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ CPU๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ์ฃผ์†Œ๋“ค์ด ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ์—ฐ์†๋œ ํŽ˜์ด์ง€๋“ค์— ์†ํ•ด ์žˆ๋‹ค๋ฉด, ์ถ”๊ฐ€์ ์ธ ํŽ˜์ด์ง€ ๊ฒฐํ•จ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CPU์˜ ์ฃผ์†Œ ์š”๊ตฌ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ๊ฒฐํ•จ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์€ ์ƒ๋žตํ•˜์—ฌ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ Page Reference String์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํŠน์ • ์‹œ์ ์—์„œ ์š”๊ตฌํ•œ ํŽ˜์ด์ง€๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

1. FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿฅ‡

First-In First-Out ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋จผ์ € ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€๋ฅผ ๋จผ์ € ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. victim page๋Š” ๊ฐ€์žฅ ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ, ํŠนํžˆ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ์—์„œ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์‹œ ์ตœ์ดˆ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œํ‚ค๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋นผ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ฝ”๋“œ์ด๋ฏ€๋กœ, FIFO ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œ์ผœ์ค€ ํ›„ ๊ฐ€์žฅ ๋จผ์ € ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2. OPT ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐ŸŒŸ

Optimal Page Replacement ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•ž์œผ๋กœ ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์žฅ ์šฐ์„ ์ ์œผ๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ FIFO์— ๋น„ํ•ด ํŽ˜์ด์ง€ ๊ฒฐํ•จ์˜ ํšŸ์ˆ˜๋ฅผ ๋” ๋งŽ์ด ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์งˆ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์•ž์œผ๋กœ ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

3. LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ โณ

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

์‹ค์ œ๋กœ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” ์•ž์œผ๋กœ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํ™•๋ฅ ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์—, ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ‰๊ฐ€๋ฐ›์Šต๋‹ˆ๋‹ค.

โš–๏ธ ๊ต์ฒด ๋ฐฉ์‹

Global ๊ต์ฒด

  • ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Local ๊ต์ฒด

  • ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์ž๊ธฐ ํ”„๋กœ์„ธ์Šค ํŽ˜์ด์ง€์—์„œ๋งŒ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฒฝ์šฐ, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๊ต์ฒด ์‹œ, ๋‹ค์–‘ํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•ด victim page๋ฅผ ์„ ์ •ํ•˜๋Š”๋ฐ, ์„ ์ • ๊ธฐ์ค€์„ Global๋กœ ํ•˜๋А๋ƒ Local๋กœ ํ•˜๋А๋ƒ์— ๋Œ€ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ๋Š” ์ „์ฒด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋” ๋งŽ์€ ์„ ํƒ์ง€๊ฐ€ ์ƒ๊ธฐ๊ณ , ๊ทธ ์ค‘์—์„œ ์ตœ์„ ์˜ ์„ ํƒ์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, Local ๊ต์ฒด์—์„œ๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ ํŽ˜์ด์ง€๋“ค๋งŒ ๊ต์ฒดํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ํŽ˜์ด์ง€ ๊ต์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด ๊ธ€์—์„œ๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ฐœ๋…๊ณผ ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค! ๐Ÿ˜Š

์ด๋Ÿฐ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ–ˆ์–ด์š”.
[1] velog - [์šด์˜์ฒด์ œ]ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ (https://velog.io/@k4minseung/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98)
[2] TISTORY - [์šด์˜์ฒด์ œ] ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๐Ÿ’ปํ‰๋ฒ”ํ•œ ๊ณต๋Œ€์ƒ์˜ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป (https://rob-coding.tistory.com/37)
[3] GitHub - ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ (https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Operating%20System/PageReplacement.md)
[4] KOCW - ์šด์˜์ฒด์ œ 13์ฃผ์ฐจ (http://vod3.kocw.net/KOCW/document/2016/cup/byunsangseon/12.pdf)

0๊ฐœ์˜ ๋Œ“๊ธ€