[OS] Operating System(10-2): Page Replacement
๐ ์ด์์ฒด์ ์ ๊ณต ์์ ์ ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ชจ๋ ์ฌ์ฉ๋์ด ์๋ก์ด page๋ฅผ ๋ก๋ํ ๊ณต๊ฐ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋ง์ฝ free frame์ด ์๋ค๋ฉด??
Page replacement
ํ์ด์ง ๊ต์ฒด๊ฐ ๋ฐ์ํจ!
๐Page replacement: ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ์ฉ๋์ง ์๋ page๋ฅผ ์ฐพ์๋ค๋ฉด page out์ ํด์ ๊ณต๊ฐ์ ๋ง๋ค์ด ๋
- page out๋ page๋ swap space์ผ๋ก ๋ด๋ณด๋ด์ง
โ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ:
- terminate
- swap out
- replace the page - ๊ฐ์ฅ ๋ง์ด ์
- ์ง์ญ, ์ ์ญ ๋ชจ๋ ๊ต์ฒด ๊ฐ๋ฅ
๐ฏ ๋ชฉํ: ํ ํ๋ก์ธ์ค๊ฐ ๋๋ฌด ๋ง์ frame์ ์์ ํ์ง ๋ชปํ๊ฒ ํด์ page-falut๋ฅผ ์๋ฐฉํ๊ธฐ(prevent over-allocation)
โ ์ฃผ์ ํน์ง:
- modify (dirty) bit - ๋ณ๊ฒฝ์ด ๋์ง ์์ ํ์ด์ง๋ค์ ๊ตณ์ด overheadํ์ง ์๋๋ค
- โ ์ฆ, modified page๋ค๋ง disk์ ์ ์ฅํด์ ํจ์จ์ ๋์
- virtual memory ํ์ฅ: ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ๋ ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ ๊ณต
- Prevent over-allocation: page fault service routin์ ํ์ด์ง ๊ต์ฒด ํฌํจ
B๋ ์์ง ๋ฉ๋ชจ๋ฆฌ์ ์์ง ์์์ fast disk์์ B๋ฅผ ๊ฐ์ ธ์์ผ ํจ
ํ์ง๋ง physical ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฝ์ฐจ์ B๋ฅผ ๋ถ๋ฅผ ์ ์๋ค๋ฉด?
๊ทธ๋ฌ๋ฉด ์๋ ์๋ ํ์ด์ง๋ฅผ backing store์ ์ ์ฅํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ด๋ค ๊ทธ๋ฌ๊ธฐ ์ํด page replacement๊ฐ ํ์ํจ!
โ page replacement ๊ณผ์ :
disk์์ ์๊ตฌ๋ ํ์ด์ง์ ์์น๋ฅผ ์ฐพ์
- free frame ์ฐพ๊ธฐ:
- ๋ง์ฝ free frame์ด ์๋ค๋ฉด, ๋น ๊ณต๊ฐ์ ํ์ฉ
- free freame์ด ์๋ค๋ฉด page replacement ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ(victim frame์ ๊ณ ๋ฅด๊ธฐ ์ํจ)
- Victime Frame์ด ์์ ๋์๋ค๋ฉด(
dirty bit=1
) ๋์คํฌ์ ์ ์ฅ - ์์ ๋์ง ์์๋ค๋ฉด(
dirty bit=0
) ๋ฐ๋ก ๋ฎ์ด์ฐ๊ธฐ ๊ฐ๋ฅ
์ ํ๋ free frame์ ๋์คํฌ์์ ์ํ๋ page๋ฅผ ๋ก๋, page table๊ณผ frame table์ ์ ๋ฐ์ดํธ
- page fault๋ฅผ ๋ฐ์์ํจ ๋ช ๋ น์ด๋ถํฐ ์ฌ์์
victim frame์ ๊ณ ๋ฆ(f ๋ฐ๋ก ์ frame)
์ด์ ํ ๋ฒ์ ํ์ด์ง ํดํธ์ ์ต๋ 2๋ฒ์ ํ์ด์ง ์ ์ก์ด ๋ฐ์!
- Victim ํ์ด์ง ์ค์ ์์ + ์ ํ์ด์ง ์ค์ ์ธ โ EAT ์ฆ๊ฐ
Page and Frame replacement Algorithms
Page Replacement ์๊ณ ๋ฆฌ์ฆ์ ๋ ๊ฐ์ง ์ฃผ์ ๊ฒฐ์ ์ ๋ด๋น:
- Frame-allocation algorithm: ๊ฐ ํ๋ก์ธ์ค์ ๋ช ๊ฐ์ ํ๋ ์์ ํ ๋นํ ๊ฒ์ธ๊ฐ?
- Page-replacement algorithm: ์ด๋ค ํ๋ ์์ ๊ต์ฒดํ ๊ฒ์ธ๊ฐ?
๐์ฑ๋ฅ ํ๊ฐ ๋ฐฉ๋ฒ:
- Reference String์ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ํ๊ฐ
- ํ์ด์ง ๋ฒํธ์ ์ฐ์๋ ๋ฌธ์์ด (์ ์ฒด ์ฃผ์๊ฐ ์๋)
- ๊ฐ์ ํ์ด์ง์ ๋ํ ๋ฐ๋ณต ์ ๊ทผ์ ํ์ด์ง ํดํธ๋ฅผ ์ผ์ผํค์ง ์์
- ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ ์ ์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง
ํ๋ ์ ์๋ฅผ ๋๋ฆด ์๋ก page fault๊ฐ ๊ฐ์ํ๋ ๋ชจ์ต
7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
FIFO Algorithm
๐FIFO Algorithm: ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ๋จผ์ ๊ต์ฒด
โFIFO ์๊ณ ๋ฆฌ์ฆ์์๋ ํ๋ ์์ ๋๋ ธ๋๋ฐ ์คํ๋ ค page fault๊ฐ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌ! - Beladyโs Anomaly
- page์ โ๋์ดโ๋ง ๊ณ ๋ คํ๊ณ ์ฌ์ฉ ๋น๋๋ ๋ฌด์ํ๊ธฐ ๋๋ฌธ!
Optimal Algorithm
๐Optimal Algorithm: ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด(๋ฏธ๋๋ฅผ ๋ด๋ค๋ด์ผํจ)
9๋ฒ์ ํ์ด์ง ํดํธ
์ฐธ์กฐ์ด S์์์ ์ต์ ํด์ ์ญ์ฐธ์กฐ์ด SR์์์ ์ต์ ํด๊ฐ ๋์ผํ ํดํธ ์๋ฅผ ๊ฐ์ง
- ๋ฏธ๋๋ฅผ ์์ธกํด์ผํ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ์ด๋ ค์
Least Recently Used(LRU) Algorithm
๐Least Recently Used(LRU) Algorithm: ๊ณผ๊ฑฐ์ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒด(OPT ์๊ณ ๋ฆฌ์ฆ ๋์)
OPT ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ด ์ฐธ์กฐ์ด S์์์ ํ์ด์ง ํดํธ ์์ ์ญ์ฐธ์กฐ์ด SR์์์ ํ์ด์ง ํดํธ ์๊ฐ ๊ฐ๋ค
- LRU ๊ตฌํ ๋ฐฉ๋ฒ:
- Counter Implementation
- ๊ฐ ํ์ด์ง ์ํธ๋ฆฌ์ ์นด์ดํฐ ์ถ๊ฐ
- ํ์ด์ง ์ฐธ์กฐ ์ ์๊ณ๊ฐ์ ์นด์ดํฐ์ ๋ณต์ฌ
- ๊ต์ฒด ์ ๊ฐ์ฅ ์์ ์นด์ดํฐ ๊ฐ์ ์ฐพ์
- ๊ต์ฒด ๊ณผ์ :
- ๋ชจ๋ ์นด์ดํฐ ๊ฐ ๊ฒ์
- ์ต์๊ฐ ์ฐพ๊ธฐ
- ํด๋น ํ์ด์ง ๊ต์ฒด โ๋จ์ : ํ ์ด๋ธ ๊ฒ์ ํ์
- ๊ต์ฒด ๊ณผ์ :
- Stack Implementation
- ๋๋ธ ๋งํฌ ํํ์ ํ์ด์ง ๋ฒํธ ์คํ ์ ์ง
- ํ์ด์ง ์ฐธ์กฐ ์ ์คํ ๋งจ ์๋ก ์ด๋
- ๊ต์ฒด ์ ์คํ ๋งจ ์๋ ํ์ด์ง ์ ํ โ๋จ์ : ์ ๋ฐ์ดํธ ๋น์ฉ ๋์
- LRU์ Optimal์ Stack Algorithm!
LRU Approximation Algorithms
๐LRU Approximation Algorithms: LRU๋ ํน๋ณํ ํ๋์จ์ด๊ฐ ํ์ํ๊ณ ์ฌ์ ํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ Reference Bit๋ฅผ ํ์ฉํ ์๊ณ ๋ฆฌ์ฆ
๊ฐ์ฅ ํ์ค์ ์ธ ์๊ณ ๋ฆฌ์ฆ!
๐Reference Bit ์๋์๋ฆฌ:
- ๊ฐ ํ์ด์ง์ Reference Bit ์ฐ๊ฒฐ (
์ด๊ธฐ๊ฐ = 0
) - ํ์ด์ง ์ฐธ์กฐ ์ ํ๋์จ์ด๊ฐ ์๋์ผ๋ก ๋นํธ๋ฅผ 1๋ก ์ค์
- ๊ต์ฒด ์ Reference Bit=0 ์ธ ํ์ด์ง ์ค ํ๋ ์ ํ
- ์์๋ ์ ์ ์์ง๋ง ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๋ณด์ฅ
๐ Second-Chance Algorithm: FIFO + Reference Bit
์กฐํฉ
- ๊ธฐ๋ณธ์ ์ผ๋ก FIFO ๋ฐฉ์์ผ๋ก ๋์
- ๊ต์ฒด ๋์ ํ์ด์ง์ Reference Bit ํ์ธ
Bit = 0
์ด๋ฉด ์ฆ์ ๊ต์ฒดBit = 1
์ด๋ฉด โ๋ ๋ฒ์งธ ๊ธฐํโ ๋ถ์ฌ (Bit๋ฅผ 0์ผ๋ก ์ค์ ํ๊ณ ํ ๋ค๋ก ์ด๋)second-chance algorithm
Enhanced Second-Chance Algorithm
๐Second-Chance Algorithm: Reference Bit + Modify(Dirty) Bit
์ ํจ๊ป ์ฌ์ฉ
(0, 0)
: ์ต์ฐ์ ๊ต์ณฌ ๋์ - ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์๊ณ ์์ ๋์ง๋ ์์(0, 1)
: ๋ ๋ฒ์งธ ์ฐ์ ์์ - ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์์ง๋ง ์์ ๋จ(โ ๊ต์ฒด ์ ๋์คํฌ์ ์ฐ๊ธฐ ํ์)(1, 0)
: ์ธ ๋ฒ์งธ ์ฐ์ ์์ - ์ต๊ทผ์ ์ฌ์ฉ๋์์ง๋ง ์์ ๋์ง ์์(โ ๊ณง ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ ์์)(1, 1)
: ๊ต์ฒด ํํผ ๋์ - ์ต๊ทผ์ ์ฌ์ฉ๋์๊ณ ์์ ๋จ(โ ๊ณง ๋ค์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ + ๋์คํฌ ์ฐ๊ธฐ ํ์)
โ ์ถ๊ฐ LRU Approximation ๊ธฐ๋ฒ๋ค:
Additional Reference Bits Algorithm: Timer ์ธํฐ๋ฝํธ๋ฅผ ํตํด ์ฃผ๊ธฐ์ ์ผ๋ก OS๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ๋นํธ์ฉ ์ด๋
Demand Paging๊ณผ Reference Bit ์ต์ ํ:
- Demand Paging ์ ํ์ด์ง ๋ธ๋ก๋๋ฉด ์ฆ์
Reference Bit = 1
๋ก ์ค์ - Second-Chance ์๊ณ ๋ฆฌ์ฆ ์ํ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ชจ๋
Reference Bit = 0
์ผ๋ก ๋ฆฌ์
- Demand Paging ์ ํ์ด์ง ๋ธ๋ก๋๋ฉด ์ฆ์
Counting Algorithms
๐Counting Algorithms: ๊ฐ ํ์ด์ง์ ๋ํ ์ฐธ์กฐ ํ์(Reference Count)๋ฅผ ์ถ์ ํ์ฌ replacement๋ฅผ ๊ฒฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ
๐ LFU (Least Frequently Used):
- ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ํ์ด์ง๋ฅผ ๊ต์ฒด, ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์์ ํ์ด์ง๊ฐ ํฌ์์
๐ MFU (Most Frequently Used):
- ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ํ์ด์ง๋ฅผ ๊ต์ฒด, ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ํฐ ํ์ด์ง๊ฐ ํฌ์์
์ค์ ์ฌ์ฉ ๊ฑฐ์ X!
Page-Buffering Algorithms
๐Page-Buffering Algorithms: Free Frame Pool์ ํ์ฉํ์ฌ ํ์ด์ง ํดํธ ์๊ฐ์ ์ฐพ์ง ์๊ณ ๋ฐ๋ก ํ ๋น!
โ ๋์ ๊ณผ์ :
- ํ์ด์ง ํดํธ ๋ฐ์ - ํ์ํ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์
- Pool์์ ์ฆ์ ํ ๋น - Free Frame Pool์์ ๋ฐ๋ก ํ๋ ์ ์ ๊ณต
- ํ๋ก์ธ์ค ์ฌ์์
- ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ณด์ถฉ - Victim ์ ํํ์ฌ Pool ๋ณด์ถฉ
๐ ์์ ๋ ํ์ด์ง๋ค์ ๋ณ๋ ๋ฆฌ์คํธ๋ฅผ ์ ์งํ๋ฉฐ Backing Store๊ฐ idleํ ๋ ๋ฏธ๋ฆฌ ์ฐ๊ธฐ ์ํ - ์๊ฐ ์ ์ฝ ๊ฐ๋ฅ
๐พFrame Contents ๋ณด์กด: Free Frame์ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ณด์กดํ๊ณ ์ด๋ค ํ์ด์ง๊ฐ ๋ค์ด์๋์ง ๊ธฐ๋กํ์ฌ ์ฌ์ฌ์ฉ ์ ๋์คํฌ ๋ก๋ ์๋ต
Applications and Page Replacement
์์ฉํ๋ก๊ทธ๋จ ์ ์ฅ์์๋ page replacement๊ฐ ์๋ง์ ์ ์๋ค.
๊ทธ๋์ application์ด ์ง์ ๊ฐ์ ๊ธฐ๋ฅ์ ํจ!
- DBSM์ ๊ฐ์ด ์์ฉํ๋ก๊ทธ๋จ์ด ์ค์ค๋ก ๋ฉ๋ชจ๋ฆฌ์ I/O๋ฒํผ๋ฅผ ๊ด๋ฆฌํ๋ฉด double bufferingํ์์ด ๋ฐ์ํ ์ ์๋ค.
OS๊ฐ ์ ๊ณตํ๋ Raw dist mode(ํ์ผ์์คํ
์ฐํ)๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ DBMS์ฒ๋ผ ์์ฉํ๋ก๊ทธ๋จ ์์ ์ ์ต์ ํ๋ ์๋ฃจ์
์ ๊ฐ๋ฐํ ์ ์๋ค.
๊ทธ๋ผ์๋ ๋๋ถ๋ถ์ ์์ฉํ๋ก๊ทธ๋จ์ ๊ทธ๋ฅ ํ์ผ์์คํ
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค