10. Virtual Memory(1)
Size of a Logical Address Space
[stack]
โ
[heap]
[data]
[text]
โ
0
- 32๋นํธ ์ฃผ์์ ๊ฒฝ์ฐ, ์ต๋ ์ฃผ์ ๊ณต๊ฐ:
- ๊ฐ ํ๋ก์ธ์ค๋น ์ต๋ 4GB ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ
- ์ด ์ค ๋ง์ ๋ถ๋ถ์ด ์ค์ ๋ก๋ ์ฌ์ฉ๋์ง ์์
Background
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ: ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ตฌ์กฐ
์ฅ์ :
- ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์์ด๋ ์คํ ๊ฐ๋ฅ
- ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ๋ณด๋ค ํจ์ฌ ํด ์ ์์
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ฃผ์ ๊ณต๊ฐ ๊ณต์ ๊ฐ๋ฅ
- ํ๋ก์ธ์ค ์์ฑ์ ๋ ํจ์จ์ ์ผ๋ก ์ํ ๊ฐ๋ฅ
- ํ์ด์ง๋ฅผ ์ค์์ธ/์ค์์์ ํ ์ ์์ด์ผ ํจ
๊ตฌํ ๋ฐฉ์:
- Demand paging
- Demand segmentation
Virtual Memory Larger than Physical Memory
virtual memory:
page 0
page 1
page 2
...
page n
โ memory map โ physical memory ์ผ๋ถ๋ง ์ ์ง
โ ๋๋จธ์ง๋ secondary storage(๋์คํฌ ๋ฑ)์ ์ ์ฅ
Demand Paging
ํ์ด์ง๊ฐ ํ์ํ ๋๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ฌ์ด
- I/O ๊ฐ์
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
- ๋ฐ์ ์๋ ํฅ์
- ์ฌ์ฉ์ ์ ์ฆ๊ฐ
ํ์ด์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ:
- ์๋ชป๋ ์ฐธ์กฐ โ abort
- ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉด โ ๋ถ๋ฌ์ค๊ธฐ
Lazy swapper:
- ํ์ํ ์๊ฐ๊น์ง ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์์
- ์ด ๊ธฐ๋ฅ์ ์ํํ๋ ๋ชจ๋์ pager๋ผ๊ณ ๋ถ๋ฆ
Valid-Invalid Bit
๊ฐ ํ์ด์ง ํ ์ด๋ธ ํญ๋ชฉ์๋ valid-invalid ๋นํธ๊ฐ ์์
Valid (V): ๋ฉ๋ชจ๋ฆฌ์ ์์
Invalid (I):
ํด๋น ํ์ด์ง๊ฐ ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ ์์ (illegal)
๋์คํฌ์์ ์์ง ๋ก๋ฉ๋์ง ์์ (not-in-memory)
๋์คํฌ์์๋ ์ ํจํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์๋ ์์ (obsolete)
์: ํญ๊ณต ์์ฝ ์์คํ
- ํ๋์ ์ ์ญ ๋์คํฌ + ์ฌ๋ฌ ์ปดํจํฐ/์ง์
๋ชจ๋ ํญ๋ชฉ์ ์ด๊ธฐ์๋ invalid ์ํ๋ก ์ค์
์ฃผ์ ๋ณํ ์ค, invalid์ด๋ฉด โ page fault
Page Table when Some Pages are not in Main Memory
- ์ผ๋ถ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ ๊ฒฝ์ฐ:
- page table์๋ valid-invalid ๋นํธ๊ฐ ์กด์ฌ
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง๋ ๋์คํฌ์ ์ ์ฅ๋จ
- ์ ๊ทผ ์ page fault ๋ฐ์
Page Fault
์ ํจํ์ง ์์ ํ์ด์ง ์ ๊ทผ โ MMU๊ฐ trap ๋ฐ์ โ page fault trap
Trap handler๋ OS ๋ด๋ถ์ ๊ตฌํ๋์ด ์์
OS๊ฐ page fault๋ฅผ ์ฒ๋ฆฌํ๋ ์์:
- OS๊ฐ ๋ค๋ฅธ ํ
์ด๋ธ์ ์กฐํํ์ฌ ์์ธ์ ๊ฒฐ์
- illegal reference? bad address? protection violation?
- ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ โ ๊ณ์ ์งํ
- ๋น ํ๋ ์ ํ๋ณด
- ์์ผ๋ฉด ๊ต์ฒด (replacement)
- ๋์คํฌ์์ ํ์ด์ง๋ฅผ ์ฝ์ด ์ด
- ๋์คํฌ I/O ์๋ฃ๊น์ง ํ๋ก์ธ์ค๋ wait ์ํ
- ์๋ฃ ํ page table ๊ฐฑ์ (frame #, valid bit)
- ํ๋ก์ธ์ค๋ฅผ Ready ํ์ ๋ฃ๊ณ dispatch
- ํ์ด์ง fault ์ฒ๋ฆฌ ์๋ฃ โ ํ๋ก์ธ์ค ์ฌํ ๋น
- fault๊ฐ ๋ฐ์ํ๋ ๋ช ๋ น ์ฌ์คํ
- OS๊ฐ ๋ค๋ฅธ ํ
์ด๋ธ์ ์กฐํํ์ฌ ์์ธ์ ๊ฒฐ์
Steps in Handling a Page Fault
ํ๋ก์ธ์ค๊ฐ ํ์ด์ง ์ฐธ์กฐ
โ
ํด๋น ํ์ด์ง๊ฐ ๋์คํฌ์๋ง ์กด์ฌ โ trap ๋ฐ์
โ
์ด์์ฒด์ ๊ฐ ํ์ด์ง ํ
์ด๋ธ๊ณผ free frame ์กฐํ
โ
๋์คํฌ์์ ํด๋น ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ถ๋ฌ์ด (bring in)
โ
page table ๊ฐฑ์
โ
๋ช
๋ น ์ฌ์์
Difficulties in actual HW design
์ธ์ page fault๊ฐ ๋ฐ์ํ๋๊ฐ?
- ๋ช ๋ น์ด fetch ์ค: ๋ฌธ์ ์์
- ํผ์ฐ์ฐ์ fetch ์ค: instruction fetch โ decode โ operand fetch ์ค ์ฌ์์ ํ์
- ์ต์
์ ๊ฒฝ์ฐ: ๋ช
๋ น์ด๊ฐ ์ฌ๋ฌ ์์น๋ฅผ ๊ฐฑ์ ํ ๋
- ์: block copy ๋ช
๋ น์ด
copy count from_address to_address
- to_address๊ฐ ๋ ๋ธ๋ก์ ๊ฑธ์ณ ์์ ๊ฒฝ์ฐ
- ๋ ๋ฒ์งธ ๋ธ๋ก ์ ๊ทผ ์ค fault ๋ฐ์ํ๋ฉด ์ด์ ์์ Undo ํ์
- ์: block copy ๋ช
๋ น์ด
ํด๊ฒฐ์ ์ํด ์์ ์ฃผ์/๊ฐ ์ ์ฅ์ ์ํ ํ๋์จ์ด ์ง์ ํ์
Performance of Demand Paging
ํ์ด์ง ํดํธ ํ๋ฅ
- โ page fault ์์
- โ ๋ชจ๋ ์ฐธ์กฐ๊ฐ fault
์ ํจ ์ ๊ทผ ์๊ฐ (Effective Access Time, EAT) ๊ณ์ฐ:
์์:
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ = 200ns
- ํ๊ท page fault ์ฒ๋ฆฌ ์๊ฐ = 8ms = 8,000,000ns
- ์ผ ๋:
โ ์๋ ์ ํ ์ฝ 40๋ฐฐ
์์ํ demand paging:
- ์ฐธ์กฐ ์ ๊น์ง swap-in ํ์ง ์์
- ์์ ์ ์๋ฌด ํ์ด์ง๋ ๋ฉ๋ชจ๋ฆฌ์ ์์
์ฐธ์กฐ์ ์ง์ญ์ฑ (Locality of reference):
- ๊ฑฐ์ ๋ชจ๋ workload์์ ๋ํ๋จ
- ์ผ์ ์๊ฐ ๋์ ํน์ ์์ ํ์ด์ง๋ง ์ง์ค์ ์ผ๋ก ์ฐธ์กฐ
- ์ด ํน์ฑ ๋๋ถ์ demand paging์ด ์ค์ฉ์
What happens if there is no free frame?
Page replacement
- page-fault ์ฒ๋ฆฌ ๋ฃจํด์ ์์ ํ์ฌ ํ๋ ์์ด ๋ถ์กฑํ ๋ page replacement ์ํ
- modify (dirty) bit๋ฅผ ์ฌ์ฉํ์ฌ ๋์คํฌ ์ ์ก ๋น์ฉ ์ต์ํ (์์ ๋ ํ์ด์ง๋ง ๋์คํฌ๋ก swap-out)
- ๋
ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ฆฌ๋ฅผ ์์ฑ
- ๋ ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก ํฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ณต ๊ฐ๋ฅ
- ๊ฐ์ ํ์ด์ง๊ฐ ์คํ ์ค ์ฌ๋ฌ ๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ฌ ์ ์์
Page replacement algorithm
- victim page(๊ต์ฒด ๋์ ํ์ด์ง)๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ชฉํ: page fault ์ ์ต์ํ
Basic Page Replacement
- ๋์คํฌ์์ ํ์ํ ํ์ด์ง ์์น ์ฐพ๊ธฐ
- ๋น ํ๋ ์ ์ฐพ๊ธฐ
- ๋น ํ๋ ์์ด ์์ผ๋ฉด โ ๊ทธ๋๋ก ์ฌ์ฉ
- ์์ผ๋ฉด โ page replacement ์๊ณ ๋ฆฌ์ฆ์ผ๋ก victim frame ์ ํ
- ๋์คํฌ์์ ํด๋น ํ์ด์ง๋ฅผ victim frame์ ๋ถ๋ฌ์ค๊ณ , page table๊ณผ free frame table ์ ๋ฐ์ดํธ
- ์ค๋จ๋ ํ๋ก์ธ์ค ์ฌ์์
Page-Replacement Algorithms
์ต์ page-fault ๋น์จ์ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ด์์
์๊ณ ๋ฆฌ์ฆ์ ํน์ reference string์ ๋ํด ์คํํ์ฌ ์ฑ๋ฅ ํ๊ฐ
์์ reference string:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Graph of Page Faults vs. the Number of Frames
- ํ๋ ์ ์๊ฐ ์ฆ๊ฐํ๋ฉด page fault ์๋ ๊ฐ์
- ๋จ, ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋ (โ Beladyโs anomaly)
First-In-First-Out (FIFO) Algorithm
- Reference string:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
- 3 ํ๋ ์์ผ ๋:
1 2 3 โ page fault
4 โ page fault, replace 1
1 โ page fault, replace 2
2 โ page fault, replace 3
5 โ page fault, replace 4
1 2 3 4 5 โ ์ด 9 page faults
- 4 ํ๋ ์์ผ ๋:
page fault ๋ ๋ง์์ง โ 10
โ Beladyโs Anomaly (ํ๋ ์์ด ๋์๋๋ฐ๋ page fault๊ฐ ์ฆ๊ฐ)
Optimal Algorithm
๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด
์์:
Reference: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
4๊ฐ์ ํ๋ ์ ์ฌ์ฉ ์ โ ์ด 6 page faults
- ์ค์ ์์คํ ์์ ์ ์ฉ ๋ถ๊ฐ๋ฅ (๋ฏธ๋ ์ฐธ์กฐ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ)
- ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ํ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ๋จ
Least Recently Used (LRU) Algorithm
- Reference string:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
- LRU ๋ฌธ์ ์ :
- LRU๋ฅผ ๊ทธ๋๋ก ๊ตฌํํ๋ ค๋ฉด:
- ๊ฐ ํ์ด์ง์ ํ์์คํฌํ ํ์ โ page table traffic ์ฆ๊ฐ
- ๊ฐ์ฅ ์ค๋๋ ํ์์คํฌํ๋ฅผ ์ฐพ๋ ์ฐ์ฐ ํ์
- ์ปค๋์ ์ ์ฉํ๊ธฐ์๋ ๊ณต๊ฐ/์๊ฐ ์ค๋ฒํค๋๊ฐ ํผ
- โ ๊ทผ์ฌ ๋ชจ๋ธ ํ์
- LRU๋ฅผ ๊ทธ๋๋ก ๊ตฌํํ๋ ค๋ฉด:
LRU Implementation Algorithms
์นด์ดํฐ ๊ธฐ๋ฐ ๊ตฌํ:
- ๊ฐ ํ์ด์ง๋ง๋ค ์นด์ดํฐ ์ ์ง
- CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ๋ง๋ค ์นด์ดํฐ ์ฆ๊ฐ
- ํ์ด์ง ์ฐธ์กฐ ์ ํ์ฌ ์นด์ดํฐ ๊ฐ์ ์ ์ฅ
- ๊ต์ฒด ์ ๊ฐ์ฅ ์์ ์นด์ดํฐ ๊ฐ์ ๊ฐ์ง ํ์ด์ง๋ฅผ ์ ํ
- ๋จ์ :
- ๋งค ์ ๊ทผ ์ ์นด์ดํฐ ์ ๊ทผ ๋น์ฉ
- ๊ต์ฒด ์ ์ ์ฒด ๊ฒ์ ํ์
- ์ค๋ฒํค๋ ํผ
์คํ ๊ธฐ๋ฐ ๊ตฌํ:
- ํ์ด์ง ๋ฒํธ๋ฅผ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ(stack) ํํ๋ก ์ ์ง
- ์ฐธ์กฐ ์ ํด๋น ํ์ด์ง๋ฅผ top์ผ๋ก ์ด๋
- ์ด๋ ์ ํฌ์ธํฐ 6๊ฐ ์์ ํ์
- ๊ต์ฒด ์ ๊ฒ์ ๋ถํ์
Use of a Stack to Record the Most Recent Page References
- Reference string:
4 7 0 7 1 0 1 2 7 b
- ์คํ ์ํ ๋ณํ:
stack before:
top โ 2
1
0
4
stack after:
top โ 7
2
1
0
4
- ์ต๊ทผ ์ฌ์ฉ๋ ํ์ด์ง๊ฐ top์ ์์น
LRU Approximation Algorithms
Reference bit ๋ฐฉ์:
- ๊ฐ ํ์ด์ง์ 1๋นํธ ๋ ํผ๋ฐ์ค ๋นํธ ํ ๋น (์ด๊ธฐ๊ฐ 0)
- ํ์ด์ง๊ฐ ์ฐธ์กฐ๋๋ฉด ๋นํธ = 1
- ๊ต์ฒด ์ reference bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ ์ ํ
์ถ๊ฐ ์ฐธ์กฐ ๋นํธ ๋ฐฉ์:
- ๊ฐ ํ์ด์ง์ 8๋นํธ ํ ๋น
- ์ผ์ ์ฃผ๊ธฐ๋ง๋ค reference bit๋ฅผ ๊ฐ์ฅ ๋์ ๋นํธ๋ก ์ํํธ
- ๋๋จธ์ง ๋นํธ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฌํํธ (ํ์ ๋นํธ ์ญ์ )
- ์:
00000000
: ์ฐธ์กฐ ์ ๋จ10101010
: 2์ฃผ๊ธฐ๋ง๋ค ์ฐธ์กฐ๋จ
LRU Approximation Algorithms (๊ณ์)
Second-Chance (Clock) ์๊ณ ๋ฆฌ์ฆ
- reference bit ์ฌ์ฉ
- ์ํ ํ๋ก ํ์ด์ง ์ ์ง
- ํฌ์ธํฐ๊ฐ reference bit๊ฐ 0์ธ ํ์ด์ง๋ฅผ ์ฐพ์ ๋๊น์ง ์ด๋
- reference bit๊ฐ 1์ด๋ฉด 0์ผ๋ก ๋ฆฌ์ ํ๊ณ ๋ค์ ํ์ด์ง๋ก ์ด๋
- ์ฌ์ค์ FIFO์ ์ ์ฌํ์ง๋ง ์ฐธ์กฐ๋ ํ์ด์ง์ ๊ธฐํ ํ ๋ฒ ๋ ์ค
ํน์ง:
- ํฌ์ธํฐ๋ ์ํ์ ์ผ๋ก ํ์
- 1์ด๋ฉด bit๋ง 0์ผ๋ก ๋ฐ๊พธ๊ณ ์ง๋์นจ
- 0์ด๋ฉด victim์ผ๋ก ์ ํ
ํฅ์๋ Second-Chance ์๊ณ ๋ฆฌ์ฆ
- Reference bit + Modify bit ์กฐํฉ
- ์ฐ์ ์์:
- Not-Referenced + Not-Modified: ์ต์ฐ์ ์ผ๋ก ๊ต์ฒด
- Referenced + Modified: ๋ง์ง๋ง ์ฐ์ ์์
Second-Chance (Clock) Page-Replacement Algorithm
- ์๊ฐ์ ์์:
(a)
reference bit: 1 1 0 1 0
next victim โ ์ฐพ์ ๋๊น์ง ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ๊ฒ์ฌ
(b)
reference bit๊ฐ 1์ธ ๊ฒฝ์ฐ๋ ๋ฌด์ํ๊ณ ๋ค์์ผ๋ก ์งํ
- ํ ๋ฐํด ๋๋ฉด์ ์ ์ ํ ๊ต์ฒด ๋์ ์ ํ
Counting Algorithms
๊ฐ ํ์ด์ง์ ๋ํด ์ฐธ์กฐ ํ์ ์นด์ดํฐ๋ฅผ ์ ์งํจ
LFU (Least Frequently Used) ์๊ณ ๋ฆฌ์ฆ
- ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒด
MFU (Most Frequently Used) ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฅ ์ ๊ฒ ์ฐธ์กฐ๋ ํ์ด์ง๋ ์ต๊ทผ์ ๋ถ๋ฌ์จ ํ ์์ง ์ฌ์ฉ๋์ง ์์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฐ์ ์ ๊ธฐ๋ฐํ์ฌ,
- ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ๋ง์ ํ์ด์ง๋ฅผ ์ ์งํ๊ณ , ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ์ ์งํ์ง ์์
Virtual Memory & Page Replacement - ๊ต์๋ ๊ฐ์ ์์ฝ
Frame Allocation๊ณผ Priority
- ๊ฐ ํ๋ก์ธ์ค์ ํ๋ ์ ์๋ฅผ ์ด๋ป๊ฒ ํ ๋นํ ์ง๋ OS ์ ์ฑ ์ ๋ฌ๋ ค ์์
- ์ฐ์ ์์ ๊ธฐ๋ฐ ์ ์ฑ
(priority allocation): ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์ ํ๋ ์์ ๋ ๋ง์ด ํ ๋น
- ํ์ง๋ง ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ๋ฌด์กฐ๊ฑด ๋ง์ด ์ค ํ์๋ ์์
- ์ค์ํ ๋ชฉํ๋ page fault๋ฅผ ์ค์ด๋ ๊ฒ
- ์์ฃผ ์ ๊ทผํ๋ ํ์ด์ง๋ค์ ์๋ณํด์ ํด๋น ํ๋ ์ ์๋งํผ๋ง ํ ๋นํด์ฃผ๋ ๊ฒ์ด ํต์ฌ
Working Set Model
- ํ๋ก์ธ์ค๊ฐ ์์ฃผ ์ ๊ทผํ๋ ํ์ด์ง๋ค์ ์งํฉ์ working set์ด๋ผ ๋ถ๋ฆ
- ์ผ์ ์๊ฐ ๋์ ์ฐธ์กฐ๋ ํ์ด์ง๋ค์ ์งํฉ์ ๊ธฐ์ค์ผ๋ก ํ๋จ
- ์ด working set์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํด์ผ page fault๊ฐ ์ค์ด๋ฆ
- ๋ง์ฝ ์ ์ฒด working set์ ๋ด์ ์ ์๋ค๋ฉด suspend๋ฅผ ๊ณ ๋ คํด์ผ ํจ
Thrashing
- ์์ฃผ ์ ๊ทผํ๋ ํ์ด์ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ง ๋ชปํด ์ง์์ ์ผ๋ก page fault ๋ฐ์
- I/O ๋๊ธฐ ์๊ฐ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ๋ฉฐ CPU utilization์ ๊ฐ์
- ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์คํ์ํค๋ฉด ๊ธฐ์กด ํ๋ก์ธ์ค์ ํ๋ ์์ ๋นผ์์์ผ ํด์ ์ ํ๋จ
- ํด๊ฒฐ ๋ฐฉ๋ฒ:
- working set์ด ๋ฉ๋ชจ๋ฆฌ์ ํญ์ ์ ์ง๋๋๋ก ๋ณด์ฅ
- ๋๋ ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ suspend
Locality
- ์๊ฐ ์ง์ญ์ฑ(temporal locality): ์ต๊ทผ ์ฐธ์กฐํ ํ์ด์ง๋ ๋ค์ ์ฐธ์กฐํ ํ๋ฅ ๋์
- ๊ณต๊ฐ ์ง์ญ์ฑ(spatial locality): ์ฐธ์กฐํ ํ์ด์ง ๊ทผ์ฒ์ ํ์ด์ง๋ ์์ฃผ ์ฐธ์กฐ๋จ
Page Fault Frequency (PFF)
- page fault์ ๋น๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ์ ์ฌ๋ถ๋ฐฐ
- ์ํ์ ์ ๋์ผ๋ฉด ํ๋ ์ ์ถ๊ฐ, ํํ์ ๋ณด๋ค ๋ฎ์ผ๋ฉด ํ๋ ์ ํ์
- working set๋ณด๋ค ์ ํ๋๋ ๋ฎ์ง๋ง ์ค๋ฒํค๋๊ฐ ํจ์ฌ ๋ฎ์
Global vs Local Replacement
- Global replacement: ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ๋ ์๋ ๋นผ์์์ฌ ์ ์์
- Local replacement: ์์ ์๊ฒ ํ ๋น๋ ํ๋ ์๋ง ๊ต์ฒด ๊ฐ๋ฅ
- Local replacement๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ thrashing ๋ฐฉ์ง ์ด๋ ค์
Copy-On-Write
- ๋ถ๋ชจ์ ์์ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ํ์ด์ง๋ฅผ ๊ณต์
- write๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ํด๋น ํ์ด์ง๋ฅผ ๋ณต์ฌํ์ฌ ๊ฐ๊ฐ ์์ ํ๋๋ก ํจ
- xv6์์๋
rsw
๋นํธ๋ฅผ ํ์ฉํ์ฌ COW ์ฌ๋ถ ํ์ - page fault๋ฅผ ํตํด write ์์ ์ ์๋ก ํ ๋น
Memory-Mapped Files
- ํ์ผ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ง์ ๋งคํ
- I/O ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ผ๋ก ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅ
- ์ฑ๋ฅ ์ด์ :
- ์ฒซ ์ ๊ทผ ์ page fault๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ
- ์ดํ ์ฐ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ์ํ๋์ด ๋น ๋ฆ
- ๋์คํฌ I/O ํ์ ๊ฐ์
Page Size vs TLB Reach
- TLB Reach: TLB๊ฐ ์ปค๋ฒํ ์ ์๋ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- page size๊ฐ ์ปค์ง๋ฉด TLB Reach ์ฆ๊ฐ
- ๋ค๋จ๊ณ ํ์ด์ง ํ ์ด๋ธ์ depth ๊ฐ์
- ๋จ์ :
- ๋ด๋ถ ๋จํธํ(internal fragmentation)
- ๋ถํ์ํ ๋ฐ์ดํฐ๊น์ง ๋ก๋ฉ๋ ์ ์์
- ์ฅ์ :
- Disk I/O ํจ์จ ์ฆ๊ฐ
- ์ ์ฅ์ฅ์น ์ ๊ทผ ์ฑ๋ฅ ํฅ์
xv6 Disk Layer, Buffer Cache, Logging
๊ตฌ์กฐ
- xv6์ ํ์ผ ์์คํ
๊ณ์ธต: 7๋จ๊ณ
- boot sector
- superblock
- log
- bitmap
- inode
- data block
- buffer cache
Buffer Cache
- disk block์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ์ฅ
- ๊ตฌ์กฐ์ฒด๋ก ๊ด๋ฆฌ๋จ (
bcache
) - LRU ๋ฐฉ์์ ๋ฆฌ์คํธ๋ก ๊ด๋ฆฌ
binit
,bread
,bget
,brelease
ํจ์ ์ฌ์ฉ
Logging
- log๋ฅผ ๋จผ์ ์์ฑํ ๋ค commit
- crash ๋๋น ๋ณต๊ตฌ ๊ฐ๋ฅ
- commit ์:
- dirty block๋ค์ log์ ๋จผ์ ์์ฑ
- ์ดํ ์ค์ ์์น์ ๋ฎ์ด์
- log header ์ง์
Transaction
- log์ ์ธ ์์ ๋จ์
begin_op
โ ์์ ์ํ โend_op
โcommit
- commit ์ง์ ๊ธฐ์ค์ผ๋ก ๋ณต๊ตฌ ์ฌ๋ถ ๊ฒฐ์
- group commit ๋ฐฉ์์ผ๋ก ํจ์จ์ฑ ํ๋ณด
Project 3 ๊ณผ์ ์๋ด
1. Copy-On-Write
fork()
์ ํ์ด์ง ๋ณต์ฌ ๋์ ๊ณต์- write ๋ฐ์ ์ page fault๋ฅผ ํตํด ๊ฐ๋ณ ๋ณต์ฌ
rsw
๋นํธ๋ก COW ํ์- reference count ๊ด๋ฆฌ ํ์
2. Large File Support
- ๊ธฐ์กด 12 direct block โ 11 direct + 1 double indirect block
- ์ต๋ 64MB ํ์ผ ์ง์
maxfile
,NDIRECT
,NINDIRECT
์์ bmap
,itrunc
,create
๋ฑ ํจ์ ์์
3. Symbolic Link
- ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ์ฅํ๋ ๋งํฌ
T_SYMLINK
ํ์ ์ถ๊ฐsymlink
system call ๊ตฌํ- open ์ ๊ฒฝ๋ก ์ฐธ์กฐ
- ๋ฌดํ ๋ฃจํ ๋ฐฉ์ง๋ฅผ ์ํ cycle check ํ์
- ์ค์ ๋์ ํ์ผ์ด ์์ด๋ ๋งํฌ ์์ฑ ๊ฐ๋ฅ
๊ธฐํ ์ด์
์ธ์ด์ ๋ฐ๋ผ page fault ์ ์ฐจ์ด
- C๋ row-major
- Fortran์ column-major
- ์ ๊ทผ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ํ์ด์ง์ ์ ๊ทผ โ page fault ์ฐจ์ด
TLB
- TLB๋ address ๋ณํ์ ๋น ๋ฅด๊ฒ ์ํ
- TLB Reach = TLB entry ์ ร page size
- page size๊ฐ ํด์๋ก TLB Reach ์ฆ๊ฐ