[OS] Operating System(10-3): Allocation of Frame
๐ ์ด์์ฒด์ ์ ๊ณต ์์ ์ ๋ฆฌ
Allocation of Frames
๐Allocation of Frames: ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ๋ ๊ฐ๊ฐ์๊ฒ ์ผ๋ง๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(ํ๋ ์)์ ์ค์ง ์ ํ๋ ๊ฒ
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ์๋กํ๋ frame์ ์๋ minimum์ด ์กด์ฌํจ
- maximum์ ์์คํ ์ ์ ์ฒด ํ๋ ์ ์
๋๋ฌด ์ ๊ฒ ์ฃผ๋ฉด page fault๊ฐ ์์ฃผ ๋ฐ์, ๋๋ฌด ๋ง์ด ์ฃผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ถ์กฑํด์ง
- ์์: IBM 370 - 6 pages to handle SS MOVE instruction:
- instruction is
6 bytes
, might span2 pages
- 2 pages to handle from - ๋ฐ์ดํฐ ์ฝ๊ธฐ
- 2 pages to handle to - ๋ฐ์ดํฐ ์ฐ๊ธฐ
- ์ต์ ํ์ ํ๋ ์: 6๊ฐ (์ด๋ณด๋ค ์ ๊ฒ ํ ๋นํ๋ฉด page fault ๋ฐ์)
- instruction is
โ ๋๊ฐ์ allocation schemes:
- **fixed** allocation
- **priority** allocation
Fixed allocation
- Equal allocation: ํ๋ ์๊ณผ ํ๋ก์ธ์ค ์์ ๋ฐ๋ผ ๊ท ๋ฑํ๊ฒ ๋ฐฐ๋ถํ๋ ๋ฐฉ๋ฒ
๊ณ์ฐ ๊ณต์:
- ์ด ํ๋ ์ = 100๊ฐ, OS์ฉ = 20๊ฐ, ํ๋ก์ธ์ค = 5๊ฐ
๊ฐ ํ๋ก์ธ์ค ํ ๋น = (100-20) รท 5 = 16๊ฐ โ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๊ฐ๋ฅ์ฑ ์กด์ฌ
- Proportional allocation: process size์ ๋ฐ๋ผ frame์ ํ ๋นํ๋ ๋ฐฉ๋ฒ
๊ณ์ฐ ๊ณต์:
s_i
= ํ๋ก์ธ์ค i์ ํฌ๊ธฐS
= ๋ชจ๋ ํ๋ก์ธ์ค ํฌ๊ธฐ์ ํฉm
= ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ ์ ์a_i
= ํ๋ก์ธ์ค i์ ํ ๋นํ ํ๋ ์ ์ =(s_i/S) ร m
- ์์ ๊ณ์ฐ:
- m = 62, s1 = 10, s2=127 โ S = 137
- ํ๋ก์ธ์ค 1: ํฌ๊ธฐ 10, ํ ๋น = (10/137) ร 62 โ
4 ํ๋ ์
- ํ๋ก์ธ์ค 2: ํฌ๊ธฐ 127, ํ ๋น = (127/137) ร 62 โ
57 ํ๋ ์
- ํ๋ก์ธ์ค 1: ํฌ๊ธฐ 10, ํ ๋น = (10/137) ร 62 โ
Global vs Local Allocation
๐Global replacement: ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ frame ์งํฉ์์ ๊ต์ฒดํ frame์ ๊ณ ๋ฆ
- ํ๋์ ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก๋ถํฐ frame์ ๊ฐ์ ธ์ฌ ์ ์์
- ํ๋ก์ธ์ค ์คํ ์๊ฐ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์(โ ํ ๋น๋ ํ๋ ์์ ์๊ฐ ์์ ์ ๋ฌผ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ)
- ์ฒ๋ฆฌ๋์ด ๋ ๋์ - ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋จ
๐Local replacement: ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ ์๊ฒ ํ ๋น๋ ํ๋ ์ ๋ด์์๋ง ๊ต์ฒด๋ฅผ ์ํํ๋ ๋ฐฉ์
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ ๋ฆฝ์ ์ธ ํ๋ ์ ์งํฉ ์ฌ์ฉ
- ํ๋ก์ธ์ค๋ณ ์ฑ๋ฅ์ด ์ผ๊ด์ ์
- ๋ฉ๋ชจ๋ฆฌ ํ์ฉ๋๊ฐ ๋จ์ด์ง ์ ์์
Reclaiming Pages
global page-replacement policy๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ์ ๋ต์ด ์กด์ฌ
๐Reclaiming Pages: ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ด ํญ์ ์ฑ๊ณตํ ์ ์๋๋ก free frame์ ์๊ฐ ์ด๋ค ์๊ณ์น์ ๋๋ฌํ๋ฉด ํ์ด์ง ๊ต์ฒด๋ฅผ ๋ฏธ๋ฆฌ ์คํํ๋ ์ ๋ต
โ ๋์ ์๋ฆฌ:
- threshold ๋ชจ๋ํฐ๋ง: free-frame list๊ฐ ํน์ ์๊ณ๊ฐ(threshold) ์ดํ๋ก ๋จ์ด์ง๋ฉด ํ์ด์ง ํ์ ์์
- ๋ฏธ๋ฆฌ ํ๋ณด: free-frame list๊ฐ ์์ ํ ๋น๊ธฐ ์ ์ ๊ต์ฒด ์์ ์ํ
- ์ฐ์์ ์๋น์ค: ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๋๊ธฐ์ํค์ง ์๊ณ ์ฆ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
Non-Uniform Memory Access
- UMA ์์คํ ์์๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ด ๋์ผํจ
๐NUMA system:
- CPU๋ง๋ค ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์กด์ฌ
- ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ์๊ฒฉ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ณด๋ค ๋น ๋ฆ
- ์์คํ
๋ฒ์ค๋ฅผ ํตํด ์ํธ ์ฐ๊ฒฐ
โ ํน์ง:
- Locality: ํ๋ก์ธ์ค๋ฅผ ํด๋น ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๊น์ด CPU์์ ์คํ
- ํ์ฅ์ฑ: ๋ ๋ง์ CPU-๋ฉ๋ชจ๋ฆฌ ๋ ธ๋ ์ถ๊ฐ ๊ฐ๋ฅ
โ๏ธ Solaris์ NUMA ์ต์ ํ: lgroups
- CPU์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ์ ์์น
- ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ lgroup ๋ด์ CPU์์ ์คํ
- ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ lgroup ๋ด์ ํ ๋น
Thrashing
๐Thrashing: ํ๋ก์ธ์ค๊ฐ ํ๋ก๊ทธ๋จ ์คํ๋ณด๋ค ํ์ด์ง์ ๋ ๋ง์ ์๊ฐ์ ๋ณด๋ด๋ ์๊ฐ - ์ฆ, ํ์ด์ง ํดํธ๊ฐ ๊ณผ๋ํ๊ฒ ๋ฐ์ํ๋ ํ์
๋ง์ฝ ํ๋ก์ธ์ค๊ฐ ์ถฉ๋ถํ ํ์ด์ง๊ฐ ์์ผ๋ฉด, ํ์ด์ง ํดํธ๊ฐ ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํ๊ฒ ๋จ
๐๋ฐ์๊ณผ์ :
- page fault ๋ฐ์
- ๊ธฐ์กด ํ๋ ์ ๊ต์ฒด
- ๋ฐฉ๊ธ ๊ต์ฒด๋ ํ๋ ์ ํ์
- ๋ฐ๋ณต์ ๊ต์ฒด
- ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํ๋ ์ด์ : ํ์ด์ง ํดํธ ๋๋ฌธ์ frame์ ๊ต์ฒดํด์ผํ๊ณ ๊ทธ๋ฌ๋ฉด
- CPU ํจ์จ์ด ๋จ์ด์ง
- OS๋ CPU ์ฌ์ฉ๋ฅ ์ด ๋ฎ์ ๋ ๋ง์ ํ๋ก์ธ์ค ์ถ๊ฐ
- ํ๋ก์ธ์ค๊ฐ ์ฆ๊ฐ โ ๋ ์ฌํ thrasing ๋ฐ์
thrasing์ด ๋ฐ์ํ๋ ์๊ฐ CPU ์ฌ์ฉ๋ฅ ์ด ๊ธ๊ฒฉํ๊ฒ ๋ฎ์์ง
Demand Paging and Thrashing
Demand paging์ด ์๋ํ๋ ์ด์
- Locality Model - ๊ฐ์ด ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๋ ํ์ด์ง์ ์งํฉ
- ํ๋ก์ธ์ค๊ฐ ํน์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ง์ค์ ์ผ๋ก ์ฌ์ฉ
- ์ฌ๋ฌ ์ง์ญ์ฑ์ด ๋์์ ํ์ฑํ๋ ์ ์์
๐์ Thrasing์ด ๋ฐ์ํ ๊น?:
- ฮฃ(size of locality) > total momory size
- ๋ชจ๋ ํ์ฑ ํ๋ก์ธ์ค์ ์ง์ญ์ฑ ํฌ๊ธฐ ํฉ์ด ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํด ๋ ์ฐ๋์ฑ์ด ๋ฐ์
โ local or priority Page Replacement๋ก ์ ํ์ ์ธ thrashing ํด๊ฒฐ
Local page replacement algorithm๋ thrashing ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ์ง๋ ๋ชปํ๋ค.
- ์๋๋ฉด ์ด๋ค ํ๋ก์ธ์ค๊ฐ thrashing์ด ์ผ์ด๋๋ฉด paging device๊ฐ ๋ฐ๋น ์ง๋ฏ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ thrashing์ด ์๋๋๋ผ๋ EAT๊ฐ ๋๋น ์ง๋ค
Working-Set Model
๐Working-Set Model: Page์ ์ฌ์ฉ๋์ ์ธก์ ํ๊ณ ์ ์ ํ ํ๋ ์ ํ ๋น์ ์ํ model
ฮ (Delta)
(Working Set Window): ๊ณ ์ ๋ ํ์ด์ง ์ฐธ์กฐ ํ์ (์: 10,000๊ฐ ๋ช ๋ น์ด)WSS_i
(Working Set Size): ์ต๊ทผ ฮ๋ฒ์ ์ฐธ์กฐ์์ ์ฌ์ฉ๋ ๊ณ ์ ํ์ด์ง ์D
: ๋ชจ๋ ํ๋ก์ธ์ค์ WSS ํฉ๊ณ (Total Demand Frames)
โ D > m (์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ) โ ์ฐ๋์ฑ ๋ฐ์
t1์ WSS๋ 5
t2์ WSS๋ 2
๊ทธ๋ผ Working set์ ์ด๋ป๊ฒ ์ถ์ ํด์ผํ ๊น?
๋ฐ๋ก Timer์ reference bit๋ฅผ ์ฌ์ฉํ์ฌ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํด์ ์ถ์ ํ๋ค.
Keeping Track of the Working Set
interval timer + reference bit
๋ฅผ ์ด์ฉํ ๊ทผ์ฌ ๊ตฌํ- ์์: ฮ = 10,000, ํ์ด๋จธ ์ธํฐ๋ฝํธ = 5,000 time units
- ๊ฐ ํ์ด์ง๋ง๋ค 1๊ฐ์ ์ฐธ์กฐ ๋นํธ + 2๊ฐ์ ํ์คํ ๋ฆฌ ๋นํธ = ์ด 3๋นํธ
- ํ์ด๋จธ ์ธํฐ๋ฝํธ ๋ฐ์ โ ๋ชจ๋ ์ฐธ์กฐ ๋นํธ๋ฅผ ํ์คํ ๋ฆฌ ๋นํธ๋ก ์ํํธ
- ๋ชจ๋ ํ์ด์ง์ ์ฐธ์กฐ ๋นํธ๋ฅผ 0์ผ๋ก ์ค์
- ๋นํธ ์ค ํ๋๋ผ๋ 1์ด๋ฉด Working Set์ ํฌํจ
Page Fault Frequency
๐ Page-Fault Frequency (PFF): ์ค์ page fault ๋ฐ์๋ฅ ๋ชจ๋ํฐ๋ง
- ์ํ/ํํ ์๊ณ๊ฐ ์ค์
- ์๊ณ๊ฐ ์ด๊ณผ ์ ํ๋ ์ ์กฐ์
Working set and PFF
Allocation Kernel Memory
์ปค๋์ ์์ ์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ allocation์ด ํจ์ฌ ์ฌ์
- ๋ค์ํ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญ
- ์ผ๋ถ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ ์ฐ์์ (ํนํ device I/O)
Buddy System
๐Buddy System: ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
โ ์๋์๋ฆฌ:
- ๊ณ ์ ํฌ๊ธฐ ์ธ๊ทธ๋จผํธ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ํ์ด์ง๋ค์ ํ ๋น
- 2์ ๊ฑฐ๋ญ์ ๊ณฑ ๋จ์๋ก๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น
- ์์ฒญ๋ ํฌ๊ธฐ๋ณด๋ค ํฐ ๋ค์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ผ๋ก ๋ฐ์ฌ๋ฆผ
- ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ๋ณด๋ค ์์ ํ ๋น์ด ํ์ํ๋ฉด ํ์ฌ ์ฒญํฌ๋ฅผ ๋๋ก ๋ถํ
- ์ฅ์ : ์ฌ์ฉํ์ง ์๋ ์ฒญํฌ๋ค์ ๋น ๋ฅด๊ฒ ๋ ํฐ ์ฒญํฌ๋ก ๋ณํฉ ๊ฐ๋ฅ
- ๋จ์ : ๋ด๋ถ ๋จํธํ(fragmentation) ๋ฐ์ (21KB ์์ฒญ์ 32KB ํ ๋น)
Slab Allocator (์ฌ๋ฉ ํ ๋น์)
Buddy System์ ๋์ ์ ๋ต
- **Slab</span.: ํ๋ ์ด์์ **๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ํ์ด์ง
- Cache: ํ๋ ์ด์์ ์ฌ๋ฉ์ผ๋ก ๊ตฌ์ฑ
- ๊ฐ ๊ณ ์ ํ ์ปค๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ง๋ค ๋จ์ผ ์บ์ ์กด์ฌ
- ์บ์๋ ๊ฐ์ฒด๋ค(objects)๋ก ์ฑ์์ง - ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ธ์คํด์ค๋ค
โ ์ฅ์ :
- ๋จํธํ(fragmentation) ์์: ์ ํํ ํฌ๊ธฐ์ ๊ฐ์ฒด๋ง ํ ๋น
- ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ ๋ง์กฑ: ๋ฏธ๋ฆฌ ํ ๋น๋ ๊ฐ์ฒด ์ฌ์ฉ
Slab Allocator in Linux
๐Linux์์ ์ค์ ์ฌ์ฉ ์์:
- process descriptor๋
struct task_struct
ํ์ - ์ฝ 1.7KB์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
- ์๋ก์ด ํ์คํฌ ์์ฑ ์ โ ์บ์์์ ์๋ก์ด struct ํ ๋น
๊ธฐ์กด์ ์์ ๋ก์ด
struct task_struct
์ฌ์ฉ- Slab ํ ๋น ์๊ณ ๋ฆฌ์ฆ:
- Partial slab ์์ ์์ struct ์ฌ์ฉ
- Partial์ด ์์ผ๋ฉด Empty slab์์ ํ๋ ๊ฐ์ ธ์ด
- Empty slab๋ ์์ผ๋ฉด ์๋ก์ด Empty slab ์์ฑ
Prepaging
๐Prepaging: ํ๋ก์ธ์ค ์์ ์ ๋ฐ์ํ๋ ๋๋์ ํ์ด์ง ํดํธ๋ฅผ ์ค์ด๊ธฐ ์ํ ๊ธฐ๋ฒ
- ํ๋ก์ธ์ค๊ฐ ์ฐธ์กฐํ๊ธฐ ์ ์ ํ์ํ ๊ฒ์ผ๋ก ์์๋๋ ํ์ด์ง๋ค์ ๋ฏธ๋ฆฌ ๋ก๋
- ์์ธก ๊ธฐ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ
- ์์ ์๊ฐ ๋จ์ถ vs ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น์ ํธ๋ ์ด๋์คํ
โ ๊ณต์:
s
๊ฐ ํ์ด์ง๋ฅผ prepageํ๊ณ , ฮฑ๊ฐ ์ค์ ์ฌ์ฉ๋๋ ๋น์จ์ผ ๋- ์ด๋:
s ร ฮฑ
(์ ์ฅ๋ ํ์ด์ง ํดํธ) - ์์ค:
s ร (1-ฮฑ)
(๋ถํ์ํ ํ์ด์ง) - ์กฐ๊ฑด:
cost(s prepaging) < cost(sรฮฑ page fault)
โ prepaging wins
Page size
Page size๋ ์์คํ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ์ค๊ณ์ฌํญ์ด๋ค.
โ ๊ณ ๋ ค ์์๋ค:
- ๋จํธํ โ: ์์ ํ์ด์ง๊ฐ ์ ๋ฆฌ
- ํ์ด์ง ํ ์ด๋ธ ํฌ๊ธฐ โ: ํฐ ํ์ด์ง๊ฐ ์ ๋ฆฌ
- ํด์๋ โ: ์์ ํ์ด์ง๊ฐ ์ ๋ฆฌ
- I/O ์ค๋ฒํค๋: ํฐ ํ์ด์ง๊ฐ ํํธ์ ์ ๋ฆฌ, ์์ ํ์ด์ง๊ฐ ์์ ์ ๋ฆฌ
- ํ์ด์ง ํดํธ ์ โ: ํฐ ํ์ด์ง๊ฐ ์ ๋ฆฌ
- ์ง์ญ์ฑ โ: ์์ ํ์ด์ง๊ฐ ์ ๋ฆฌ
- TLB ํฌ๊ธฐ์ ํจ์จ์ฑ โ: ํฐ ํ์ด์ง๊ฐ ์ ๋ฆฌ
์ค์ ๋ฒ์๋ 2^12(4KB)qnxj 2^22(4MB)๊น์ง
TLB Reach
๐TLB Reach: TLB๊ฐ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์
TLB Reach = (TLB Size) ร (Page Size)
- ์ด์์ ์ผ๋ก๋ ๊ฐ ํ๋ก์ธ์ค์ working set์ด TLB์ ์ ์ฅ๋์ด์ผ ํจ
- ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ ํ์ด์ง ํดํธ ๋ฐ์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ:
- ํ์ด์ง ํฌ๊ธฐ ์ฆ๊ฐ: ๋จํธํ ์ฆ๊ฐ ์ํ ์กด์ฌ!
- ๋ค์ค ํ์ด์ง ํฌ๊ธฐ ์ ๊ณต: ์ ์ฐ์ฑ ํ๋ณด