ํ์ด์ง ๋ถ์ฌ ๋ฐ์ ์ ์๋ก์ด ํ์ด์ง๋ฅผ ํ ๋นํด์ผ ํ๋ ์ํฉ์์, ํ์ฌ ํ ๋น๋ ํ์ด์ง ์ค ์ด๋ค ๊ฒ์ ๊ต์ฒดํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฌ ๊ธ์ ๋๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์๊ตฌ ํ์ด์ง ๊ธฐ๋ฒ์ ํตํด ํ์ํ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ์ฌ์ฉํ์ง ์๋ ๋ถ๋ถ์ ๊ทธ๋๋ก ๋ก๋๋ค. ํ์ง๋ง ํ์ํ ํ์ด์ง๋ง ์ฌ๋ ค๋ ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋ ์ฐจ๊ฒ ๋๊ณ , ์ฌ๋ผ์ ์๋ ํ์ด์ง๊ฐ ์ฌ์ฉ์ด ๋ค ๋ ํ์๋ ์๋ฆฌ๋ฅผ ์ฐจ์งํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด, ์ถ๊ฐ๋ก ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉํ์ง ์๋ ํ์ด์ง๋ outํ๊ณ , ํด๋น ๊ณต๊ฐ์ ํ์ฌ ํ์ํ ํ์ด์ง๋ฅผ in ์์ผ์ผ ํฉ๋๋ค. ์ด๋ ์ด๋ค ํ์ด์ง๋ฅผ out ์์ผ์ผ ํ ์ง ๊ฒฐ์ ํด์ผ ํ๋ฉฐ, ์ด๋ฅผ victim page๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
ํ์ด์ง ๊ต์ฒด ์, ๊ฐ๋ฅํ๋ฉด ์์ ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ ์ด์ ๋ ์์ ๋ ํ์ด์ง๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ณด๋ผ ๋, ํ๋๋์คํฌ์์ ๋ ์์ ์ ํด์ผ ํ๋ฏ๋ก ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฆ, ๋ฉ๋ชจ๋ฆฌ์์ ์์ ๋ ์ ๋ณด๊ฐ ํ๋๋์คํฌ์ ์๊ธฐ ๋๋ฌธ์, ์ ์งํ๊ธฐ ์ํด ํ๋๋์คํฌ์์ ์์ ์ ์งํํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ํฉ์์ ์ ์ ํ ํ์ด์ง ๊ต์ฒด๋ฅผ ์งํํ๊ธฐ ์ํด ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํฉ๋๋ค.
CPU๋ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ํน์ ์ฃผ์๋ฅผ ์๊ตฌํฉ๋๋ค. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ์ฃผ์๋ค์ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ๋ง์ฝ CPU๊ฐ ์ฐธ์กฐํ๋ ์ฃผ์๋ค์ด ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์ฐ์๋ ํ์ด์ง๋ค์ ์ํด ์๋ค๋ฉด, ์ถ๊ฐ์ ์ธ ํ์ด์ง ๊ฒฐํจ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ CPU์ ์ฃผ์ ์๊ตฌ์ ๋ฐ๋ผ ํ์ด์ง ๊ฒฐํจ์ด ์ผ์ด๋์ง ์๋ ๋ถ๋ถ์ ์๋ตํ์ฌ ํ์ํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก Page Reference String์ ๋๋ค. ์ฆ, ํน์ ์์ ์์ ์๊ตฌํ ํ์ด์ง๋ค์ ์์๋ฅผ ๋ํ๋ ๋๋ค.
First-In First-Out ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ์ ๋จผ์ ์ฌ๋ผ์จ ํ์ด์ง๋ฅผ ๋จผ์ ๋ด๋ณด๋ด๋ ๋ฐฉ์์ ๋๋ค. victim page๋ ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ์ด์ง์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก, ํนํ ์ด๊ธฐํ ์ฝ๋์์ ์ ์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๊ธฐํ ์ฝ๋๋ ํ๋ก์ธ์ค ์คํ ์ ์ต์ด ์ด๊ธฐํ๋ฅผ ์ํค๋ ์ญํ ๋ง ์ํํ๋ฏ๋ก, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๋นผ๋ ๊ด์ฐฎ์ต๋๋ค. ํ์ง๋ง ์ด๊ธฐํ ์ฝ๋๊ฐ ๋ฐ๋์ ํ์ํ ์ฝ๋์ด๋ฏ๋ก, FIFO ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐํ๋ฅผ ์์ผ์ค ํ ๊ฐ์ฅ ๋จผ์ ๋ด๋ณด๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
Optimal Page Replacement ์๊ณ ๋ฆฌ์ฆ์ ์์ผ๋ก ๊ฐ์ฅ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ์ฐ์ ์ ์ผ๋ก ๋ด๋ณด๋ด๋ ๋ฐฉ์์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ FIFO์ ๋นํด ํ์ด์ง ๊ฒฐํจ์ ํ์๋ฅผ ๋ ๋ง์ด ๊ฐ์์ํฌ ์ ์์ง๋ง, ์ค์ง์ ์ผ๋ก ํ์ด์ง๊ฐ ์์ผ๋ก ์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ํํ๊ธฐ ์ด๋ ต์ต๋๋ค.
Least-Recently-Used ์๊ณ ๋ฆฌ์ฆ์ ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ด๋ ค๋ณด๋ด๋ ๋ฐฉ์์ ๋๋ค. ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์๋ ํ์ด์ง๋ ๋์ค์๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์์ด๋์ด์์ ์ถ๋ฐํฉ๋๋ค. LRU๋ OPT์ ๊ฒฝ์ฐ ๋ฏธ๋ ์์ธก์ ๊ธฐ๋ฐํ์ง๋ง, ๊ณผ๊ฑฐ๋ฅผ ๋ณด๊ณ ํ๋จํ๋ฏ๋ก ์ค์ง์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ค์ ๋ก ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ ์์ผ๋ก๋ ์ฌ์ฉํ์ง ์์ ํ๋ฅ ์ด ๋๊ธฐ ๋๋ฌธ์, ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ค์์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ํ๊ฐ๋ฐ์ต๋๋ค.
๋ค์ค ํ๋ก๊ทธ๋๋ฐ์ ๊ฒฝ์ฐ, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ํ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ๋ผ์ฌ ์ ์์ต๋๋ค. ์ด๋ ๋ค์ํ ํ๋ก์ธ์ค์ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๊ฒ ๋ฉ๋๋ค. ํ์ด์ง ๊ต์ฒด ์, ๋ค์ํ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด 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)