- 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์ ๋ฐ์์ํค์ง ์๋๋ค.
- ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๋ง์กฑ์ํจ๋ค.