11. Virtual Memory(2)
Allocation of Frames
์ฌ๋ฌ ํ๋ก์ธ์ค์ page frame์ ์ด๋ป๊ฒ ๋ถ๋ฐฐํ ๊ฒ์ธ๊ฐ?
๊ฐ ํ๋ก์ธ์ค๋ ์ต์ํ์ ํ์ด์ง ์๊ฐ ํ์ํจ
- HW ์: IBM 370 โ SS MOVE ๋ช
๋ น์ด ์คํ์ 6ํ์ด์ง ํ์
- instruction 6๋ฐ์ดํธ โ 2ํ์ด์ง์ ๊ฑธ์น ์ ์์
- source 2ํ์ด์ง, destination 2ํ์ด์ง ํ์
- SW ๊ด์ :
- Loop ๋ด์์ page๋ฅผ ์ถฉ๋ถํ ํ ๋นํ๋ ๊ฒ์ด ์ ๋ฆฌ
- ๊ณ ๊ฐ์ loop๋ง๋ค page fault ๋ฐ์ โ CPU/disk I/O ๋น์ฉ ์์น
- HW ์: IBM 370 โ SS MOVE ๋ช
๋ น์ด ์คํ์ 6ํ์ด์ง ํ์
๋ ๊ฐ์ง ์ฃผ์ ๋ถ๋ฐฐ ๋ฐฉ์:
- fixed allocation
- priority allocation
Fixed Allocation
Equal allocation (๊ท ๋ฑ ๋ถ๋ฐฐ):
- ๋ชจ๋ ํ๋ก์ธ์ค์ ๋์ผํ ์์ frame ํ ๋น
- ์: ์ด 100 frames, 5๊ฐ์ ํ๋ก์ธ์ค โ ๊ฐ 20๊ฐ์ฉ ํ ๋น
Proportional allocation (๋น๋ก ๋ถ๋ฐฐ):
- ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ frame์ ๋ถ๋ฐฐ
- ์์:
- ์:
- , , ,
Priority Allocation
ํ๋ก์ธ์ค **์ฐ์ ์์(priority)**์ ๋ฐ๋ผ ๋น๋ก์ ์ผ๋ก frame์ ํ ๋น
์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์๋ ๋ ๋ง์ frame์ ์ ๊ณต
โ ๋ ๋นจ๋ฆฌ ์ข ๋ฃ๋๋๋ก ํจ (I/O ๋๊ธฐ ์๊ฐ ๊ฐ์ โ ์คํ ์๊ฐ ๋จ์ถ)ํ๋ก์ธ์ค๊ฐ page fault ๋ฐ์ ์:
- ์์ ์ frame ์ค ํ๋์์ victim ์ ํ
- ๋๋ ๋ ๋ฎ์ ์ฐ์ ์์ ํ๋ก์ธ์ค์ frame ์ค ํ๋์์ ์ ํ
Global vs. Local Replacement
Global replacement:
- ๋ชจ๋ ํ๋ก์ธ์ค์ frame ์ค์์ ๊ต์ฒดํ frame์ ์ ํ
- ํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ frame์ ๊ฐ์ ธ๊ฐ ์ ์์
Local replacement:
- ๊ฐ ํ๋ก์ธ์ค๋ ์์ ์๊ฒ ํ ๋น๋ frame ์์์๋ง ๊ต์ฒด
Thrashing
ํ๋ก์ธ์ค์ ์ถฉ๋ถํ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ page fault rate ๊ธ์ฆ
๊ฒฐ๊ณผ:
- CPU ์ฌ์ฉ๋ฅ ๊ธ๊ฐ
- ์ด์์ฒด์ ๋ multiprogramming degree๋ฅผ ๋๋ ค์ผ ํ๋ค๊ณ ์๋ชป ํ๋จ
- ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค ์ถ๊ฐ โ ์ํฉ ์ ํ
Thrashing: ํ์ด์ง ์ค์์ ๋๋ถ๋ถ์ ์๊ฐ์ ์๋ชจ
โ CPU๋ ๋๊ธฐ๋ง ํ๋ฉฐ throughput ๋งค์ฐ ๋ฎ์์ง
์์ ์ฝ๋:
main() {
for (i = 1; i < 100000; i++) {
A = B + X;
}
}
Thrashing Diagram
๊ทธ๋ํ: CPU Utilization vs. Degree of Multiprogramming
์ฒ์์๋ ์ฆ๊ฐ โ ์ผ์ ์ง์ ์ดํ ๊ธ๊ฒฉํ ๊ฐ์ (thrashing ๋ฐ์)
์ paging์ด ํจ๊ณผ์ ์ธ๊ฐ?
- Locality model
- ํ๋ก์ธ์ค๋ ์ง์ญ์ ์ผ๋ก๋ง ์ ๊ทผ
- locality๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐ๋
- Locality model
์ thrashing์ด ๋ฐ์ํ๋๊ฐ?
- ๋ชจ๋ ํ๋ก์ธ์ค์ locality ์ดํฉ > ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ์์ ํ ๋น๋ ๊ณต๊ฐ
Locality
ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ **๊ณ ๋์ ์ง์ญ์ฑ(locality)**์ ๊ฐ์ง
์์ ์๊ฐ ฮ ๋ด์ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ง ์ง์ค์ ์ผ๋ก ์ฐธ์กฐ๋จ
์๊ฐ ์ง์ญ์ฑ (Temporal Locality):
- ์ต๊ทผ ์ฐธ์กฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๊น์ด ๋ฏธ๋์๋ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์
- ์: loop, subroutine, stack
๊ณต๊ฐ ์ง์ญ์ฑ (Spatial Locality):
- ํ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐธ์กฐ๋๋ฉด ๊ทธ ์ฃผ๋ณ ๋ฉ๋ชจ๋ฆฌ๋ ์์ฃผ ์ฐธ์กฐ๋จ
- ์: ๋ฐฐ์ด ํ์, ๋ช ๋ น์ด ์์ฐจ ์คํ
Locality In a Memory-Reference Pattern
- ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ฅผ ์๊ฐ ์ถ์ผ๋ก ๋ํ๋ธ ๊ทธ๋ํ
- ํน์ ์ง์ญ์ด ์ง์ค์ ์ผ๋ก ์ฐธ์กฐ๋จ โ locality ์๊ฐํ
Working-Set Model
ฮ: working-set window
- ์ผ์ ํ ์์ ์ต๊ทผ ํ์ด์ง ์ฐธ์กฐ (์: ์ต๊ทผ
10,000
instruction)
- ์ผ์ ํ ์์ ์ต๊ทผ ํ์ด์ง ์ฐธ์กฐ (์: ์ต๊ทผ
- ฮ๊ฐ ๋๋ฌด ์์ผ๋ฉด โ locality๋ฅผ ๋ชจ๋ ํฌํจํ์ง ๋ชปํจ
- ฮ๊ฐ ๋๋ฌด ํฌ๋ฉด โ ์ฌ๋ฌ locality๊ฐ ํฌํจ๋์ด ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
- ฮ โ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ locality ์งํฉ์ ๊ฒฐ์
$ D = \sum WS_i $: ์ ์ฒด ํ๋ก์ธ์ค์ working set frame ์
$ m = \text{๊ฐ์ฉ ํ๋ ์ ์} $
- D > m ์ด๋ฉด โ thrashing ๋ฐ์
์ ์ฑ :
- D > m์ด๋ฉด โ ํ๋ก์ธ์ค ์ผ๋ถ๋ฅผ suspend
- โ ๋ฉํฐํ๋ก๊ทธ๋๋ฐ ์ ๋(MPD) ๊ฒฐ์
Working-Set model (์์)
- page reference table:
. . 2 6 1 5 7 7 7 7 5 1 1 2 6 3 4 4 3 4 4 3 3 4 . . .
- ฮ ๋์ ์ฐธ์กฐ๋ ํ์ด์ง๋ค:
WS(tโ) = {1, 2, 5, 6, 7}
WS(tโ) = {3, 4}
Working-Set Model (์ค๋ช )
WS(t, ฮ)
:ฮ
์๊ฐ ๋์ ์ฐธ์กฐ๋ ํ์ด์ง ์งํฉ๋ง์ฝ ํ์ด์ง P๊ฐ
ฮ
๊ธฐ๊ฐ ๋์ ์ฐธ์กฐ๋์๋ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง- ์ฆ,
WS(t)
์ ํฌํจ๋์ด์ผ ํ๋ค
- ์ฆ,
WS(t)
์ ์์น:WS
์ ํฌํจ๋ ํ์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง- ๊ทธ๋ ์ง ์์ผ๋ฉด swap-out ๋์
- suspend ์ฌ๋ถ๋
WS
๊ฐ ๋ชจ๋ ๋ณด์ฅ๋๋๊ฐ ์ฌ๋ถ๋ก ๊ฒฐ์ ๋จ
Keeping Track of the Working Set
์ค์ ๊ตฌํ์ ๋ณต์ก:
- ๊ฐ ํ์ด์ง๋ง๋ค ์ต๊ทผ ์ฐธ์กฐ ์๊ฐ ์ ์ฅ โ ๊ณต๊ฐ, ์ฐ์ฐ ๋น์ฉ ํผ
๊ทผ์ฌ ๋ชจ๋ธ:
- Interval timer + reference bit
์:
- ฮ = 10K
- 5K time unit๋ง๋ค interrupt ๋ฐ์
- ํ์ด์ง๋ง๋ค 2๋นํธ ์ ์ง
- interrupt๋ง๋ค copy & reset
- ์ ์ด๋ 1 ๋นํธ๋ผ๋ 1์ด๋ฉด โ working set์ ํฌํจ
๋ฌธ์ ์ :
- ์๋ฒฝํ ์ถ์ ์ ์ด๋ ค์
- ๊ฐ์ ์: 10๋นํธ๋ก ์ถ์ + 1000 time unit๋ง๋ค ์ธํฐ๋ฝํธ
์ง๋ฌธ:
- ฮ๋ ์ด๋ป๊ฒ ๊ฒฐ์ ํ ๊น?
Page-Fault Frequency Scheme
- ํ์ด์ง ํดํธ์จ์ ๋ฐ๋ผ ํ๋ ์ ์๋ฅผ ์กฐ์
page fault rate
โ
โ upper bound (๊ฐ์ํด์ผ ํจ)
โ โ
โ โ
โ โ
โ โ
โ lower bound (์ฆ๊ฐํด๋ ๋จ)
โโโโโโโโโโโโโโโโโโโโโโ number of frames
"ํ์ฉ ๊ฐ๋ฅํ" page fault rate ๋ฒ์๋ฅผ ์ค์
์ค์ fault rate๊ฐ ๋๋ฌด ๋ฎ์ผ๋ฉด โ ํ๋ก์ธ์ค์ ํ๋ ์ ์ ๊ฐ์
๋๋ฌด ๋์ผ๋ฉด โ ํ๋ก์ธ์ค์ ํ๋ ์ ์ ์ฆ๊ฐ
Working set ๋ฐฉ์: ์ผ์ ์๊ฐ ๋์ ์ฐธ์กฐ๋ ํ์ด์ง ๊ธฐ๋ฐ ์กฐ์
PFF ๋ฐฉ์: page fault ๋ฐ์ ์์ ๊ธฐ์ค์ผ๋ก ์กฐ์
Other Benefits of VM: Process Creation
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค ์์ฑ ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ ๊ณต:
- Copy-on-Write (COW)
- Memory-Mapped Files
Copy-on-Write
Copy-on-Write (COW):
- ๋ถ๋ชจ์ ์์ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ ์ด๊ธฐ์๋ ๊ณต์ ํจ
- ์ด๋ ํ ์ชฝ์ด ํ์ด์ง๋ฅผ ์์ ํ ๊ฒฝ์ฐ โ ๊ทธ๋ ๋ณต์ฌ๋จ
์ฅ์ :
- ์ค์ ๋ก ์์ ๋ ํ์ด์ง๋ง ๋ณต์ฌํ๋ฏ๋ก ํ๋ก์ธ์ค ์์ฑ์ด ๋งค์ฐ ํจ์จ์ ์
Before Process 1 Modifies Page C
processโ physical memory processโ
โ โโโโโโโโโโ โ
โโโโโโโโถ page A โโโโค page A โโโโถโโโโโโโโโโโโโค
โโโโโโโโถ page B โโโโค page B โโโโถโโโโโโโโโโโโโค
โโโโโโโโถ page C โโโโค page C โโโโถโโโโโโโโโโโโโ
After Process 1 Modifies Page C
processโ physical memory processโ
โ โโโโโโโโโโ โ
โโโโโโโโถ page A โโโโค page A โโโโถโโโโโโโโโโโโโค
โโโโโโโโถ page B โโโโค page B โโโโถโโโโโโโโโโโโโค
โโโโโโโโถ page C page C โโโโถโโโโโโโโโโโโโค
โโโโโโโโถ copy of page C
Memory-Mapped Files
๋ฉ๋ชจ๋ฆฌ ๋งคํ ํ์ผ I/O:
- ํ์ผ I/O๋ฅผ ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ฒ๋ผ ๋ค๋ฃธ
- ๋์คํฌ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง์ ๋งคํํจ์ผ๋ก์จ ๊ฐ๋ฅ
ํ์ผ์ demand paging ๋ฐฉ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋จ:
- ์ด๊ธฐ์๋ ํ์ผ์ ํ์ด์ง ํฌ๊ธฐ ๋จ์ ์ผ๋ถ๋ง ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
- ์ดํ ์ ๊ทผ์ ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฒ๋ฆฌ
์ฅ์ :
- ํ์ผ ์ ๊ทผ์ ๊ฐ์ํ (read/write ๋์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ)
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์ผ ํ์ผ ํ์ด์ง๋ฅผ ๊ณต์ ํ ์ ์์
Memory Mapped Files
- ํ๋ก์ธ์ค A์ B๊ฐ ๋์ผํ ํ์ผ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์์์ ๊ณต์
- ๋์คํฌ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง์ ๋งคํํ์ฌ, ์ ๊ทผ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด ์ฒ๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ๋งคํ ๊ธฐ๋ฒ์ ์ฌ๋ฌ ํ๋ก์ธ์ค ๊ฐ ํ์ด์ง ๊ณต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ
Other Issues โ Prepaging
Prepaging: ํ๋ก์ธ์ค ์์ ์ ๋ค๋์ page fault๋ฅผ ์ค์ด๊ธฐ ์ํด,
- ํ๋ก์ธ์ค๊ฐ ์ค์ ๋ก ์ฐธ์กฐํ๊ธฐ ์ ์ ์ผ๋ถ ๋๋ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋
๋ฌธ์ :
- ๋ถํ์ํ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
๋ชจ๋ธ:
- s ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ , ๊ทธ ์ค d ํ์ด์ง๋ง ์ฌ์ฉ๋์์ ๋
- ๋น์ฉ ์ ๊ฐ ์กฐ๊ฑด:
d๊ฐ 1์ ๊ฐ๊น์ฐ๋ฉด prepaging์ด ์ ๋ฆฌํจ
Other Issues โ Page Size
ํ์ด์ง ํฌ๊ธฐ ์ ํ ์ ๊ณ ๋ ค์ฌํญ:
- ๋ด๋ถ ๋จํธํ
- ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ
- ๋์คํฌ ์ ์ก ํจ์จ (seek/ํ์ vs. ๋ธ๋ก ์ ์ก)
- I/O ๋น๋
- ์ง์ญ์ฑ ํฅ์
ํธ๋ ๋:
- ํ์ด์ง ํฌ๊ธฐ ์ฆ๊ฐ
- CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์๋ ์ฆ๊ฐ๋ก ์ธํด ํฐ ํ์ด์ง๊ฐ ์ ๋ฆฌํด์ง
- ๋จ, page fault์ ๋น์ฉ์ด ์๋์ ์ผ๋ก ์ปค์ง๊ณ ์์
Other Issues โ TLB Reach
TLB Reach:
- TLB๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์
์ด์์ ์กฐ๊ฑด:
- ๊ฐ ํ๋ก์ธ์ค์ working set์ด TLB์ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์ด์์
- ๊ทธ๋ ์ง ์์ผ๋ฉด TLB miss ์ฆ๊ฐ
ํด๊ฒฐ ๋ฐฉ๋ฒ:
- ํ์ด์ง ํฌ๊ธฐ ์ฆ๊ฐ
- ๋จ, ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฐ ํ์ด์ง๋ฅผ ์๊ตฌํ์ง๋ ์์ โ ๋จํธํ ์ฐ๋ ค
- ์ฌ๋ฌ ํฌ๊ธฐ์ ํ์ด์ง ์ ๊ณต
- ํฐ ํ์ด์ง๋ฅผ ์๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฆฌ
- ํ์ด์ง ํฌ๊ธฐ ์ฆ๊ฐ
Other Issues โ Program Structure
ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๊ฐ page fault ์์ ๋ฏธ์น๋ ์ํฅ
์:
int data[128][128]; // row๋น ํ๋์ ํ์ด์ง ์ฌ์ฉ
- Program 1:
for (j = 0; j < 128; j++)
for (i = 0; i < 128; i++)
data[i][j] = 0;
โ 128 ร 128 = 16,384 page faults
- Program 2:
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
data[i][j] = 0;
โ 128 page faults
โ ๋ฐ์ดํฐ ์ ๊ทผ ์์๋ง ๋ฌ๋ผ์ ธ๋ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํผ
Other Issues โ I/O Interlock
I/O Interlock: ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ธ(lock)๋์ด์ผ ํ ๊ฒฝ์ฐ
์:
- ์ฅ์น์์ ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต์ฌํ๋ ์ค์ธ ํ์ด์ง๋ ๊ต์ฒด๋๋ฉด ์ ๋จ
- โ ํด๋น ํ์ด์ง๋ฅผ page replacement์ victim์ผ๋ก ์ ํํ๋ฉด ์ ๋จ
ํด๊ฒฐ:
- ํด๋น ํ์ด์ง๋ ์ผ์ ์๊ฐ ๋์ ๊ณ ์ (lock) ์ํ๋ก ์ ์ง
๊ต์๋ ๊ฐ์ ์์ฝ
Address Space์ ์ด๊ธฐ ๊ตฌ์กฐ
- ํ๋ก์ธ์ค ์์ ์ address space ๋๋ถ๋ถ์ด ๋น์ด ์์
- ์ด๊ธฐ์๋ heap๊ณผ stack๋ ์์
- function call๋ก stack์ด ์์ฑ๋๊ณ heap๋ ์ ์ ํ์ฅ๋จ
- Contiguous Allocation์์๋ ๊ฐ์ด๋ฐ ๋น ๊ณต๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํด์ผ ํ์
Paging์ ํ์์ฑ
- ๋น ๊ณต๊ฐ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์์๋ ๋จ
- ๋น์ด์๋ ์ฃผ์ ๊ณต๊ฐ์ ๋ํด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐฉ์ง
- Virtual Memory์ Demand Paging ๊ฐ๋ ์ด ์ฌ๊ธฐ์ ์์
Logical Address vs Physical Address
Address ๋ถ๋ฆฌ ๊ฐ๋
- Logical: ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ ๊ฐ์์ ์ฃผ์
- Physical: ์ค์ ๋ฉ๋ชจ๋ฆฌ์์์ ์ฃผ์
- ์ฃผ์ ๊ณต๊ฐ์ ๋ถ๋ฆฌ๋ ์ด์์ ์ ์ฐ์ฑ ํ๋ณด๋ฅผ ์ํด ์ฌ์ฉ๋จ
์ด์์ฒด์ ์ ์ ์ฐ์ฑ ์์
- ์ง์ฃผ์ธ: ์ฌ์ฉ์ ํ๋ก์ธ์ค
- ์ง ๊ด๋ฆฌ์ธ: ์ด์์ฒด์
- ํ์ด์ง๋ฅผ ์ฌ๋ฆฌ์ง ์๊ณ ๋ ์ฌ๋ผ์จ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ ๊ฐ๋ฅ (๊ฐ์ง ๋ )
Demand Paging
๊ฐ๋
- ์ค์ ๋ก CPU๊ฐ ์ ๊ทผํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
- ์ด๊ธฐ ๋ก๋ฉ ์๋ ๋น ๋ฆ
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ ํฐ ์ฃผ์ ๊ณต๊ฐ๋ ์ด์ ๊ฐ๋ฅ
Fork ๋ฐ ๊ณต์
- page table์ ๊ณต์ ํจ์ผ๋ก์จ fork ์๋ ํฅ์
- Copy-On-Write ๊ธฐ๋ฐ์ผ๋ก ํ์ด์ง ์์ ์ ๋ถํ
Page Fault Handler
์ฒ๋ฆฌ ํ๋ฆ
- CPU๊ฐ ์ ๊ทผ โ ํ์ด์ง ์์ โ page fault ๋ฐ์
- OS๊ฐ free frame ํ์
- ํ์ํ ๋ฐ์ดํฐ ๋์คํฌ์์ ์ฝ์ด์ด
- page table ๊ฐฑ์ ๋ฐ valid ๋นํธ ์ค์
- fault ๋ฐ์ํ instruction ์ฌ์์
Page Replacement Algorithm
Optimal (์ด๋ก ์ )
- ์์ผ๋ก ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
- ์ค์ ๊ตฌํ์ ๋ถ๊ฐ (๋ฏธ๋ ์์ธก ๋ถ๊ฐ๋ฅ)
Locality ๊ธฐ๋ฐ ์ ๊ทผ
- ์ต๊ทผ์ ์ ๊ทผ๋ ํ์ด์ง๋ ์์ผ๋ก๋ ์ ๊ทผ๋ ํ๋ฅ ๋์
- LRU: ์ต๊ทผ ๊ฐ์ฅ ์ค๋์ ์ ์ฌ์ฉ๋ ํ์ด์ง ์ ๊ฑฐ
LRU์ ๊ตฌํ ๋ฌธ์
- Timestamp ๊ธฐ๋ฐ ๊ตฌํ์ overhead ํผ
- Memory reference ๋ง๋ค ์๊ฐ ๊ธฐ๋ก ํ์
- logical counter๋ก๋ ์ฌ์ ํ ์์ ํ๋ณ ์ด๋ ค์
LRU Approximation
Reference Bit ๊ธฐ๋ฐ ๊ธฐ๋ฒ
- ๊ฐ ํ์ด์ง๋ง๋ค 1๋นํธ ์ฌ์ฉ (0 ๋๋ 1)
- ์ฃผ๊ธฐ์ ์ผ๋ก 0์ผ๋ก ์ด๊ธฐํ, ์ฐธ์กฐ ์ 1๋ก ๋ณ๊ฒฝ
- Page ๊ต์ฒด ์ 0์ธ ํ์ด์ง๋ค ์ค ํ๋๋ฅผ ์ ํ
Enhanced Approximation
- Reference bit ๊ธฐ๋ก์ ๋ค๋นํธ๋ก ํ์ฅ (8๋นํธ ๋ฑ)
- ๊ณผ๊ฑฐ ์ฃผ๊ธฐ ์ฐธ์กฐ ์ด๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ถ ๊ฐ๋ฅ
Second-Chance (Clock Algorithm)
- ํ์ด์ง๋ฅผ ์ํ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ
- victim ํฌ์ธํฐ๊ฐ reference bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ ์ ํ
- 1์ธ ๊ฒฝ์ฐ bit๋ง 0์ผ๋ก ๋ฐ๊พธ๊ณ ๋ค์ ํ์ด์ง ํ์
- overhead ์ ๊ณ locality๋ ์ ๋ฐ์ํจ
LFU (Least Frequently Used)
- ์ ๊ทผ ๋น๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ํ์ด์ง ์ ๊ฑฐ
- LRU + LFU ๊ฒฐํฉ ๊ธฐ๋ฒ๋ ์กด์ฌ
- Prepaging์ ํตํ ์ด๊ธฐ page fault ์ํ