๐ ๊ฐ์๋ฉ๋ชจ๋ฆฌ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (Virtual Memory)
Demanding Page: ์์ฒญ์ด ์์ผ๋ฉด ๊ทธ ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ
- ์ค์ ๋ก ํ์ํ ๋ Page๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๋ ๊ฒ
- I/O ์์ ๊ฐ์
- Memory ์ฌ์ฉ๋ ๊ฐ์
- ๋น ๋ฅธ ์๋ต ์๊ฐ
- ๋ ๋ง์ ์ฌ์ฉ์ ์์ฉ
- Valid / InValid bit์ ์ฌ์ฉ
- Invalid์ ์๋ฏธ
- ์ฌ์ฉ๋์ง ์๋ ์ฃผ์ ์์ญ์ธ ๊ฒฝ์ฐ
- ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ
- ์ฒ์์๋ ๋ชจ๋ Page Entry๊ฐ invalid์ ์ด๊ธฐํ
- address tranlation ์์ invalid bit์ด set๋์ด ์์ผ๋ฉด โ โpage faultโ (์์ฒญํ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ป๋ ๊ฒฝ์ฐ)
- Invalid์ ์๋ฏธ
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์์ผ๋ฉด valid ๊ทธ๋ ์ง ์์ผ๋ฉด invalid
- ํ๋ก๊ทธ๋จ์ logical memory(์ฃผ์๊ณต๊ฐ)์์ ํด๋น ์ฃผ์๋ค์ ์ ๊ณตํด์ค ๋ฐ๋ผ์ page table์์๋ ํด๋น ์ฃผ์ ๊ณต๊ฐ ๋งํผ์ entry๊ฐ ๋ง๋ค์ด์ง. ์ฌ๊ธฐ์ ์ฌ์ฉ๋์ง ์์ผ๋ฉด, valid/invalid ๋ฑ์ผ๋ก ๊ตฌ๋ถ
Page Fault
- invalid page๋ฅผ ์ ๊ทผํ๋ฉด MMU(์ฃผ์ ๋ณํ์ ํ๋ ํ๋์จ์ด)๊ฐ trap์ ๋ฐ์์ํด. (Page fault trap)
- kernel mode๋ก ๋ค์ด๊ฐ์ page fault handler๊ฐ invoke(์คํ)๊ฐ ๋จ.
- ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก page fault๋ฅผ ์ฒ๋ฆฌํจ.
- Invalid Reference? (eg. bad address, protection violation) โ abort process (์ด์ํ๊ฑด๋ฉด ๊ฐ์ ๋ก abort, ์ค๋จ ์ํด)
- Get on entry page frame (์์ผ๋ฉด ๋บ์ด์จ๋ค: replace / ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ๋บ์ด์์ผํจ)
- ํด๋น ํ์ด์ง๋ฅผ disk์์ memory๋ก ์ฝ์ด์จ๋ค.
- disk I/O๊ฐ ๋๋๊ธฐ๊น์ง ์ด ํ๋ก์ธ์ค๋ CPU๋ฅผ preempt ๋นํจ.(block)
- Disk read๊ฐ ๋๋๋ฉด, page tables entry ๊ธฐ๋ก, valid/invalid bit = โvalidโ
- Ready queue์ process๋ฅผ insert โ dispatch later
- ์ด ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ก๊ณ ๋ค์ running
- ์๊น ์ค๋จ๋์๋ instruction์ ์ฌ๊ฐ
- ์ฌ๊ธฐ์ page Fault๊ฐ ์ผ๋ง๋ ์์ฃผ ์ผ์ด๋๋๊ฐ? ์ ๋ฐ๋ผ์ ์๋ ์ธก๋ฉด์์ ๋ฌ๋ผ์ง
page fault performance (๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฃผ์๋ณํ์ด ๋์ง ์์ (๊ฑฐ์ ์๋จ))
- Page Fault Rate 0 <= p <= 1, (์ต๋ํ ๋ฎ์์ง๊ฒ ํด์ผํจ)
- if p = 0, no page faults
- if p = 1, every reference is a fault
- Effective access Time = (1-p) + p
- 1-p is x memory access (๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ)
- p (OS & HW page fault overhead + [Swap page out if needed] + Swap page in + OS & HW restart overhead)
Free Frame์ด ์๋ ๊ฒฝ์ฐ
- Page replacement
- ์ด๋ค frame์ ๋บ์ด์ฌ์ง ๊ฒฐ์ ํด์ผํจ.
- ๊ณง๋ฐ๋ก ์ฌ์ฉ๋์ง ์์ page๋ฅผ ์ซ์๋ด๋ ๊ฒ์ด ์ข์
- ๋์ผํ ํ์ด์ง๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฉ๋ชจ๋ฆฌ์์ ์ซ๊ฒจ๋ฌ๋ค๊ฐ ๋ค์ ๋์์ฌ ์ ์์
- Replacement Algorithm
- page fault rate๋ ์ต์ํํ๋ ๊ฒ์ด ๋ชฉํ
- ์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐ
- ์ฃผ์ด์ง page reference string์ ๋ํด page fault๋ฅผ ์ผ๋ง๋ ๋ด๋์ง ์กฐ์ฌ
- Reference String์ ์
- 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Optimal Algorithm (Page Fault๋ฅผ ๊ฐ์ฅ ์ ๊ฒ ํ๋ ์๊ณ ๋ฆฌ์ฆ, Reference String์ ๋ฏธ๋ฆฌ ์๊ณ ์๋ค๊ณ ๊ฐ์ , ๋นํ์ค์ )
- MIN(OPT): ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฐธ์กฐ๋๋ page๋ฅผ replace
- 4 frame example
- ๋ฏธ๋์ ์ฐธ์กฐ๋ฅผ ์ด๋ป๊ฒ ์๋๊ฐ?
- Offline Algorithm
- ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ upper bound(์ ์ผ ์ข๊ธฐ ๋๋ฌธ์) ์ ๊ณต
- Beladyโs optimal Algorithm, MIN, OPT ๋ฑ์ผ๋ก ๋ถ๋ฆผ
FIFO (First In First Out): ๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋จผ์ ๋ด์ซ์
- FIFO Anomaly (Beladyโs Anomaly)
- more frame โ less page fault ๊ฐ ๋์ง ์๋๋ค์ (ํ์ด์ง๋ฅผ ๋๋ ค์คฌ๋๋ฐ page fault๊ฐ ์คํ๋ ค ๋์ด๋๋ ํ์)
LRU (Least Recently Used): ๊ฐ์ฅ ์ค๋์ ์ ์ฐธ์กฐ๋ ๊ฒ์ ์ง์
LFU (Least Recently Used): ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ์ง์
- ์ต์ ์ฐธ์กฐ ํ์์ธ page๊ฐ ์ฌ๋ฟ ์๋ ๊ฒฝ์ฐ
- LFU ์๊ณ ๋ฆฌ์ฆ ์์ฒด์๋ ์ฌ๋ฌ page ์ค ์์๋ก ์ ์ ํ๋ค.
- ์ฑ๋ฅ ํฅ์์ ์ํด ๊ฐ์ฅ ์ค๋ ์ ์ ์ฐธ์กฐ๋ page๋ฅผ ์ง์ฐ๊ฒ ํ ์๋ ์๋ค.
- ์ฅ๋จ์
- LRU ์ฒ๋ผ ์ง์ ์ฐธ์กฐ ์์ ๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ ์ฅ๊ธฐ์ ์ธ ์๊ฐ ๊ท๋ชจ๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์, page์ ์ธ๊ธฐ๋๋ฅผ ์ข ๋ ๋ช ํํ ํ์ ํ ์ ์์
- ์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ๋ฐ์ํ์ง ๋ชปํจ
- LRU๋ณด๋ค ๊ตฌํ์ด ๋ณต์กํจ
LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ
- LRU: ์ฌ์ฉ์ ํ์ค๋ก ์ค์ธ์ฐ๊ธฐ ํจ. ์ ๋ฐ์ดํธ๋ ๋งจ ์์ผ๋ก ์ฎ๊ธฐ๊ฑฐ๋ ์ถ๊ฐํด์ฃผ๋ฉด ๋๊ณ , ์ญ์ ๋ ๊ฐ์ฅ ๋งจ ์์ ์๋ ์ญ์ ํ๋ฉด ๋จ. ์ด ๋ ์๊ฐ๋ณต์ก๋๋ ๋น ์คO(1)์ด ๋จ. Linked Lisk๋ก ๊ตฌํ
- LFU: ์๋ ํ์ค๋ก ์ค์ธ์ฐ๊ธฐ๋ฅผ ํ๋ฉด ์๋จ, LFU๋ ์ ๋ฐ์ดํธ๋ฅผ ํ ๋ ํด๋น ํ์ด์ง๊ฐ ์ด๋๊น์ง ๋ด๋ ค๊ฐ ์ ์๋์ง ํ์ธํด ๋ด์ผํจ. ๊ทธ๋์ ๊ตฌํ์ด ๋ณต์ก. ์๊ฐ๋ณต์ก๋๋ O(n)์. ๊ทธ๋์ heap(Tree)๋ก ๊ตฌํํจ. O(log n)
ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๋ ผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํญ์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ด ์๋๋ผ, ๊ผญ ํ์ํ ๊ฒ๋ง ์ฌ๋ผ๊ฐ (๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๋ ) ํ์๊ฐ ์๊ฑฐ๋ ์ฌ์ฉ๋์ง ์์ ๋ถ๋ถ์ Backing Storage์ ๋นผ๋์. Page fault๋ ์ด์์ฒด์ ๋ก ์คํ์ด ๋์ด๊ฐ.
๋ค์ํ ์บ์ฌ๊ธฐ๋ฒ
- ์บ์๊ธฐ๋ฒ
- ํ์ ๋ ๋น ๋ฅธ ๊ณต๊ฐ(=์บ์ฌ)์ ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ ํ์์์ฒญ์ ์บ์ฌ๋ก๋ถํฐ ์ง์ ์์ฒญํ๋ ๋ฐฉ๋ฒ
- paging system ์ธ์๋ cache memory(๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ ๋ณด๋ค CPU์ ๊ฐ๊น์), buffer caching, web caching ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ
- ์บ์ฌ ์ด์์ ์๊ฐ ์ ์ฝ (order of any)
- ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์์ ์ญ์ ํ ํญ๋ชฉ์ ๊ฒฐ์ ํ๋ ์ผ์ ์ง๋์น๊ฒ ์๊ฐ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ค์ ์์คํ ์์ ์ฌ์ฉ๋ ์ ์์
- Buffer caching, Web caching์ O(1) ~ O(log n)๊น์ง ๊ฐ๋ฅ
- Paging System์ธ ๊ฒฝ์ฐ
- page fault์ธ ๊ฒฝ์ฐ์๋ง OS๊ฐ ๊ด์ฌํจ.
- ํ์ด์ง๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋๊ฒฝ์ฐ ์ฐธ์กฐ์๊ฐ ๋ฑ์ ์ ๋ณด๋ฅผ OS๋ฅผ ์ ์๊ฐ ์์
- O(1)์ธ LRU์ list ์กฐ์ ์กฐ์ฐจ ๋ถ๊ฐ๋ฅ
- ๊ทธ๋์ paging system์์๋ LRU, LFU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์๊ฐ ์์
- clock Algorithm
- LRU ๊ทผ์ฌ ์๊ณ ๋ฆฌ์ฆ
- ์ฌ๋ฌ ๋ช
์นญ์ผ๋ก ๋ถ๋ฆผ
- Second chance Algorithm
- NUR(not used recently) ๋๋ NRU(not recently used)
- Reference bit์ ์ฌ์ฉํด์ ๊ต์ฒด ๋์ ํ์ด์ง ์ ์ (circular list)
- reference bit๊ฐ 0์ธ ๊ฒ์ ์ฐพ์ ๋๊น์ง ํฌ์ธํฐ๋ฅผ ํ๋์ฉ ์์ผ๋ก ์ด๋
- ํฌ์ธํฐ ์ด๋ ์ค์์ reference bit 1์ ๋ชจ๋ 0์ผ๋ก ๋ฐ๊ฟ
- Reference bit 0์ธ ๊ฒ์ ์ฐพ์ผ๋ฉด ํ์ด์ง๋ฅผ ๊ต์ฒด
- ํ ๋ฐํด ๋๊ณ ์์๋ (=second chance) 0์ด๋ฉด ๊ทธ๋๋ replace ๋นํจ
- ์์ฃผ ์ฌ์ฉ๋๋ ํ์ด์ง๋ฉด second chance๊ฐ ์ฌ ๋ 1
- clock Algorithm์ ๊ฐ์
- reference bit(access bit)์ modify bit(dirty bit)๋ฅผ ํจ๊ป ์ฌ์ฉ
- reference bit = 1: ์ต๊ทผ์ ์ฐธ์กฐ๋ ํ์ด์ง (์ฝ๊ธฐ๋ง)
- Modify bit = 1: ์ต๊ทผ์ ๋ณ๊ฒฝ๋ ํ์ด์ง(I/O๋ฅผ ๋๋ฐํ ํ์ด์ง) (์ฝ๊ณ ์ฐ๊ธฐ ๋ชจ๋)
page Frame์ Allocation
- Allocation problem: process์ ์ผ๋ง๋งํผ์ page fault๊ฐ ์ฌ์ฉ๋ ๊ฒ์ธ๊ฐ?
- Allocation์ ํ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช
๋ น์ด ์ํ์ ๋ช
๋ น์ด, ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ํ์ด์ง ๋์ ์ฐธ์กฐ
- ๋ช ๋ น์ด ์ํ์ ์ํด ์ต์ํ ํ ๋น๋์ด์ผ ํ๋ frame์ ์๊ฐ ์์
- Loop๋ฅผ ๊ตฌ์ฑํ๋ page๋ค์ ํ๊บผ๋ฒ์ allocate ๋๋ ๊ฒ์ด ์ ๋ฆฌํจ.
- ์ต์ํ์ allocation์ด ์์ผ๋ฉด ๋งค loop๋ง๋ค page fault
- ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช
๋ น์ด ์ํ์ ๋ช
๋ น์ด, ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ํ์ด์ง ๋์ ์ฐธ์กฐ
- Allcation Scheme
- Equal allocation: ๋ชจ๋ ํ๋ก์ธ์ค์ ๋๊ฐ์ ๊ฐฏ์ ํ ๋น
- Proportional allocation: ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ ๋น
- Priority allocation: ํ๋ก์ธ์ค์ priority์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ ๋น
global replacement vs local replacement
- global (์๋์ ์ผ๋ก ์กฐ์ ๋จ) / ์์ ๊ฒฝ์
- Replace ์ ๋ค๋ฅธ process์ ํ ๋น๋ frame์ ๋นผ์์ ์ฌ ์ ์๋ค.
- process๋ณ ํ ๋น๋์ ์กฐ์ ํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์
- FIFO, LRU, LFU ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ์ global replacement๋ก ์ฌ์ฉ์์ ํด๋น working set, PFF ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- local (ํ๋ก๊ทธ๋จ๋ง๋ค ํ ๋น๋จ ๊ณ ์ ์ ์ผ๋ก) / ๊ณต์ฐ์ฃผ์
- ์์ ์๊ฒ ํ ๋น๋ frame ๋ด์์๋ง replacement
- FIFO, LRU, LFU ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ์ process ๋ณ๋ก ์ด์์
Threshing Diagram
- ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ๋๋น CPU ์ฌ์ฉ๋์ ๋ํ๋ธ๊ฑด๋ฐ. ์ฌ๊ธฐ์ threshing์ด ์ผ์ด๋๋ฉด CPU ์ฌ์ฉ๋์ด ๋ ๋จ์ด์ง.
- Threshing๋ page fault ํ๋๋ผ ์ ์ ์ ์๋๋ฐ, CPU๋ ์ด์ฉํ์ง ๋ชปํ๋ ์ํฉ์ ๋งํจ.
Threshing
- ํ๋ก์ธ์ค์ ์ํํ ์ํ์ ํ์ํ ์ต์ํ์ page frame ์๋ฅผ ํ ๋น ๋ฐ์ง ๋ชปํ๋ ์ํฉ
- Page fault rate์ด ๋งค์ฐ ๋์์ง
- CPU utilization์ด ๋งค์ฐ ๋ฎ์์ง
- OS๋ MPD(Multiprogramming Degree)๋ฅผ ๋์ฌ์ผํ๋ค๊ณ ํ๋จ
- ๋ ๋ฐ๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์คํ ์ ์ถ๊ฐ๋จ (higher MPD)
- ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ frame์ ์๊ฐ ๋์ฑ ๊ฐ์
- ํ๋ก์ธ์ค๋ page์ swap in / swap out์ผ๋ก ๋งค์ฐ ๋ฐ์จ
- ๋๋ถ๋ถ์ ์๊ฐ์ CPU๋ ํ๊ฐํจ
- low throughput
working set
- locality of reference
- ํ๋ก์ธ์ค๋ ํน์ ์๊ฐ ๋์ ์ผ์ ์ฅ์๋ง์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ค.
- ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ํด๋น page๋ฅผ locality set์ด๋ผ๊ณ ํ๋ค.
- Working Set model
- locality์ ๊ธฐ๋ฐํ์ฌ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์๊ฐ ๋์ ์ํํ๊ฒ ์ํ๋๊ธฐ ์ํด ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ page๋ค์ ์งํฉ์ working set์ด๋ผ๊ณ ํ๋ค.
- working set ๋ชจ๋ธ์์๋ process์ working set ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ์ํ๋๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ frame์ ๋ฐ๋ฉํ ํ swap out(suspend)
- Threshing์ ๋ฐฉ์งํจ
- Multiprogramming degree๋ฅผ ๊ฒฐ์ ํจ.
working set algorithm (global replacement)
- working set์ ๊ฒฐ์
- working set window๋ฅผ ํตํด ์์๋
- working size๊ฐ ๋ธํ์ธ ๊ฒฝ์ฐ
- ์๊ฐ t์์์ working set (WSti)
- Time interval์ ์ฌ์ฉ๋ ์๋ก ๋ค๋ฅธ ํ์ด์ง๋ค์ ์งํฉ
- working set์ ์ํ page๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง, ์ํ์ง ์์ ๊ฒ์ ๋ฒ๋ฆผ
- ์ฆ, ์ฐธ์กฐ๋ ํ ๋ธํ ์๊ฐ ๋์ ํด๋น ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ ํ์ ๋ฒ๋ฆผ
- ์๊ฐ t์์์ working set (WSti)
page fault frequency (PFF)
- Page fault rate์ ์ํ๊ฐ๊ณผ ํํ๊ฐ์ ๋๋ค.
- Page fault rate์ ์ํ๊ฐ์ ๋์ผ๋ฉด frame์ ๋ ํ ๋นํ๋ค.
- Page fault rate์ด ํํ๊ฐ์ ๋์ผ๋ฉด frame์๋ฅผ ์ค์ธ๋ค.
- ๋น frame์ด ์์ผ๋ฉด ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ swap out ํ๋ค.
page size์ ๊ฒฐ์
- Page size๋ฅผ ๊ฐ์์ํค๋ฉด
- ํ์ด์ง ์ ์ฆ๊ฐ
- ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ ์ฆ๊ฐ
- internal fragmentation ๊ฐ์
- Disk transfer์ ํจ์จ์ฑ ๊ฐ์
- Seek/rotation vs transfer
- ํ์ํ ์ ๋ณด๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ์ด์ฉ์ด ํจ์จ์
- locality์ ํ์ฉ ์ธก๋ฉด์์๋ ์ข์ง ์์
- trend
- Larger page size