๐พ Swapping
Swapping์ด๋ ํ์ฌ ์คํ๋์ง ์๋ Process๋ค์ ์์๋ก Swap Space๋ก ์ซ์๋ด๊ณ , ์ซ์๋ด๊ณ ์๊ธด ๋น ๊ณต๊ฐ์ ๋ ๋ค๋ฅธ Process๋ฅผ ์ ์ฌํ์ฌ ์คํํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค.
์ด๋ฌํ Swapping์ ์ฌ์ฉํ๋ฉด ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ๋ง์ Process๋ค์ ์ ์ฌํ์ฌ ์คํํ ์ ์์ต๋๋ค.
- Swap Sapce: ๋ณด์กฐ๊ธฐ์ต์ฅ์น ์ผ๋ถ ์์ญ
- Swap-Out: ๋ฉ๋ชจ๋ฆฌ์ ์๋ Process๋ฅผ Swap Space๋ก ์ซ์๋ด๋ ๊ณผ์
- Swap-In: Swap Space์ ์๋ Process๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ณผ์
๐พ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํ๋์ Process๋ฅผ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์๋ ๋ค์์ $3$๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ์ต์ด ์ ํฉ(First Fit): ์ต์ด๋ก ๋ฐ๊ฒฌํ ์ ์ฌ ๊ฐ๋ฅํ ๋น ๊ณต๊ฐ์ Process๋ฅผ ๋ฐฐ์นํ๋ ๋ฐฉ์
- ์ต์ ์ ํฉ(Best Fit): OS๊ฐ ๋น ๊ณต๊ฐ์ ๊ฒ์ํด ๋ณธ ํ, Process๊ฐ ์ ์ฌ๋ ์ ์๋ ๊ณต๊ฐ ์ค ๊ฐ์ฅ ์์ ๊ณต๊ฐ์ Process๋ฅผ ๋ฐฐ์นํ๋ ๋ฐฉ์
- ์ต์ ์ ํฉ(Worst Fit): OS๊ฐ ๋น ๊ณต๊ฐ์ ๊ฒ์ํด ๋ณธ ํ, Process๊ฐ ์ ์ฌ๋ ์ ์๋ ๊ณต๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ณต๊ฐ์ Process๋ฅผ ๋ฐฐ์นํ๋ ๋ฐฉ์
๐พ External Fragmentation
์ธ๋ถ ๋จํธํ(External Fragmentation)์ด๋ Process๋ฅผ ํ ๋นํ๊ธฐ ์ฌ๋ฌ์ธ๋งํผ ์์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ค๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ ํ์์ ๋งํฉ๋๋ค.
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ ์ธ๋ถ ๋จํธํ ํ์์ด ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋๋๋ค.
์ด๋ฌํ ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ํ์ ์ธ ๋ฐฉ์์ผ๋ก ์์ถ(Compaction)ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ถํ๋ ๋ฐฉ๋ฒ์กฐ์ฐจ๋ ์์ถํ๋ ๋์ ์์คํ ์ด ํ๋ ์ผ์ ์ค์งํด์ผ ํ๊ณ Process๋ค์ ์ฌ๋ฐฐ์นํจ์ผ๋ก์จ Overhead๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ Process๋ฅผ ์คํํ ์ ์๋ค๋ ๋จ์ ๋ ์์ต๋๋ค.
๐พ Virtual Memory
Virtual Memory๋ ์คํํ๊ณ ์ ํ๋ Program์ ์ผ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ฌ ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ ํฐ Process๋ฅผ ์คํํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ์ ๋๋ค.
Virtual Memory ๊ธฐ๋ฒ์๋ ํฌ๊ฒ Paging๊ณผ Segmentation์ด ์๊ณ ํ๋ ๋๋ถ๋ถ์ OS์์๋ Paging ๊ธฐ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
๐พ Paging
Paging์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ Frame ๋จ์๋ก ์๋ฅด๊ณ Process์ ๋ ผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ Page ๋จ์๋ก ์๋ฅธ ๋ค ๊ฐ Page๋ฅผ Frame์ ํ ๋นํ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ ๋๋ค.
์ด๋ฌํ Paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฒ์ ๋จ์ ์ธ ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ๊ณ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ Process๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ฅ์ | ๋จ์ |
---|---|
์ธ๋ถ ๋จํธํ ๋ฌธ์ ํด๊ฒฐ | ๋ด๋ถ ๋จํธํ |
๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ Process๋ฅผ ์คํ | Process์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด์ Page Table์ ํฌ๊ธฐ๋ ์ปค์ง๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ Page Table์ ๋ชจ๋ ์ฌ๋ ค๋๋ ๊ฒ์ ๋ญ๋น (Hierarchical Paging์ ํตํด ํด๊ฒฐ) |
Process ๊ฐ Page๋ฅผ ๊ณต์ (Ex. Copy on Write) | ย |
๋ด๋ถ ๋จํธํ: Process์ ํฌ๊ธฐ๊ฐ Page์ ํฌ๊ธฐ๋ก ์ ํํ ๋๋ ์ง์ง ์์ ๋ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ํ์
๐พ Page Table
Process๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์ฐ์์ ์ผ๋ก ๋ฐฐ์น๋์ด ์๋ ๊ฒฝ์ฐ CPU๊ฐ ํด๋น Process๋ฅผ ์์ฐจ์ ์ผ๋ก ์ํํ๊ธฐ ์ํด์๋ ์์๋ฅผ ์์์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด CPU๊ฐ ๋ฐ๋ผ๋ณด๋ ์ฃผ์์ธ ๋ ผ๋ฆฌ ์ฃผ์์๋ ์ฐ์์ ์ผ๋ก ๋ฐฐ์น๋๋๋ก ํ๊ธฐ ์ํด Paging ๊ธฐ๋ฒ์์๋ Page Table์ ์ฌ์ฉํฉ๋๋ค.
์ฆ, CPU๋ Page Table์ Page Number๋ง ๋ณด๊ณ ํด๋น Page๊ฐ ์ ์ฌ๋ Frame์ ์ฐพ์ ์ ์๊ฒ ํฉ๋๋ค.
Process๋ง๋ค Page Table์ ๊ฐ์ง๊ณ ์๊ณ ๊ฐ Process์ Page Table์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฌ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ PTBR(Page Table Base Register)์ ์ ์ฅ๋์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ํ์๋ฅผ ์ค์ด๊ธฐ ์ํด Page Table์ ์ผ๋ถ๋ฅผ TLB(Translation Lookaside Buffer)์ ์ ์ฅํ๊ณ CPU ๊ณ์ ๋์ด Page Table์ Cache ์ญํ ์ ํฉ๋๋ค.
๐พ Page Table Entry
Page Table Enetry์๋ Page Number์ Frame Number ๋ฟ ์๋๋ผ ๋ง์ ๊ฒ๋ค์ด ๋ด๊ธธ ์ ์์ต๋๋ค.
๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ํฌํจ๋ฉ๋๋ค.
Bit | Definition | Bit๊ฐ 1์ธ ๊ฒฝ์ฐ | Bit๊ฐ 0์ธ ๊ฒฝ์ฐ |
---|---|---|---|
์ ํจ ๋นํธ(Valid Bit) | ํด๋น Page๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ๋ Bit | Page๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์๋ ๊ฒฝ์ฐ | Page๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์์ง ์์ ๊ฒฝ์ฐ |
๋ณดํธ ๋นํธ(Protection Bit) | Page์ ์ ๊ทผํ ๊ถํ์ ์ ํํ์ฌ Page๋ฅผ ๋ณดํธํ๋ Bit | ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ Page | ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ Page |
์ฐธ์กฐ ๋นํธ(Reference Bit) | CPU๊ฐ Page์ ์ ๊ทผํ ์ ์ด ์๋์ง๋ฅผ ๋ํ๋ด๋ Bit | CPU๊ฐ Page์ ์ ๊ทผํ ์ ์ด ์๋ ๊ฒฝ์ฐ | CPU๊ฐ Page์ ์ ๊ทผํ ์ ์ด ์๋ ๊ฒฝ์ฐ |
์์ ๋นํธ(Modified Bit, Dirty Bit) | ํด๋น Page๊ฐ ์์ ๋ ์ ์ด ์๋์ง๋ฅผ ๋ํ๋ด๋ Bit | Page์ ๋ฐ์ดํฐ๋ฅผ ์ด ์ ์ด ์๋ ๊ฒฝ์ฐ | Page์ ๋ฐ์ดํฐ๋ฅผ ์ด ์ ์ด ์๋ ๊ฒฝ์ฐ |
๐พ Demand Paging
Demand Paging(์๊ตฌ ํ์ด์ง)์ด๋ Process๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ ๋ ์ฒ์๋ถํฐ ๋ชจ๋ Page๋ฅผ ์ ์ฌํ์ง ์๊ณ ํ์ํ Page๋ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
Demand Paging์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- CPU๊ฐ ํน์ Page์ ์ ๊ทผํ๋ ๋ช ๋ น์ด๋ฅผ ์คํ
- ํด๋น Page๊ฐ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋์ง ์๋์ง ํ์ธ
- ํด๋น Page๊ฐ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ CPU๋ Page๊ฐ ์ ์ฌ๋ Frame์ ์ ๊ทผ
- ํด๋น Page๊ฐ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ Page Fault ๋ฐ์
- Page Fault ์ฒ๋ฆฌ: ํด๋น Page๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ์ฌํ๊ณ Valid Bit๋ฅผ 1๋ก ์ค์
- ๋ค์ 1๋ฒ ์ํ
Demand Paging ๊ธฐ๋ฒ์ ์์ ์ ์ผ๋ก ์๋ํ๊ฒ ํ๋ ค๋ฉด Page Replacement Algorithm์ ๊ฒฐ์ ํ๊ณ Frame Allocation์ ์ ์ํํด์ผ ํฉ๋๋ค.
๐พ Page Replacement Algorithm
Page Replacement Algorithm์ด๋ ๊ฐ๋์ฐฌ ๋ฉ๋ชจ๋ฆฌ์์ Page Out์ ํ Page๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Page Fault๋ฅผ ๊ฐ์ฅ ์ ๊ฒ ์ผ์ผํค๋ Page Replacement Algorithm์ ์ข์ Algorithm์ผ๋ก ํ๊ฐํฉ๋๋ค. Page Fault ํ์๋ Page Reference String์ ํตํด ์ ์ ์์ต๋๋ค.
์ฆ Page Reference String์ ํตํด Page Replacement Algorithm์ ์ฑ๋ฅ์ ํ๊ฐํฉ๋๋ค.
Page Reference String(ํ์ด์ง ์ฐธ์กฐ์ด): CPU๊ฐ ์ฐธ์กฐํ๋ Page๋ค ์ค ์ฐ์๋ Page๋ฅผ ์๋ตํ Page String
์ฐ์๋ Page๋ฅผ ์๋ตํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- ์ฐ์๋ Page๋ Page Fault๋ฅผ ๋ฐ์์ํค์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Page Replacement Algorithm์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Page Replacement Algorithm | Definition |
---|---|
FIFO(First-In First-Out) | ์ ์ฌ๋ Page ์์๋๋ก ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ |
Second Chance | ์ฐธ์กฐ ๋นํธ๊ฐ $1$์ธ ๊ฒฝ์ฐ ์ฐธ์กฐ ๋นํธ๋ฅผ $0$์ผ๋ก ๋ฐ๊พธ๊ณ ์ ์ฌ ์๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ํ ๋ฒ ๋ ๊ธฐํ๋ฅผ ์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ์ฆ |
LRU(Least Recently Used) | ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ Page๋ฅผ ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ |
Optimal | CPU์ ์ํด ์ฐธ์กฐ๋๋ ํ์๋ฅผ ๊ณ ๋ คํ์ฌ ๊ต์ฒดํ๋ ์๊ณ ๋ฆฌ์ฆ (๊ตฌํ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ OS์์ ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ๋ค๋ฅธ Page Algorithm์ ์ด๋ก ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ) |
๐พ Frame Allocation
๋ง์ฝ Frame์ ์๊ฐ ์ ์ด์ Page Fault๊ฐ ์์ฃผ ๋ฐ์ํ์ฌ Process๊ฐ ์ค์ ์คํ๋๋ ์๊ฐ๋ณด๋ค Paging์ ๋ ๋ง์ ์๊ฐ์ ์์ํ์ฌ ์ฑ๋ฅ์ด ์ ํด๋๋ Thrashing์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
Thrashing: ์ง๋์น๊ฒ ๋น๋ฒํ Page Replacement๋ก ์ธํด CPU ์ด์ฉ๋ฅ ์ด ๋ฎ์์ง๋ ๋ฌธ์
Frame Allocation ๋ฐฉ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค.
Frame Allocatio | Definition |
---|---|
Static Allocation | Process์ ์คํ ๊ณผ์ ์ ๊ณ ๋ คํ์ง ์๊ณ ๋จ์ํ Process์ ํฌ๊ธฐ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ง ๊ณ ๋ คํ๋ ๋ฐฉ์ |
Equal Allocation | ๋ชจ๋ Process๋ค์๊ฒ ๊ท ๋ฑํ๊ฒ Frame์ ํ ๋นํด์ฃผ๋ ๋ฐฉ์ |
Proportional Allocation | Process์ ํฌ๊ธฐ์ ๋ฐ๋ผ Frame์ ํ ๋นํด์ฃผ๋ ๋ฐฉ์ |
Dynamic Allocation | Process๋ฅผ ์คํํ๋ ๊ณผ์ ์์ ํ ๋นํ Frame์ ๊ฒฐ์ ํ๋ ๋ฐฉ์ |
Working Set Model | ํด๋น Process์ Working Set๋งํผ์ Frame์ ๋์ ์ผ๋ก ํ ๋นํด์ฃผ๋ ๋ฐฉ์ |
PFF(Page-Fault Frequency) | ํ์ด์ง ํดํธ์จ์ ์ํ์ ๊ณผ ํํ์ ์ ์ ํ๊ณ ํ์ด์ง ํดํธ์จ์ด ์ํ์ ๋ณด๋ค ๋์ผ๋ฉด Frame์ ๋ ํ ๋นํ๊ณ ํํ์ ๋ณด๋ค ๋ฎ์ผ๋ฉด Frame์ ํ์ํ๋ ๋ฐฉ์ |
Working Set(์์ ์งํฉ): ์คํ ์ค์ธ Process๊ฐ ์ผ์ ์๊ฐ ๋์ ์ฐธ์กฐํ Page์ ์งํฉ
๐พ Degree Of Multiprogramming๊ณผ Thrashing
Degree Of Multiprogramming์ด๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋์์ ์คํ๋๋ Process์ ์๋ฅผ ๋งํฉ๋๋ค.
Degree Of Multiprogramming์ ์ฆ๊ฐ์ํค๋ฉด CPU ์ด์ฉ๋ฅ ์ ๋์ผ ์ ์์ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ๋์์ ์คํ๋๋ Prcoess์ ์๊ฐ ์ด๋ ์ ๋ ์ฆ๊ฐํ๋ฉด CPU ์ด์ฉ๋ฅ ์ด ๋์์ง์ง๋ง, ํ์ ์ด์์ผ๋ก ๋๋ฆฌ๋ฉด ๊ฐ Process๋ค์ด ์ฌ์ฉํ ์ ์๋ Frame์ ์๊ฐ ์ ์ด์ง๊ธฐ ๋๋ฌธ์ Page Fault๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ Thrashing์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ Thrashing์ด ๋ฐ์ํ๋ ๊ทผ๋ณธ์ ์ธ ์ด์ ๋ ๊ฐ Process๊ฐ ํ์๋ก ํ๋ ์ต์ํ์ Frame์ ์๊ฐ ๋ณด์ฅ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก Thrashing์ด ๋ฐ์ํ์ง ์๋๋ก OS๋ ๊ฐ Process๊ฐ ํ์๋ก ํ๋ ์ต์ํ์ Frame์ ์๋ฅผ ํ์ ํ๊ณ ๊ฐ Process๋ค์๊ฒ ์ ์ ํ ์ ๋งํผ Frame์ ํ ๋นํด ์ฃผ์ด์ผ ํฉ๋๋ค.