[OS] Operating System(9-3): Main Memory - Swapping
๐ ์ด์์ฒด์ ์ ๊ณต ์์ ์ ๋ฆฌ
ํ๋ก์ธ์ค๋ค์ด ๋๊ณ ์๋๋ฐ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น?
์ฆ, ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ด Swapping
Swapping
๐Swapping: ๋๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก backing store(๋ณด์กฐ ์ ์ฅ์ฅ์น)๋ก ๋ด๋ณด๋ด๊ณ , ํ์ํ ๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๋ฐฉ์
โ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํฉ๊ณ๊ฐ ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ณผํ ์ ์๊ฒ ๋ง๋๋ ๊ธฐ์
schematic of Swapping
type of swapping
- Swapping = Standard Swapping
โ Swapping ๊ณผ์ :
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๊ฐ์ง
- ํฌ์์ ์ ํ: Swap outํ ํ๋ก์ธ์ค ๊ฒฐ์ (๋ฎ์ ์ฐ์ ์์)
- Swap out: ํ๋ก์ธ์ค๋ฅผ Backing store๋ก ์ด๋
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น: ์๋ก์ด ํ๋ก์ธ์ค์๊ฒ ๋ฉ๋ชจ๋ฆฌ ์ ๊ณต
- Backing Store: ๋ชจ๋ ์ฌ์ฉ์์ ๋ฉ๋ชจ๋ฆฌ ์ด๋ฏธ์ง ์ฌ๋ณธ์ ์์ฉํ ์ ์์ ๋งํผ ํฐ fask disk
- Transfer Time: Swapping time์ ์ฃผ์ ๋ถ๋ถ, ์ค์ํ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ๋น๋ก
Direct Access: Backing store๋ ๋ฉ๋ชจ๋ฆฌ ์ด๋ฏธ์ง์ ๋ํ ์ง์ ์ ๊ทผ์ ์ ๊ณตํด์ผ ํจ
- Roll Out, Roll In: ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์์ ์ฌ์ฉ๋๋ ์ค์ํ ๋ณํ
Roll Out
: ๋ฎ์ ์ฐ์ ์์ ํ๋ก์ธ์ค๋ฅผ ์ค์ํ ์์Roll In
: ๋์ ์ฐ์ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ก๋ํ์ฌ ์คํ- ๋ชฉ์ : CPU ์ค์ผ์ค๋ง ํจ์จ์ฑ ํฅ์
๐Ready Queue ๊ด๋ฆฌ
- ์์คํ ์ **๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋ฏธ์ง๊ฐ ์๋ ready-to-run process๋ค์ ready queue๋ฅผ ์ ์ง**ํ๋ค
backing store์ ์๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ physical address๋ก ๋์์์ผ ํ๋?
โ ์ฃผ์ ๋ฐ์ธ๋ฉ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ!
I/O๋ ๋๊ฐ๋ค ๋ค์ด์ฌ ๋ ๊ฐ์ ์ฃผ์๋ก ๋ค์ด์์ผํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ ๋ฐ์ธ๋ฉ์ ๋ฐ๋ผ ์๊ตฌ๋ ์๋ ์๋ค. ๊ทธ๋์ ์ปค๋์ ์ฌ์ฉ๋๊ฒ ๋ ํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค
โ๏ธํ๋ ์์คํ ์์์ Swapping:
- Modified Swapping (UNIX, Linux, Windows)
- ์ผ๋ฐ์ ์ผ๋ก ๋นํ์ฑํ
- ํ์ฌ ํ๋ก์ธ์ค ์ผ๋ถ๋ฅผ ๋ด๋ณด๋ด์ง ์์ผ๋ฉด deadlock์ ๊ฐ ๋, ์ฆ ์๊ณ์ (threshold)์ผ๋ ํ ์ ์์ด ๋ด๋ณด๋ด์ผํจ
Context Switch Time including Swapping
Context Switching์ CPU๊ฐ ํ ํ๋ก์ธ์ค์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํ๋ ๊ณผ์ ์ธ๋ฐ, Swapping์ด ํฌํจ๋๋ฉด ์๊ฐ์ด ๊ทน์ ์ผ๋ก ์ฆ๊ฐํจ
๋ง์ฝ ๋ค์์ CPU์์ ์คํ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ
- ํ์ํ ์์
: ํ์ฌ process๋ฅผ
swap out
+ target process๋ฅผswap in
- โ Context switch time can then be very high
๊ตฌ์ฒด์ ๊ณ์ฐ ์์
โ ์ค์ํ ๋ฉ๋ชจ๋ฆฌ ์์ ์ค์ฌ์ ์ฑ๋ฅ์ ์ต์ ํ ํ ์ ์๋ค
- ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ํ์ ํ์ฌ ๋ถํ์ํ ์ค์ํ ๋ฐฉ์ง
- System call์ ํตํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ถ์
request_memory()
- ๋ฉ๋ชจ๋ฆฌ ์์ฒญ ์ OS์ ์๋ฆผrelease_memory()
- ๋ฉ๋ชจ๋ฆฌ ํด์ ์ OS์ ์๋ฆผ
โSwapping์ ์ ์ฝ ์ฌํญ:
pending I/O ๋ฌธ์ : I/O ์์ ์ด ์งํ ์ค์ธ ํ๋ก์ธ์ค๋ Swapping ๋ถ๊ฐ๋ฅ(I/O๊ฐ ์๋ชป๋ ํ๋ก์ธ์ค์ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ)
ํด๊ฒฐ์ฑ : double buffering
ํ๋ OS์์๋ standard Swapping์ ์ฌ์ฉ X Modified Version๋ง ์ฌ์ฉํจ
Swapping on Mobile Systems
๋ชจ๋ฐ์ผ์์๋ swapping์ด ๋ ๋ณต์กํด์ง๋ค
- Flash memory ๊ธฐ๋ฐ
- ๊ณต๊ฐ์ด ์๊ณ write cycle์ด ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฐ์ผ์ CPU์ flash memory ์ฌ์ด์ ์ฒ๋ฆฌ๋์ด ์์ฒญ ์๋ค
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋์
- ๊ณตํต ๊ธฐ๋ฒ: Memory Compression
- ์ฌ์ฉ ๋น๋๊ฐ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ ์์ถ
Swapping with Paging
โ Paging์ ์ฅ์ :
- ์ ํ์ ์ค์ํ: ํ์ํ ํ์ด์ง๋ง ์ด๋
- ๋น ๋ฅธ ์ฑ๋ฅ
- ํจ์จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
Intel 32 and 64-bit Architectures
Pentium CPU๋ 32-bit IA-32 ์ํคํ ์ฒ์ด๊ณ , ํ์ฌ Intel CPU๋ 64-bit IA-64 ์ํคํ ์ฒ
๊ฐ ์ํคํ ์ณ์ ๊ตฌ์กฐ๋ฅผ ์์๋ณด์
Intel IA-32 Architecture
- Intel IA-32๋ Segmentation + Paging ๋ ๋ฐฉ์ ๋ชจ๋ ์ง์
- segment ํฌ๊ธฐ: ์ต๋ 4GB
- ํ๋ก์ธ์ค ๋น segment ๊ฐ์: ์ต๋ 16K๊ฐ
- ํ์ด์ง ํฌ๊ธฐ: 4KB or 4MB
- ๋ ํํฐ์
์ผ๋ก ๋ถํ :
- ์ฒซ ๋ฒ์งธ 8K: Private segment(kept in local descriptor table(LDT))
- ๋ ๋ฒ์งธ 8K: Shared segment(kept in global descriptor table(GDT))
โCPU logical address = (selector
(16bits), offset
(32bits))
- Selector ๊ตฌ์ฑ:
LTD, GTD์ ๊ฐ ์ํธ๋ฆฌ๋ 8bytes segment descriptor๋ก ๊ตฌ์ฑ
์ฌ๊ธฐ์๋ segment์ base location๊ณผ limit ์ ๋ณด๊ฐ ํฌํจ๋จ
์ฃผ์ ๋ณํ ๊ณผ์ + linear address ๊ตฌ์ฑ
Page Address Extensions (PAE)
๐Page Address Extensions (PAE): 32-bit address limit์ผ๋ก intel์ด ๋ง๋ ํ์ฅ ๊ธฐ์
- 32-bit apps์ด 4GB ์ด์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅ
โ ์ฃผ์ ๋ณํ:
- 3-level Scheme: Paging์ด 3-level๋ก ํ์ฅ
- Top 2 bits๊ฐ page directory pointer table ์ฐธ์กฐ
- 64-bit entry: Page-directory์ page-table ์ํธ๋ฆฌ ํฌ๊ธฐ ํ์ฅ
- 36-bits - 64GB ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊น์ง ํ์ฅ
PAE Structure
Intel IA-64 Architecture
Intel x86-64๋ ํ์ฌ ์ธ๋ Intel x86 ์ํคํ ์ฒ๋ก, 64-bit ์ปดํจํ ์ ํ๋์ ๊ตฌํ
- ์ด๋ก ์ ์ฃผ์:
64bits(> 16 exabytes)
์์ฒญ ํผ! - ์ค์ ๊ตฌํ: 48bit ์ฃผ์๋ง ์ฌ์ฉ
- page size:
4KB
,2MB
,1GB
- PAE ํ์ฅ ๊ธฐ๋ฅ
- virtual addresses:
48bits (256TB)
- physical addresses:
52bits (4PB)
- virtual addresses: