ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณธ๋ค.
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|
order | page-in | frame states | Page fault count | page-out | first page |
---|---|---|---|---|---|
1 | 7 | {7} | 1 | 7 | |
2 | 0 | {7, 0} | 2 | 7 | |
3 | 1 | {7, 0, 1} | 3 | 7 | |
4 | 2 | {2, 0, 1} | 4 | 7 | 0 |
5 | 0 | {2, 0, 1} | 4 | 0 | |
6 | 3 | {2, 3, 1} | 5 | 0 | 1 |
7 | 0 | {2, 3, 0} | 6 | 1 | 2 |
8 | 4 | {4, 3, 0} | 7 | 2 | 3 |
9 | 2 | {4, 2, 1} | 8 | 3 | 1 |
10 | 3 | {4, 2, 3} | 9 | 1 | 4 |
11 | 0 | {0, 2, 3} | 10 | 4 | 2 |
12 | 3 | {0, 2, 3} | 10 | 2 | |
13 | 2 | {0, 2, 3} | 10 | 2 | |
14 | 1 | {0, 1, 3} | 11 | 2 | 3 |
15 | 2 | {0, 1, 2} | 12 | 3 | 0 |
16 | 0 | {0, 1, 2} | 12 | 0 | |
17 | 7 | {7, 1, 2} | 13 | 0 | 1 |
18 | 0 | {7, 0, 2} | 14 | 1 | 2 |
19 | 1 | {7, 0, 1} | 15 | 2 | 7 |
๊ฒฐ๊ณผ๋ ์ต์ข 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|
order | page-in | frame states | Page fault count | page-out | dist |
---|---|---|---|---|---|
1 | 7 | {7} | 1 | {15} | |
2 | 0 | {7, 0} | 2 | {14, 3} | |
3 | 1 | {7, 0, 1} | 3 | {13, 2, 11} | |
4 | 2 | {2, 0, 1} | 4 | 7 | {5, 1, 10} |
5 | 0 | {2, 0, 1} | 4 | {4, 2, 9} | |
6 | 3 | {2, 0, 3} | 5 | 1 | {3, 1, 4} |
7 | 0 | {2, 0, 3} | 5 | {2, 4, 3} | |
8 | 4 | {2, 4, 3} | 6 | 0 | {1, INF, 2} |
9 | 2 | {2, 4, 3} | 6 | {4, INF, 1} | |
10 | 3 | {2, 4, 3} | 6 | {3, INF, 2} | |
11 | 0 | {2, 0, 3} | 7 | 4 | {2, 5, 1} |
12 | 3 | {2, 0, 3} | 7 | {1, 4, INF} | |
13 | 2 | {2, 0, 3} | 7 | {2, 3, INF} | |
14 | 1 | {2, 0, 1} | 8 | 3 | {1, 2, 5} |
15 | 2 | {2, 0, 1} | 8 | {INF, 1, 4} | |
16 | 0 | {2, 0, 1} | 8 | {INF, 2, 3} | |
17 | 7 | {7, 0, 1} | 9 | 2 | {INF, 1, 2} |
18 | 0 | {7, 0, 1} | 9 | 1 | {INF, INF, 1} |
19 | 1 | {7, 0, 1} | 9 | 2 | {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
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- ์ธ๋งํฌ ์ฌ์ง
- Operating System Concepts, 9th Edition - Abraham Silberschatz