- toc {:toc}
Background
- ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ด์ผ ํ๋ค.
- ํ์ง๋ง, ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์ ์ฒด์ ์ผ๋ก ์คํ๋๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์๋ค. โ ์ฌ์ฉ๋์ง ์๋ ๋ถ๋ถ์ ๋ญ๋นโโโ ๊ทธ๋ฌ๋ฉด ์ฌ์ฉํ๋ ๋ถ๋ถ๋ง ์ฌ๋ ค์ ์ฌ์ฉํ์!
Virtual Memory
Physical memory ๋ก ๋ถํฐ logical memory ๋ถ๋ฆฌ
- ์คํ์ ํ์ํ ๋ถ๋ถ๋ง ์ฌ์ฉํ์. โ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฌ๋ ธ์ง๋ง ์ฌ๋ฆฐ ๊ฒ์ฒ๋ผ ์๋์์ผ์ผ ํจ.
- Logical memory > Physical memory
- ์ฅ์
- Address spaces ๋ฅผ ๋ ๋ง์ ํ๋ก์ธ์ค๊ฐ concurrent ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ๊ฐ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
- CPU utilization ๊ณผ throughput ์ฆ๊ฐ๋๋ค.
- Process creation ์ ํ ๋๋ ๋ถ๋ด์ด ์ค์ด๋ ๋ค.
- Swap ์ ์ ๊ฒ ํด๋ ๋๋ค.
- Address spaces ๋ฅผ ๋ ๋ง์ ํ๋ก์ธ์ค๊ฐ concurrent ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
Virtual Address Space
- ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋๋๊ฐ์ ๋ํ logical view
- ์ฃผ๋ก 0 ์์ ์์ํด์ ๋๊น์ง ์ด์ด์ง๋ค. MMU ๊ฐ logical to physical mapping ํ๋ค.
Demand Paging
- ์์ด๋์ด : ํ์ํ ๋ Page ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๊ธฐ
- Page ํ์ > Page ์ฐธ์กฐ >
- invalid > abort
- not-in-memory > memory ๋ก ๊ฐ์ ธ์ค๊ธฐ
- Swapping ํ๋ paging system ๊ณผ ์ ์ฌํ๋ค.
- Lazy swapper : ํ์ํ ๋๋ง swap ํ๋ค. ์๋๋ฉด ํ์ง ์๋๋ค.
- page fault handler ์ธ pager ๋ฅผ ํตํด์ swap ํ๋ค.
With Valid-Invalid Bit
- ๊ฐ page entry ์ valid-invalid bit ํ์ฌ
- Valid : ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ค. Memory resident
- Invalid : ๋ฉ๋ชจ๋ฆฌ ์์ ์๋ค. > page fault > Swap in
Handling Page Fault
Page Fault handling ๊ณผ์
- ๋ง์ฝ page ์ ๋ํ ์ฐธ์กฐ๊ฐ ์๋ค๋ฉด (๊ฐ์ ), ์ฒซ๋ฒ์งธ ์ฐธ์กฐ๋ Lazy swapper ๋ฅผ ์ฌ์ฉํด swap ๋์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์ trap(Page Fault) ์ ๋ฐ์์ํจ๋ค.
- ์ด์์ฒด์ ๊ฐ ๋ค๋ฅธ table ์ ํ์ธํ๋ค. (if invalid > abort(์ค๋จ), if not in memory > ๋น frame ํ์)
- Free frame ์ ์ฐพ๋๋ค.
- Scheduled disk operation ์ ํตํด page ๋ฅผ frame ์ผ๋ก swap in ํ๋ค.
- Page table ์ ๊ฐฑ์ ํ๋ค.
- Instruction ์ ์ฌ์คํํ๋ค.
- ์ฌ๋ก
- ๋ฐฐ๊ฒฝ : Logical memory ์ A~H ๊น์ง 8 ๊ฐ์ page ์กด์ฌ
- Page table ์ 0, 2, 5 ๋ฒ๋ง valid, ๋๋จธ์ง๋ invalid ํ ์ํ
- Page B ์ ์ ๊ทผํ๊ณ ์ถ์ ์ํฉ. B ์ ์ ๊ทผ
- Invalid โ Page fault ๋ฐ์
- Backing store ์์ swap in ํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด๋
- Page table ์ ๋ฐ์ดํธ ๋ฐ valid-invalid bit ์ ๋ฐ์ดํธ
- Page B ์ ์ ๊ทผ โโโ> Lazy swapper ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ์์ page ์ ๊ทผํ ๋ page fault ๊ฐ ๋ฐ์ํด์ผ swap in ํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ์ ์๋ค.
Performance of Demand Paging
- Page fault rate : p
- 0 < p < 1
- p = 0 ์ด๋ฉด Page fault ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- P = 1 ์ด๋ฉด Page fault ๊ฐ ๋ฐ๋์ ๋ฐ์ํ๋ค.
- Effective Access Time (EAT)
- EAT =
(memory access) + {(page fault overhead), (swap page out), (swap page in)} - Page fault ๊ฐ ๋ฐ์ํ์ง ์์์ ๋ โ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ๋ง ์์
- Page fault ๊ฐ ๋ฐ์ํ์ ๋ overhead, swap ์๊ฐ ์์
- EAT =
Copy-on-Write (COW)
- ๋ถ๋ชจ, ์์ ํ๋ก์ธ์ค ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ page ๋ค์ ๊ณต์ ํ๋๋ก ํ๋ฝํ๋ ๊ฒ
- ์์
- P1 : ๋ถ๋ชจ, P2 : ์์ ๊ฐ์ page A, B, C ๋ฅผ ๊ณต์
- ๊ฐ์ ํ์ด์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ฐ P1 ์ด C ๋ฅผ ์์
- A, B, C ๋ฉ๋ชจ๋ฆฌ ๊ทธ๋๋ก ์ฐจ์งํ๊ณ ์๊ณ ๋ค๋ฅธ free frame ์ C ๋ณต์ฌํด ์์
Free-Frame List
- Free frame ๋ค์ list ๋ก ์ ์ฅํ๊ณ ์๋ ๋ฆฌ์คํธ.
- Free frame ์ ์ ํ์ ์ผ๋ก 0 ์ ์ฑ์ ๋ฃ๋๋ค.
- ---โ 0 ์ ์ฑ์ ๋ฃ์ง ์์ผ๋ฉด ์ด์ ๊ฐ์ด ๋จ์์์ ์ ์๊ธฐ ๋๋ฌธ.
- ์์คํ ์ด ์ฒ์์ ์์ํ๋ฉด ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ free frame ์ free frame list ์ ์ ์ฅ๋๋ค.
Page Replacement
- Background
- Free frame ์ ์ฌ์ฉํด์ ๋์คํฌ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋๋ฐ, free frame ์ด ์๋ค๋ฉด?
- ์๋ ์๋ page ๋ฅผ ์ข ๋ฃ์ํค๊ณ ๋ค์ page ๋ฅผ ํด๋น frame ์ ๋์!
- ์ด๋ค ๊ธฐ์ค์ผ๋ก ์๋ ์๋ page ์ข ๋ฃ ์ํฌ ๊ฒ์ธ๊ฐ?
- ๊ธฐ์ค? โ ์ฑ๋ฅ! ---โ ์ต๋ํ page fault ๊ฐ ๋ฐ์ํ์ง ์๊ณ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๋๋ก ํ์!
- Basic Page Replacement
- ๋์คํฌ์์ ํ์๋ก ํ๋ page ์ ์์น๋ฅผ ์ฐพ๋๋ค.
- Free frame ์ ์ฐพ๋๋ค.
- ์๋ค๋ฉด ์ฌ์ฉํ๋ค.
- ์๋ค๋ฉด ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด victim frame ์ ์ ํ๋ค.
- victim frame ์ ์๋ page table ์ dirty bit ๊ฐ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ๋์คํฌ์ frame ์ ์ด๋ค (์ ์ฅ).
- ํ์๋ก ํ๋ page ๋ฅผ free frame ์ผ๋ก ๊ฐ์ ธ์จ๋ค.
- trap ์ด ๋ฐ์ํ๋ instruction ์ ์ฌ์์ํ๋ค.
---โ Victim frame, desired page 2 ๊ฐ์ page transform ์ด ๋ฐ์ํ๋ค.
Page Replacement Algorithm
Frame-allocation algorithm
- ์ผ๋ง๋ ๋ง์ frame ์ ๊ฐ ํ๋ก์ธ์ค์ ํ ๋นํด์ผ ํ ๊น?
Page-replacement algorithm
- ์ผ๋ง๋ ๋ง์ frame ๋ค์ด ๊ต์ฒด๋๋๊ฐ?
- ๊ฐ์ฅ ์ ๊ฒ page fault ๊ฐ ๋ฐ์ํด์ผ ํ๋ค.
ํ๊ฐ๋ฅผ ์งํํ๋๋ฐ Page reference string ์ ์ฌ์ฉํ๋ค.
- Page reference string
- Page ์ฐธ์กฐ ์์๋ฅผ ์ ์ฅํด๋์ string
FIFO Page Replacement
-
๊ฐ์ฅ ๋จผ์ ์จ, ๊ฐ์ฅ ์ค๋ ์๋ page ๊ฐ victim ์ด ๋์.
-
Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3
-
Frame ๊ฐ์ 3 ๊ฐ๋ก ๊ฐ์
-
Beladyโs anomaly : ์ผ๋ฐ์ ์ผ๋ก, free frame ์ ์๋ฅผ ๋๋ฆด ์๋ก ๊ฒน์น๋ page ๊ฐ ๋ง์์ ธ page fault ๊ฐ ๋ ๋ฐ์ํด์ผ ํ๋, ์คํ๋ ค ๋ ์ฆ๊ฐํ๋ ํ์์ ์๋ฏธํ๋ค.
Optimal Page Replacement
- ๊ฐ์ฅ ๊ธด ์๊ฐ ๋์ ์ฌ์ฉ๋์ง ์์ ์์ ์ธ page ๊ฐ victim ์ด ๋์.
- ๋ฏธ๋๊น์ง ๊ณ ๋ คํ ์๊ณ ๋ฆฌ์ฆ โ ๋ฏธ๋๋ฅผ ๊ณ ๋ คํ ์ ์๋ค. โ ๋๋ฌธ์ ๋ง ๊ทธ๋๋ก โ ์ต์ โ
- ํ์ค์ ์ด์ง ์๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ต๋ฅผ ์ํด ์ฌ์ฉํ๋ค.
- Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3
- Frame ๊ฐ์ 3 ๊ฐ๋ก ๊ฐ์
LRU(Least Recently Used) Page Replacement
-
๊ฐ์ฅ ์ฌ์ฉ๋์ง ์์๋ page ๊ฐ victim ์ด ๋์.
-
Optim ์์๋ ๋ฏธ๋์ ์ง์คํด์ ์งํํ์ผ๋, LRU ์์๋ ๊ณผ๊ฑฐ์ ๋ํด ์ง์คํด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ ์ ํํ๋ค.
-
FIFO ๋ณด๋ค๋ ์ข์ง๋ง Optim ๋ณด๋ค๋ ์ข์ง ์๋ค.
-
์ผ๋ฐ์ ์ผ๋ก ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด๊ณ ์์ฃผ ์ฌ์ฉ๋๋ค.
-
Reference string : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3
-
Frame ๊ฐ์ 3 ๊ฐ๋ก ๊ฐ์
-
LRU ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ
- Counter implementation
- Stack implementation
Counter implementation
- ๋ชจ๋ page entry ์ counter ๊ฐ ์กด์ฌํ๋ค. Page ๊ฐ ์ฐธ์กฐ๋ ๋๋ง๋ค counter ๊ฐ clock ์ copy ํ๊ณ , time stemp ๊ฐ ๊ฐ์ฅ ์ด์ ์ ๊ฒ์ด victim ์ด ๋๋ค.
- Page ๊ฐ ๋ณ๊ฒฝ๋ผ์ผ ํ ๋, counter ๊ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง ๊ฒ์ ์ฐพ๋๋ค.
- Frame ์ด ๋ง์ผ๋ฉด search overhead ๊ฐ ์ฆ๊ฐํ๋ค. Time stemp ๊ฐ์ ํ๋์ฉ ๋น๊ต ํด์ผ ํ๊ธฐ ๋๋ฌธ.
Stack implementation
- Double link ๋ก ์ฐ๊ฒฐ๋ page number stack ์ ์ ์งํ๋ค.
- Page ๊ฐ ์ฐธ์กฐ๋๋ฉด ๋งจ ์๋ก ๋ณด๋ธ๋ค.
- 6 ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์กฐ์ ํด์ผ ํ๋ค.
- ๊ฐ์ฅ ๋ฐ์ ์๋ page ๋ฅผ ๊ต์ฒดํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ search ํ ํ์๋ ์์ง๋ง ๋งค ์ ๋ฐ์ดํธ๊ฐ ๋น์ธ๋ค.
LRU Approximation Algorithms
- LRU ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ์ ์ํด์๋ counter, stack ๋ฑ ์ ์ ํ ํ๋์จ์ด์ ์ง์์ด ํ์ํ๋ค.
- LRU ๋ Reference bit ๋ฅผ ์ฌ์ฉํด ํ๋์จ์ด ์ง์์์ด LRU ์ ๋น์ทํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ค.
- Reference bit
- ์ด๊ธฐ์ 0 ์ผ๋ก ์ด๊ธฐํ๋๋ค.
- Page ๊ฐ ์ฐธ์กฐ๋๋ฉด 1 ๋ก ๋ฐ๋๋ค.
- Reference bit = 0 ์ธ ๊ฒ ์ค ํ๋๋ฅผ ๋๋ค์ผ๋ก ์ ํํด์ ๋ณ๊ฒฝํ๋ค.
Second-chance algorithm
- ์ผ๋ฐ์ ์ผ๋ก๋ FIFO ์ด๋, reference bit ๋ฅผ ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ.
- ์ํ ํ๋ก ๊ตฌ์ฑ๋์ด reference bit ๋ฅผ ์ฌ์ฉํด 1 ์ผ ๋ ๋ด์ฃผ๊ณ 0 ์ด๋ฉด ๊ต์ฒดํ๋ค.
- ๋ชจ๋ reference bit ๊ฐ 1 ์ด๋ฉด FIFO ๋ฅผ ๋ฐ๋ฅธ๋ค.
Global / Local Replacement
- Global Replacement : ํ๋ก์ธ์ค๊ฐ ์ปดํจํฐ ๋ชจ๋ frame ์ ์งํฉ์ผ๋ก๋ถํฐ frame ์ ๊ต์ฒดํ ์ ์๋ค.
- ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ page frame ์ ๋นผ์์ ์ ์๋ค.
- ํ๋ก์ธ์ค ์คํ ์๊ฐ์ด ๋งค์ฐ ๋ค์ํ ์ ์๋ค.
- Throughput ์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๋ ํํ๊ฒ ์ฌ์ฉ๋๋ค.
- Local Replacement : ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ frame ์ ์งํฉ์์๋ง frame ์ ์ ํํ ์ ์๋ค.
- Local ๋ง๋ค ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์๋ค.
- ํ๋ก์ธ์ค๋ง๋ค ์ฑ๋ฅ์ด ๋ ์ผ์ ํ๋ค.
- ํ๋ก์ธ์ค๋ง๋ค ์ฌ์ฉํ ์์ ์ ํํ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์
Thrashing
- ์ ์ : ํ๋ก์ธ์ค๊ฐ swapping ํ๋๋ผ ๋ฐ์ ์ํ swap ์ํด ๋๊ธฐ์ค > ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ > ์ฑ๋ฅ ํ๋ฝ
- ํ๋ก์ธ์ค๊ฐ ์ถฉ๋ถํ ํ์ด์ง๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ฉด page fault rate ๊ฐ ๋งค์ฐ ์ปค์ง๋ค.
- CPU ์ฌ์ฉ๋์ด ์ค์ด๋ ๋ค. โ ์ฌ์ฉ๋์ด ์ค์ด๋๋ OS ๋ ๋ ๋ง์ ํ๋ก์ธ์ค๋ฅผ ํฌ์ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. โ Thrashing ์ฌํ
- ์ด์์ฒด์ โ CPU ์ด์ฉ๋ฅ ๊ฐ์
- ์ด์ฉ๋ฅ ์ด ๋๋ฌด ๋ฎ์์ง๋ฉด ์๋ก์ด ํ๋ก์ธ์ค ์์คํ ์ ์ถ๊ฐํ์ฌ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ์ ๋๋ฅผ ๋์ธ๋ค.
- ์ด ๋, global replacement ๋ฅผ ์ฌ์ฉํด ์ด๋ค ํ๋ก์ธ์ค์ ํ์ด์ง์ธ์ง ๊ณ ๋ คํ์ง ์๊ณ ๊ต์ฒดํ๋ค.
- ๊ต์ฒด๋ ํ์ด์ง๋ค์ด ํด๋น ํ๋ก์ธ์ค์์ ํ์๋ก ํ๋ ๊ฒ์ด๋ผ๋ฉด ๋ค์ page fault ๋ฅผ ๋ฐ์์ํจ๋ค.
- ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ frame ์ ๊ฐ์ ธ์จ๋ค.
- Page swap in, out ์ ์ํด paging ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด queueing ์ด ์งํ๋๊ณ ready queue ๋ ๋น๊ฒ ๋๋ค.
- ๊ธฐ๋ค๋ฆฌ๋ ๋์ CPU ์ด์ฉ๋ฅ ์ด ๋จ์ด์ง๊ณ OS ๋ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์ถ๊ฐํ๋ค.
- ๋ ๋ง์ page fault ๊ฐ ๋ฐ์ํ๋ค.
Global replacement ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด์ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค. Local, priority page replacement ๋ฅผ ์ฌ์ฉํด ์ํฅ์ ์ ํํ ์ ์๋ค.
- Locality model
- ํ ๋น๋ frame ๋ณด๋ค ํ๋ก์ธ์ค์ ํฌ๊ธฐ๊ฐ ๋ ํด ๋ thrashing ๋ฐ์
size of locality > total memory size (Thrashing ๋ฐ์ ์กฐ๊ฑด) - ํ๋ก์ธ์๊ฐ ์ฒ๋ฆฌ๋ ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์์ฒญ์ด ๋ฐ์ํ๋ ๋ฐ, ์ ๊ทผ ์์ฒญ ๋ฉ๋ชจ๋ฆฌ ์์น๋ ํจํด์ ๊ฐ์ง๊ณ ์๋ค. โ ํน์ ์์ญ์์ ์ง์ค์ ์ผ๋ก ์ ๊ทผ ์์ฒญ์ด ๋๋ค.
Working-Set Model
- Locality ๋ฅผ ์ด๋ป๊ฒ ๊ณ์ฐํ ๊น?
- ํ์ํ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ๊ฒ (๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ).
- Delta = Window Size = ํ์ด์ง ์ฐธ์กฐ์ ๊ณ ์
(ํ๋ก์ธ์ค ์ Working set size) = ๊ฐ์ฅ ์ต๊ทผ Delta ๋์ ์ ๊ทผํ ์ด ํ์ด์ง ์ - Delta ๊ฐ ๋๋ฌด ์์ผ๋ฉด ์ ์ฒด locality ๋ฅผ ํ์ธํ๊ธฐ ์ด๋ ต๋ค.
- Delta ๊ฐ ๋๋ฌด ํฌ๋ฉด ์ฌ๋ฌ locality ๋ค์ ๋๋ฐํ๋ค.
- Delta ๊ฐ infinite ํ๋ฉด ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋๋ฐํ๋ค.
= total demand frames = ์๊ตฌ๋๋ ์ด frame ์ - Locality ๊ทผ์ฌ
- Delta ์ ๋ฐ๋ผ์ WSS ๊ฐ ํ๋์ locality ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ณด์ฅํ ์ ์๋ค. ํ์ง๋ง ๋๋ต์ ์ผ๋ก ์ผ๋ง๋ locality ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ ์ ์๋ค๋ ์ ์์ ๊ทผ์ฌํ๋ค ํ ์ ์๋ค.
- ๋ง์ฝ D > m (m : ํ ๋น๋ frame) ์ด๋ฉด Thrashing
Page-Fault Frequency (PFF)
- ์์ฉ ๊ฐ๋ฅํ ์ต๋์ page fault ๋น๋์๋ฅผ ์ค์ ํด๋๊ณ local replacement ์ ์ฑ
์ ์ฌ์ฉํ๋ ๊ฒ
- Page fault rate ์ ์ํ, ํํ์ ์ ์ ํ๋ค.
- ์ํ์ ๋ณด๋ค ๋์ ๊ฒฝ์ฐ page fault ๊ฐ ๋ง์ด ๋ฐ์ํ๋ฏ๋ก ๋ ๋ง์ frame ์ ํ ๋นํด์ค๋ค.
- ํํ์ ๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ page fault ๊ฐ ์ ๊ฒ ๋ฐ์ํ๋ฏ๋ก frame ์๋ฅผ ์ค์ธ๋ค.
- WSS ๋ ์ง์ ์ ์ผ๋ก page fault ๋ฅผ ์ธก์ ํ์ง ์์ง๋ง PFF ์ ๊ฒฝ์ฐ page fault rate ๋ฅผ ์ธก์ ํด ์กฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ ์ง์ ์ ์ธ ๋ฐฉ์์ด๋ค.
Allocating Kernel Memory
์ด์ ๊น์ง๋ User memory ์ ๋ํ ๋ด์ฉ
User memory ์๋ ๋ค๋ฅด๊ฒ ๋์ฐํ๋ค.
Free-memory pool ์์ ํ ๋นํ๋ค.
- User : malloc โ paging โ frames ์ ๋์
- Kernel : kmalloc โ ๋๋์ง ์๊ณ contiguous ํ๊ฒ ํ ๋นํ๋ค.
- Paging ์ ํ๋ฉด ๋๋ ค์ง๊ธฐ ๋๋ฌธ์ contiguous ํ๊ฒ ์ฌ์ฉ
Buddy System Allocator
- ๊ณ ์ ๋ ํฌ๊ธฐ์ segment ๋ฅผ ํ ๋นํด์ค๋ค.
- ๊ณ ์ ๋ ํฌ๊ธฐ = 2 ์ n ์น (์ต์ 4K ์ด์ ๊ฐ์ง๋ค.)
- ๋ง์ฝ, ์์ฒญ๋ ์ฌ์ด์ฆ๊ฐ 3K ์ผ์ง๋ผ๋ ์ฌ๋ฆผํ์ฌ 4K ๋ฅผ ํ ๋นํด์ค๋ค.
- ๋น์ด์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ 256K ์ผ ๋ ๋ง์ฝ 21K ๋ฅผ ํ ๋นํ๊ณ ์ถ๋ค๋ฉด (๋งค์ฐ ์์ ํ ๋น์ ํ์๋ก ํ๋ค๋ฉด) ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 2 ๊ฐ์ฉ ๋๋ ๊ฐ๋ฉฐ ์ต์ ํฌ๊ธฐ๋ฅผ ์ฐพ๋๋ค.
- ์ฅ์ : ์ฌ์ฉํ์ง ์๋ chunk ๋ค์ ๋ ํฐ chunck ๋ก ๋น ๋ฅด๊ฒ ํฉ์น ์ ์๋ค.
- ๋จ์ : 2 ์ n ์น์ผ๋ก ๋ถํ ๋๊ธฐ ๋๋ฌธ์ internal framentation ์ด ๋ฐ์ํ๋ค.
Slab Allocator
- Slab : ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ํ์ด์ง๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ ์์ญ
- Cache : Slab ์์ ์ฌ์ฉ๋๋ ์์ ๋ณด๊ด์ ๊ฐ๋ . ํ๋ ์ด์์ slab ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- Slab ์ ๋ฏธ๋ฆฌ ๋ค์ํ ์ฌ์ด์ฆ์ cache ๋ฅผ ๋ง๋ค์ด ๋๋ ๊ฒ์ด๋ค. ๊ฐ cache ๋ ๋น object(structure) ๋ก ์ฑ์์ง๋ค.
- Structure ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ์์ฒญ์ด ์์ ๋ ๋ฐ๋ก๋ฐ๋ก ํ ๋นํด์ฃผ๊ณ ์ฌ์ฉ์ด ์๋ฃ๋๋ฉด ํ์ํ๋ค.
- ์ฒ์ cache ์์ฑ โ free ๋ก ํ์ / cache ์ structure ์ ์ฅ โ used ๋ก ํ์
- Slab state : Full (=all used) / Empty (=all free) / Partial (=mix of free and used)
- ๋น slab ์ด ์๋ค๋ฉด ์๋ก์ด slab ์ ํ ๋นํ๋ค.
- Cache ์์ ๊ฐ ํฌ๊ธฐ๋ง๋ค์ Object ๋ฅผ ๊ฐ์ง๊ณ ์์ด fragmentation ์ ๋ฐ์์ํค์ง ์๋๋ค.
- ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๋ง์กฑ์ํจ๋ค.