๐ Demain Paging
- ์ค์ ๋ก ํ์ํ ๋
page
๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ
- ์๋๋ฉด ํ๋ก๊ทธ๋จ์ ๋๋ถ๋ถ์ ์ฝ๋๋ (๊ฑฐ์ ๋ฐ์ํ์ง ์๋ ์น๋ช
์ ์ธ) ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฝ๋๋ผ ํ์์๋ ์ฐ์ง์ง ์๋ ๋ถ๋ถ์ด ๋๋ค์๋ค. ๊ทธ๋์ ์ด๊ฑธ ๋ค ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ง ์ฐจ์งํ๊ณ ๋นํจ์จ์ ์ด๋ค.
- ๊ทธ๋์ ํ๋ก์ธ์ค ๋์์ ์ค์ ๋ก ํ์ํ
page
๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
- ์ฅ์
I/O
์์ ๊ฐ์
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ฐ์
- ๋น ๋ฅธ ์๋ต ์๊ฐ
- ๋ ๋ง์ ์ฌ์ฉ์ ์์ฉ
- ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์
page
๊ฐ ์ฌ๋ ค์ง page entry
์์ Valid/Invalid bit
๋ฅผ ์ฌ์ฉํด ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ page
๊ฐ ์ฌ๋ ค์ ธ ํ์ธํ๋ค. ๋ง์ฝ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ๊ทผํ์ ๋ ํด๋น ์์น๊ฐ Invalid bit
๋ก ์ธํ
๋์ด ์์ผ๋ฉด page fault
๊ฐ ์ผ์ด๋ฌ๋ค๊ณ ํ๋ค.
page fault
๊ฐ ์ผ์ด๋๋ฉด ๋์คํฌ์ ์ง์ ์ ๊ทผํด์ ํด๋น ํ์ด์ง๋ฅผ ๊ฐ์ ธ์์ผ ํ๋๋ฐ ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํด์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋นํด ์๊ฐ์ด ์์ฃผ ๋ง์ด ๊ฑธ๋ฆฐ๋ค.
Replacement Algorithm
Page replacement
- ์๋ก์ด ํ์ด์ง๋ฅผ ์ฌ๋ฆด ๊ณต๊ฐ์ด ์์ผ๋ฉด ์ฌ๋ ค์ ธ ์๋ ํ์ด์ง ์ค ์ด๋ค ๊ฒ์ ์ซ์๋ผ ์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
- ์ด๋ฅผ ์ํ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ฐ ๋์ฒด๋ก
page fault
๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๊ณง๋ฐ๋ก ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ซ์๋ด๋ ํํ๋ก ๊ตฌํ๋์ด ์๋ค.
Optimal Algorithm
- ๊ฐ์ฅ ๋จผ ๋ฏธ๋์ ์ฌ์ฉ๋ (๋น์ฅ ์ฌ์ฉ๋์ง ์์) ํ์ด์ง๋ฅผ ์ซ์๋ด๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ฏธ๋์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์์ธกํ ์ ์๋ค๋ ๊ฐ์ ํ์ ์ฌ์ฉํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง ๋ฏธ๋๋ฅผ ์๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ค์ ์์คํ
์ ์ฌ์ฉ์ ๋ถ๊ฐ๋ฅํ๋ค.
FIFO (First In First Out) Algorithm
- ๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋จผ์ ๋ด์ซ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ค์ ์์คํ
์ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๋จผ์ ๋ค์ด์จ ๊ฒ์ ๋ด์ซ๋ ๊ณผ์ ์์ ํ์ด์ง ํ๋ ์ ํฌ๊ธฐ๋ฅผ ๋๋ ธ๋๋ฐ ์คํ๋ ค
page fault
๊ฐ ๋์ด๋ ์ฑ๋ฅ์ด ํ๋ฝํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๋ค.
LRU (Least Recently Used) Algorithm
- ๊ฐ์ฅ ์ค๋ ์ ์ ์ฐธ์กฐ๋ ๊ฒ์ ์ง์ฐ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ค์ ์์คํ
์์ ๋ง์ด ์ฌ์ฉ๋๋ค.
- ์ด๋ค ํ์ด์ง๊ฐ ์ฐธ์กฐ๋๋ฉด ๊ทธ๊ฒ์ ์์๋ฅผ ๋งจ ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋งํฌ๋ ๋ฆฌ์คํธ(Linked list) ํํ๋ก ๊ตฌํํ๋ค. ์๊ฐ๋ณต์ก๋๋
O(1)
LFU (Least Frequently Used) Algorithm
- ์ฐธ์กฐ ํ์(reference count)๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ์ง์ฐ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ต์ ์ฐธ์กฐ ํ์ ํ์ด์ง๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ
- ๋ด์ซ์ ํ์ด์ง๋ฅผ ์์๋ก ์ ์ ํ๋ค.
- ์ฑ๋ฅ ํฅ์์ ์ํด ๊ฐ์ฅ ์ค๋ ์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ฅผ ์ง์ฐ๊ฒ ๊ตฌํํ ์๋ ์๋ค.
- ์ฅ๋จ์
- LRU์ฒ๋ผ ์ง์ ์ฐธ์กฐ ์์ ๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ ์ฅ๊ธฐ์ ์ธ ์๊ฐ ๊ท๋ชจ๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ ํ์ด์ง์ ์ธ๊ธฐ๋๋ฅผ ์ข ๋ ์ ํํ ๋ฐ์ํ ์ ์๋ค.
- ์ฐธ์กฐ ์์ ์ ์ต๊ทผ์ฑ์ ๋ฐ์ํ์ง ๋ชป ํ๋ค.(๋ง์ฝ 1์ด ์ ์ ์ฒ์์ผ๋ก ์ฐธ์กฐ ๋์๋ค๋ฉด ์ธ๊ธฐ๋๊ฐ ๋ฎ์ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋ด์ซ๊ฒ ๋๋ค)
- LRU๋ณด๋ค ๊ตฌํ์ด ๋ณต์กํ๋ค.
- ์ด๋ค ํ์ด์ง๊ฐ ์ฐธ์กฐ๋๋ฉด ์ด์ ์ ์ฐธ์กฐ๋ ํ์ด์ง๋ค์ ์ฐธ์กฐ ํ์์ ํ๋์ฉ ๋น๊ตํด์ ์์๋ฅผ ์ ํด์ค์ผ ํ๋ค. ๊ทธ๋์ LRU์ฒ๋ผ ๋งํฌ๋ ๋ฆฌ์คํธ ํํ๋ก ๊ตฌํํ๋ฉด ์์๋ฅผ ์ฌ์ค์ ํ๋ ๋ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์ต์ํ(Min heap) ํํ๋ก ๊ตฌํํ๋ค. ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๊ฐ ํ์ ์ต์๋จ์ ์๋ ๊ฒ์ด๋ค. ์๊ฐ๋ณต์ก๋๋
O(log n)
์บ์ ๊ธฐ๋ฒ
- ํ์ ๋ ๋น ๋ฅธ ๊ณต๊ฐ(=์บ์ฌ)์ ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ ํ์ ์์ฒญ์ ์บ์ฌ๋ก๋ถํฐ ์ง์ ์๋น์คํ๋ ๋ฐฉ์
paging system
์ธ์๋ cache memory
, buffer caching
, Web caching
๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ค.
- ๊ทธ๋ฐ๋ฐ
paging system
์์๋ page fault
๊ฐ ์๊ฒจ์ ๋์คํฌ์์ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์์ผ ํ ๋์๋ง OS
๊ฐ ๊ด์ฌํ๊ณ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ด์ ๋์คํฌ๊น์ง ๊ฐ ํ์๊ฐ ์์ ๋์ OS
๊ฐ ๊ด์ฌํ์ง ์๋๋ค. ๊ทธ๋์ OS
๋ ํ์ด์ง์ ๋ฉ๋ชจ๋ฆฌ ์
์ฅ ์๊ฐ ์ ๋๋ง ์๊ณ ์์ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์ดํ์ ์ฐธ์กฐ ์๊ฐ๊ณผ ๋น๋ ๊ฐ์ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋์ ์ฌ์ค ์์์ ์ค๋ช
ํ๋ LRU์ LFU ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ๋ค์ OS
์ paging system
์์๋ ์ฌ์ฉํ ์ ์๋ค.
Clock Algorithm
- ๊ทธ ๋์ ๋น์ทํ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋
Clock Algorithm
์ ์ฌ์ฉํ๋ค.
- ์๊ณ์์ ์ด์นจ์ด ๋์๊ฐ๋ ๊ฒ์ฒ๋ผ ํฌ์ธํฐ๊ฐ
page entry
๋ฅผ ๋๋ฉด์ ๊ต์ฒดํ ํ์ด์ง๋ฅผ ์ ์ ํ๋ ๊ฒ์ด๋ค.
- ํ ๋ฐํด ๋๋ฉด์
Reference bit
๊ฐ 1์ด๋ฉด ๊ทธ๋์ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ๋ณด๊ณ 0์ผ๋ก ๋ฐ๊พธ๊ณ ๋์ด๊ฐ๊ณ 0์ด๋ฉด ๊ทธ๋์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผํด ์ซ์๋ธ๋ค.
Page Frame์ Allocation
- ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๋ช
๋ น์ด ์ํ์ ๋ช
๋ น์ด, ๋ฐ์ดํฐ ๋ฑ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋์์ ์ฐธ์กฐํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๋ค. ์ด๋ ๋ช
๋ น์ด ์ํ์ ์ํด ์ต์ํ ํ ๋น๋์ด์ผ ํ๋ ํ๋ ์์ ์๊ฐ ์๋๋ฐ ์ด ๋์
Loop
๋ฅผ ๊ตฌ์ฑํ๋ ํ์ด์ง๋ค์ ํ๊บผ๋ฒ์ allocate
๋๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ๋ง์ฝ ํ์ง ์์ผ๋ฉด ๋งค Loop
๋ง๋ค page fault
๊ฐ ์๊ฒจ ๋งค๋ฒ ๋์คํฌ์ ํ์ด์ง๋ฅผ ์ฐพ์ผ๋ฌ ๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๊ณ ์ฑ๋ฅ์ด ๋จ์ด์ง ๊ฒ์ด๋ค.
Allocation Scheme
Equal allocation
: ๋ชจ๋ ํ๋ก์ธ์ค์ ๋๊ฐ์ ๊ฐ์ ํ ๋น
Proportional allocation
: ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋น๋กํ์ฌ ํ ๋น
Priority allocation
: ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํ ๋น
Global replacement
- ํ๋ ์์ ์ป๊ธฐ ์ํด ๊ฒฝ์ํ๋ ํํ๋ผ ํ ์ ์๋ค.
replace
์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ํ๋ ์์ ๋นผ์์ ์ฌ ์ ์๋ค.
FIFO
, LRU
, LFU
๋ฑ์ ์๊ณ ๋ฆฌ์ฆ์ global replacement
๋ก ์ฌ์ฉ์์ ํด๋น
Working set
, PFF
์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
Local replacement
- ๋ฏธ๋ฆฌ ํ ๋นํด ๋๋ ํํ์ด๋ค.
- ์์ ์๊ฒ ํ ๋น๋ ํ๋ ์ ๋ด์์๋ง ๊ต์ฒด
FIFO
, LRU
, LFU
๋ฑ์ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก์ธ์ค๋ณ๋ก ์ด์์ ํด๋น
Thrashing
- ํ๋ก์ธ์ค์ ์ํํ ์ํ์ ํ์ํ ์ต์ํ์
page frame
์๋ฅผ ํ ๋น ๋ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ฐ์
page fault rate
์ด ๋งค์ฐ ๋์์ง๋ค.
CPU
์ฌ์ฉ๋ฅ ์ด ๋ฎ์์ง
OS
๋ MPD (Multiprogramming degree)
๋ฅผ ๋์ฌ์ผ ํ๋ค๊ณ ํ๋จ
- ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์คํ
์ ์ถ๊ฐ๋จ(higher MPD)
- ํ๋ก์ธ์ค ๋น ํ ๋น๋ ํ๋ ์ ์๊ฐ ๋์ฑ ๊ฐ์๋๋ค.
- ํ๋ก์ธ์ค๋ ํ์ด์ง์
swap in / swap out
์ผ๋ก ๋ฐ์๋ค. ๊ทธ๋์ ๋ฉ์ถฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค. (์ ์์ ์ธ ๋์ ๋ถ๊ฐ)
- ๊ทธ๋์ ๋๋ถ๋ถ์ ์๊ฐ์
CPU
๋ ํ๊ฐํ๋ค.(log throughput)
- ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ํ๋ก๊ทธ๋จ์ ์ ์กฐ์ ์ด ํ์ํ๋ค. ์ด๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๊ฒ์ด
Working-set model
์ด๋ค.
Working-Set Model
- ํ๋ก์ธ์ค๋ ํน์ ์๊ฐ ๋์ ์ผ์ ์ฅ์๋ง์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ค.
- ์ง์ค์ ์ผ๋ก ์ฐธ์กฐ๋๋ ํด๋น ํ์ด์ง๋ค์ ์งํฉ์
localityy set
์ด๋ผ ํ๋ค.
locality
์ ๊ธฐ๋ฐํ์ฌ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์๊ฐ ๋์ ์ํํ๊ฒ ์ํ๋๊ธฐ ์ํด ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ํ๋ ํ์ด์ง๋ค์ ์งํฉ์ Working Set
์ด๋ผ ์ ์ํ๋ค.
Working Set
๋ชจ๋ธ์์๋ ํ๋ก์ธ์ค์ Working Set
์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ด์ผ ์ํ๋๊ณ ๊ทธ๋ ์ง ์๊ณ ๋ถ๋ถ์ ์ผ๋ก ์์ผ๋ฉด ๊ฐ์ง๊ณ ์๋ ํ๋ ์๋ ๋ชจ๋ ๋ฐ๋ฉ ํ swap out(suspend)
๋๋ค. ์ด๋ฅผ ํตํด thrashing
์ ์ด๋ ์ ๋ ๋ฐฉ์งํ ์ ์๋ค.
Working Set
์ ์ ๋๋ก ํ์งํ๊ธฐ ์ํด์๋ window size
๋ฅผ ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ๋๋ฌด ์์ผ๋ฉด localiry set
์ ๋ชจ๋ ์์ฉํ์ง ๋ชปํ ์ ์๊ณ , ๋๋ฌด ํฌ๋ฉด ์ฌ๋ฌ ๊ท๋ชจ์ locality set
์ ์์ฉํ๊ฒ ๋ ๊ฒ์ด๋ค.
PFF (Page-Fault Frequency) Scheme
page fault rate
์ ์ํ๊ฐ๊ณผ ํํ๊ฐ์ ๋๋ค.
page fault
๊ฐ ๋ง์์๋ก ๋ง์ ํ์ด์ง ํ๋ ์์ ํ ๋นํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ํ ๋น๋ ํ๋ ์ ์๋ฅผ ์ค์ธ๋ค.
- ๋น ํ๋ ์์ด ์์ผ๋ฉด ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ
swap out
์ํจ๋ค.
Page Size์ ๊ฒฐ์
- ํ์ด์ง์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์์ผ๋ฉด ํ์ด์ง ์๊ฐ ์ฆ๊ฐํ๊ฒ ๋์ด ํ์ด์ง ํ
์ด๋ธ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๊ฒ์ด๋ค.
- ์๊ฒ ์ชผ๊ฐ์ง๋งํผ ๋๋ฌด ํ์ํ ์ ๋ณด๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์๊ฒ ๋์ด
page fault
์ ๋น๋์๊ฐ ๋์ด๋ ๋์คํฌ์ ์ ๊ทผํด์ผ ํ๋ ์๊ฐ์ด ๋์ด๋ ๊ฒ์ด๋ค. ์ด๋ฐ ์ธก๋ฉด์์ ๋ณผ ๋ ๋ฉ๋ชจ๋ฆฌ ์ด์ฉ์ ํจ์จ์ ์ด์ง๋ง locality
ํ์ฉ ์ธก๋ฉด์์๋ ์ข์ง ์๋ค.
์ถ์ฒ