page fault๊ฐ ๋ฐ์ํ์๊ณ empty page frame๊ฐ ์์ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ page๋ค ์ค ๋์คํฌ๋ก swap outํ์ฌ empty page frame์ ํ๋ณดํ๋ ๊ณผ์ ์ page replacement๋ผ๊ณ ํ๋ค.
page replacement algorithm์ผ๋ก victim page๋ฅผ ์ ํํ์ฌ ๋์คํฌ๋ก swap outํ๋ค.(victim page์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์๋ค๋ฉด, ๋ณ๊ฒฝ๋ ๋ด์ฉ์ backing store์ writeํด์ผ ํจ)page table์ swap out๋ page์ valid/invalid bit๋ฅผ โinvalidโ๋ก ๋ณ๊ฒฝํ๋ค.์๋ก์ด page๋ฅผ empty page frame์ swap inํ๋ค.page table์ swap in๋ page์ valid/invalid bit๋ฅผ โvalidโ๋ก ๋ณ๊ฒฝํ๊ณ page frame ๋ฒํธ๋ฅผ ์์ฑํ๋ค.
ํ์ด์ง ๊ต์ฒด ์ page fault๋ฅผ ์ต์ํํ ์ ์๋ victim page๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ์ด์ง ๋ถ์ฌ์จ์ด ๋ฎ์์๋ก ์ข๋ค
- Page Reference String(์๊ฐ ์์์ ๋ฐ๋ผ ์ฐธ์กฐ๋ page ๋ฒํธ๋ค์ ๋์ด)์ ์ฐธ๊ณ ํ์ฌ victim page๋ฅผ ์ ์ ํ๋ค
1. Optimal Algorithm
2. FIFO(First In First Out) Algorithm
3. LRU(Least Recently Used) Algorithm
4. LFU(Least Frequently Used) Algorithm
5. Clock Algorithm๋ฏธ๋์ ์ด๋ค ํ์ด์ง๊ฐ ์ฐธ์กฐ๋๋์ง ๋ฏธ๋ฆฌ ์๊ณ ์๋ ๊ฐ์ ํ์ victim page๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ง ๋ถ์ฌ์จ์ด ๊ฐ์ฅ ๋ฎ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. (ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ upper bound๋ฅผ ์ ๊ณตํจ)
- ์ค์ ์์คํ ์์ ์ ์ฉํ ์ ์๋ค
1,2,3,4โ1,2,3,4๋ฒ ํ์ด์ง๋ฅผ ์ต์ด๋ก ์ฐธ์กฐํ ๊ฒฝ์ฐ page fault ๋ฐ์1,2โ 1,2๋ฒ ํ์ด์ง๋ฅผ ๋ค์ ์ฐธ์กฐํ ๊ฒฝ์ฐ hit5โ 5๋ฒ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ page fault ๋ฐ์ & empty page frame์ด ์์
ํ์ฌ ์์ (5) ์ดํ์ ๋ฏธ๋ Page Reference String(1, 2, 3, 4, 5)์ ์ฐธ๊ณ ํ์ฌ ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋ 4๋ฒ ํ์ด์ง๋ฅผ victim page๋ก ์ ์ ํ์ฌ ๊ต์ฒดํ๋ค.
๋จผ์ swap in๋ ํ์ด์ง๋ฅผ victim page๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
FIFO Anomaly(Belady's Anomaly): page frame์ ๋๋ ค์ฃผ๋ฉด ํ์ด์ง ๋ถ์ฌ์จ์ด ์คํ๋ ค ์ฆ๊ฐํ๋ ์ด์ํ์
๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ victim page๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
LRUโ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐํ ํ์ด์ง๋ผ๋ฉด victim page ๋์์์ ์ ์ธ๋๋ค.FIFOโ ์ต๊ทผ๊น์ง ์ฐธ์กฐํ ํ์ด์ง์ผ์ง๋ผ๋ ๋จผ์ swap in๋์๋ค๋ฉด victim page์ ๋์์ด ๋๋ค.
1,2,3,4โ1,2,3,4๋ฒ ํ์ด์ง๋ฅผ ์ต์ด๋ก ์ฐธ์กฐํ ๊ฒฝ์ฐ page fault ๋ฐ์1,2โ 1,2๋ฒ ํ์ด์ง๋ฅผ ๋ค์ ์ฐธ์กฐํ ๊ฒฝ์ฐ hit5โ 5๋ฒ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ page fault ๋ฐ์ & empty page frame์ด ์์
ํ์ฌ ์์ (5) ์ด์ ์ ๊ณผ๊ฑฐ Page Reference String(3, 4, 1, 2)์ ์ฐธ๊ณ ํ์ฌ ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ 3๋ฒ ํ์ด์ง๋ฅผ victim page๋ฅผ ์ ์ ํ์ฌ ๊ต์ฒดํ๋ค.
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ victim page๋ก ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ต์ ์ฐธ์กฐ ํ์๋ฅผ ๊ฐ์ง ํ์ด์ง๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ์์๋ก victim page๋ฅผ ์ ํํ๋ค. (์ต์ ์ฐธ์กฐ ํ์๋ฅผ ๊ฐ์ง ํ์ด์ง ์ค ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ victim์ผ๋ก ์ ํํ๋๋ก ๊ตฌํํ ์ ์๋ค)
LRU์ LFU ๋น๊ต
| LRU | LFU |
|---|---|
| ์ง์ ์ page reference string๋ง ์ฐธ๊ณ ํ๊ธฐ ๋๋ฌธ์ ํ์ด์ง์ ์ธ๊ธฐ๋(์ฐธ์กฐํ์)๋ฅผ ์ ํ์ด ๋ฐ์ํ๊ธฐ ํ๋ค๋ค | ์ฅ๊ธฐ์ ์ธ ์๊ฐ ๊ท๋ชจ์ page reference string์ ์ฐธ๊ณ ํ๊ธฐ ๋๋ฌธ์ ํ์ด์ง์ ์ธ๊ธฐ๋๋ฅผ ๋ฐ์ํ ์ ์๋ค |
| ์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ์ ๋ฐ์ํ๋ค | ์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ๋ฐ์ํ๊ธฐ ํ๋ค๋ค. (๊ณผ๊ฑฐ์ ๋ง์ด ์ฐธ์กฐ๋์๊ณ ์ต๊ทผ์ ๊ฑฐ์ ์ฐธ์กฐ๋์ง ์์๋ค๋ฉด victim์ผ๋ก ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ์ ๋ค) |
LRU์ LFU ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ ๋ฐฉ์
LRU ์๊ณ ๋ฆฌ์ฆ
LinkedListโ rear์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐธ์กฐ๋ ํ์ด์ง, head์ ๊ฐ์ฅ ์ค๋ ์ ์ ์ฐธ์กฐ๋ ํ์ด์งpage๊ฐ ์ฌ์ฐธ์กฐ๋๋ค๋ฉดโ ์ฌ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ rear๋ก ์ด๋์ํจ๋ค.O(1)victim page๋ฅผ ์ ํํ๋ค๋ฉดโ head์ ์์นํ page๋ฅผ ์ ํํ๋ค.O(1)
๋ง์ฝ LFU ์๊ณ ๋ฆฌ์ฆ์ LinkedList๋ก ๊ตฌํํ๋ค๋ฉด, page๊ฐ ์ฌ์ฐธ์กฐ๋ ๊ฒฝ์ฐ page๋ค์ ์ฐธ์กฐ ํ์ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋น๊ตํ๋ฉด์ ์์น๋ฅผ ์ง์ ํด์ผํ๊ธฐ ๋๋ฌธ์ O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ๋๋ค. ๋ฐ๋ผ์ LFU๋ Heap์ผ๋ก ๊ตฌํํ๋ค.
LFU ์๊ณ ๋ฆฌ์ฆ
Heapโ ์ฐธ์กฐํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ root node์ ์์น์ํจ๋คpage๊ฐ ์ฌ์ฐธ์กฐ๋๋ค๋ฉดโ ํด๋น ํ์ด์ง์ ์ฐธ์กฐ ํ์๋ฅผ 1์ฆ๊ฐํ๊ณ heapify๋ฅผ ์งํํ๋ค.O(logN)victim page๋ฅผ ์ ํํ๋ค๋ฉดโ root node์ ์์นํ page๋ฅผ ์ ํํ๋ค. ์ดํ heapify๋ฅผ ์งํํ๋ค.O(logN)
์ค์ ํ์ด์ง ์์คํ ์์ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์๋ค.
์ด์์ฒด์ ๋ LRU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด page๋ค์ ์ฐธ์กฐ ์์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก/LFU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด page๋ค์ ์ฐธ์กฐ ํ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก victim page๋ฅผ ์ ํํด์ผํ๋ค.
๋ฌธ์ ๋ ์ด์์ฒด์ ๊ฐ page์ ์ฐธ์กฐ ์์ ์ด๋ ์ฐธ์กฐ ํ์๋ฅผ ์๋ฒฝํ๊ฒ ์ ์ ์๋ค๋ ์ ์ด๋ค.
page fault๊ฐ ๋ฐ์ํ๋ฉด ์ด์์ฒด์ ๊ฐ CPU ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์๋ก์ด page๋ฅผ swap inํ๊ธฐ ๋๋ฌธ์ โ์ฐธ์กฐ ์์ โ์ ์ ์ ์๋ค. ๋ฐ๋ฉด์ page fault๊ฐ ๋ฐ์ํ์ง ์๋๋ค๋ฉด CPU ์ ์ด๊ถ์ด ์ด์์ฒด์ ๋ก ๋์ด๊ฐ์ง ์๊ณ ํ๋์จ์ด(MMU)๋ฅผ ํตํด ์ฃผ์ ๋ณํ์ด ์ด๋ค์ง๋ฏ๋ก valid page์ โ์ฐธ์กฐ ์์ โ์ ์ ์ ์๋ค.
๊ฒฐ๊ตญ ์ค์ ํ์ด์ง ์์คํ ์์ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ์ง ๋ชปํ๋ค. ๊ทธ ๋์ Clock ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
ํฌ์ธํฐ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ victim page๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
reference bit = 1ย : ์ต๊ทผ์ ์ฐธ์กฐ๋(Read๋) ํ์ด์ง๋ผ๋ ์๋ฏธmodified bit = 1ย : ์ต๊ทผ์ ๋ณ๊ฒฝ๋(Write๋) ํ์ด์ง๋ผ๋ ์๋ฏธ
- CPU๊ฐ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ๋ฉด ํด๋น ํ์ด์ง์ reference bit๋ฅผ 1๋ก ์ค์ ํ๋ค.
- ์ด์์ฒด์ ๋ ํฌ์ธํฐ๋ฅผ ์ด๋์ํค๋ฉด์ ํ์ด์ง์ reference bit๊ฐ 1์ธ ๊ฒ์ 0์ผ๋ก ๋ณ๊ฒฝํ๋ค.
- ๋ ๋ฒ์งธ ๋ฐํด์์(second chance)
reference bit = 0, modified bit = 0โ swap outreference bit = 0, modified bit = 1โ modified bit๋ฅผ 0์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํฌ์ธํฐ๋ฅผ ํ ์นธ ์ด๋ํ๋ค. (๋ณ๊ฒฝ๋ ๋ด์ฉ์ disk์ writeํด์ผ ํ๊ธฐ ๋๋ฌธ์)
CPU๋ ๋ช ๋ น์ ์คํํ ๋ ์ฌ๋ฌ ํ์ด์ง(ํ๋ก์ธ์ค์ code, data, stack)๋ฅผ ๋์์ ์ฐธ์กฐํ๋ค.ย ๋ฐ๋ผ์ ์ํํ ๋ช ๋ น์ด ์ํ์ ์ํด ํ์ด์ง ๋ถ์ฌ์จ์ด ์ ๊ฒ ๋ฐ์ํ ๋งํผ์ page frame(physical memory)์ ํ ๋นํด์ฃผ์ด์ผ ํ๋ค.
Equal Allocation(๊ท ๋ฑ ํ ๋น)ย : ๋ชจ๋ ํ๋ก์ธ์ค์๊ฒ page frame์ ๊ท ์ผํ๊ฒ ํ ๋นํ๋คProportional Allocation(๋น๋ก ํ ๋น)ย : ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ page frame์ ํ ๋นํ๋คPriority Allocation(์ฐ์ ์์ ํ ๋น)ย : ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ๋ฐ๋ผ page frame์ ๋ค๋ฅด๊ฒ ํ ๋นํ๋ค(๋น์ฅ CPU์์ ์คํ๋ ํ๋ก์ธ์ค์ ๊ทธ๋ ์ง ์์ ํ๋ก์ธ์ค๋ก ๊ตฌ๋ถํ๋ค)
Thrashing(์ค๋ ์ฑ)
ํ๋ก์ธ์ค์ ์ํํ ์ํ์ ํ์ํ ์ต์ํ์ page frame์ ํ ๋น ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐย Thrashingย ์ด ๋ฐ์ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๋ ํ๋ก์ธ์ค๊ฐ ๋ง์์ง๋ฉด
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ํ ๋น๋๋ page frame ์๊ฐ ์ ์ด์ง๊ณ
- ๊ฒฐ๊ตญ ํ์ด์ง ๋ถ์ฌ๊ฐ ๋น๋ฒํ ๋ฐ์ํ์ฌ CPU ์ด์ฉ๋ฅ ์ด ๋ฎ์์ง๋ค. (์ฆ์ Context Switch)
- ์ด์์ฒด์ ๋ ๋ฎ์ CPU ์ด์ฉ๋ฅ ์ ๋ณด๊ณ degree of multiprogramming์ ๋ํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋ ๋ง์ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฆฐ๋ค.
- ํ๋ก์ธ์ค๋ง๋ค ํ ๋น๋๋ page frame ์๊ฐ ๋์ฑ ๊ฐ์ํ๊ณ โ ํ์ด์ง ๋ถ์ฌ์จ์ด ๋ ๋์์ง๊ณ โ CPU ์ด์ฉ๋ฅ ์ด ๋ ๋ฎ์์ง๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ํ์ํ ์ต์ํ์ page frame์ ํ ๋นํด์ฃผ์ด์ผ ํ๋ค. โ Working-Set Algorithmย ๋๋ย PFF Algorithm





