OS - Memory Management (1)
๐ฉโ๐ป OS - Memory Management (1)
Preview
1๏ธโฃ Background - Memory Mapping & Protection, MMU, Virtual Memory, Swapping
2๏ธโฃ Contiguous Memory Allocation - Block
3๏ธโฃ NonContiguous Memory Allocation - Paging, Segment
1๏ธโฃ Background
๐ก๏ธMemory Mapping & Protection
- logical ์ฃผ์๋ฅผ physical ์ฃผ์๋ก mapping ํ๊ณ
- Out Of Memory ๊ด๋ฆฌ [ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ฒ์ ๊ด๋ฆฌ ]
ยฎ๏ธ Base Register & Limit Register
- Base Register : Physical Address(RAM)์ ์์ ์ฃผ์ (Relocation Register)
- Limit Register : ํ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ์ ์๋ register์ ๋ง์ง๋ง ์ฃผ์
์ ๋ Register๋ฅผ ํตํด Logical Addessโ Physical Address Mapping ์ด ๊ฐ๋ฅํ๋ค. โ Mapping
๋ํ, Limit Register๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ Memory ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ค๋ฉด Trap( ๋ด๋ถ Interrupt) ๋ฐ์ โ Protection
Simple example Memory Protection
- : 30004
- : 12090
Rrocess B์ ๋ํ ์์ ์ฃผ์๋ 30004 ๊ฐ ๋๊ณ ์ด ํ๋ก์ธ์ค์ ๋ฒ์๋ 42094๊น์ง๊ฐ ๋ฉ๋๋ค.
๋ง์ฝ Process B ์ ๋ํด 42096 ์ฃผ์๋ฅผ ์ํํ๊ณ ์ ํ๋ค๋ฉด Process B๊ฐ ์๋ C์ ์์ญ์ด๊ธฐ ๋๋ฌธ์ out of memory๊ฐ ๋ฐ์ํด trap์ด ๋ฐ์๋ฉ๋๋ค.
๐ฑ Address Binding
- ์ฃผ์๋ฅผ ๋ฐ์ธ๋ฉ ํ๋ ์์ ์ ๋ฐ๋ผ compile time, load time, execution time ์ผ๋ก ๋๋๋ค
- ์ปดํ์ผ ์ binding ํ๋ฉด ์ฃผ์๊ฐ ๊ณ ์ ๋์ด ๋ฉ๋ชจ๋ฆฌ ์ ๋น ๊ณต๊ฐ์ด ๋ง์ ์ ์๊ณ ,
- ๋ก๋ฉ ์ binding ํ๋ฉด ํ๋ก์ธ์ค ๋ด์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๋ช ๋ น์ด๋ค์ด ๋ง์ ์ด๋ค์ ์ ๋ถ ๋ณํํ๋ ค๋ฉด ๋ก๋ฉ ์ ์ค๋ ์๊ฐ์ด ์์๋ฉ๋๋ค.
โก ๋ฐ๋ผ์, ์ฃผ๋ก Run Time(Execution) ์์ Address Binding์ ์ํํฉ๋๋ค.
Runtime ์ ์ฃผ์ ๋ณํ์ MMU๋ผ๋ ํ๋์จ์ด ์ฅ์น๋ฅผ ์ด์ฉํด logical โฉ physical ์ฃผ์ ๋ณํํฉ๋๋ค.
MMU
์ถ์ฒ : https://rebro.kr/178
Virtual Memory
Physical Memory
- ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฆ, main memory ( RAM )์ ์๋ฏธํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๐ Virtual Memory
์ ํ์??
Process๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ๋ฉด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์์ ํ ๋นํด์ฃผ๋ค ๋ณด๋ฉด ์ ์ฐจ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๊ฒ ๋ฉ๋๋ค. ํนํ ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด์ RAM๋ง์ผ๋ก๋ ๋ถ๋ด๋๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ SSD(ํ๋ ๋์คํฌ)์ ๊ฐ์ ๊ณต๊ฐ์ SWAP ์์ญ์ ์ค์ ํด ๋ง์น ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ธ๊ฒ์ฒ๋ผ ๋์ํ๋๋ก ๋ง๋๋ ๊ฒ์
๋๋ค.
Virtual Memory = RAM(physical memory) + Disk
์ฆ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ ๋์คํฌ ์์ญ ์ผ๋ถ๋ฅผ SWAP์ผ๋ก ๋ง๋ค์ด ์ข ๋ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๋๋ก ๋ง๋ ๊ณต๊ฐ์
๋๋ค.
Swapping
- backing store : Virtual Memory
๐ฃ Swapping ์ด๋?
- ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด SWAP์์ญ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์ฅํ๊ณ
- ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ swap outํด์ SWAP ์์ญ์ผ๋ก ๋ด์ซ๊ณ
- ํ์ํ ์์ญ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ก swap ing ํ๋ ๊ฒ์ด๋ค.
Context Switching VS Swapping VS Paging
Context Switching
- CPU Register์์ ์ผ์ด๋๋ ๊ณผ์ ์ด๋ค.
- ํ ํ๋ก์ธ์ค์ Context๋ฅผ PCB์ ์ ์ฅ
- ๋ค์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ memory, register ๊ฐ์ loadํด ์ฌ์ฉํ๋ ๊ณผ์
- ์ฆ, context switching์ Main Memory์์ ์ผ์ด๋๋ ๊ฒ์ด ์๋ CPU Register ๋จ์์์ ์คํ
Swapping
- Physical Memory ๊ณต๊ฐ ๋ถ์กฑ ์ SWAP(๊ฐ์ ๋ฉ๋ชจ๋ฆฌ) ์์ญ๊ณผ process๋ฅผ swapping ํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
- Context Switching์ ๋นํด ๋น์ฐํ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ swappingํ๋ ๊ฒ ๊ฐ๋ค!! (์ ํํ์ง X)
Paging
- process๋ฅผ page ๋จ์๋ก ๊ด๋ฆฌํ๋ฉด์ ์ด page๋ฅผ ๊ต์ฒดํ๋ ๊ณผ์
- page in & page out ์ผ๋ก ์ํ๋๋ค.
2๏ธโฃ Contiguous Memory Allocation
- ์ฌ์ฉ ๊ฐ๋ฅํ process๋ฅผ ์ฐ์์ ์ผ๋ก ํ ๋นํ๋ค.
- ๊ฐ ๋จ์๋ฅผ block์ด๋ผ ์นญํ๊ณ free blocks = HOLE์ด๋ผ ํ๋ค.
- block์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํด๋๊ณ ํ ๋นํ๋ ๊ณ ์ ๋ถํ ๋ฐฉ์
- ์ด ๊ฒฝ์ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ก์ธ์ค๊ฐ block ํฌ๊ธฐ๋ก ์ ํ๋์ด ์ฐ์ด์ง ์๋๋ค.
- block์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ธ ๊ฐ๋ณ ๋ถํ ๋ฐฉ์
Example
HOLE
HOLE
- Process๋ฅผ ํ ๋น, ํด์ ํ๋ค๋ณด๋ฉด ์์ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ๋ถ์ ์ผ๋ก ๊ตฌ๋ฉ(HOLE)์ด ์๊ธธ ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ์ด HOLE์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- First Fit
- Best Fit
- Worst Fit
First Fit
- ํ ๋น ๊ฐ๋ฅํ ์ฒซ ๋ฒ์งธ HOLE์ ํ ๋นํฉ๋๋ค.
Best Fit
- ํ ๋น ๊ฐ๋ฅํ HOLE ์ค ๊ตฌ๋ฉ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ์์ HOLE์ ํ ๋นํฉ๋๋ค.
- Internal Fragment๊ฐ ๊ฐ์ฅ ์ ์ HOLE์ ํ ๋นํ๊ฒ ๋ฉ๋๋ค.
Worst Fit
- ํ ๋น ๊ฐ๋ฅํ HOLE ์ค ๊ตฌ๋ฉ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ํฐ HOLe์ ํ ๋นํฉ๋๋ค.
- ๊ตฌ๋ฉ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ํฌ๋ค๋ฉด ํ ๋นํด์ฃผ๊ณ ๋ ๋ค์ ๋จ๊ฒ ๋๋ HOLE์ ๋ค์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ธฐ๋๋ฅผ ๊ฐ๊ณ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Fragment - ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฌธ์ ์
Fragment
- ํ๋ก์ธ์ค๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ ์ ๊ฑฐ๋๋ ์ผ์ด ๋ฐ๋ณต๋๋ฉด ํ๋ก์ธ์ค๋ค์ด ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ํ ์ฌ์ด์ ์ฌ์ฉํ์ง ๋ชปํ ๋งํผ์ ์์ ๊ณต๊ฐ๋ค์ด ๋์ด๋๊ฒ ๋๋ ํ์
External Fragment
- ์ธ๋ถ ๋จํธํ
- ์ด ๊ณต๊ฐ์ ์ฌ์ ๋กญ์ง๋ง, HOLE๋ค์ด ๋จ์ด์ ธ ์์ด ํ ๋น์ด ๋ถ๊ฐ๋ฅํ ๋
Internal Fragment
- ๋ด๋ถ ๋จํธํ
- ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ณด๋ค ๋ ๋ง์ ๊ณต๊ฐ์ด ํ ๋น๋์ด ์ฌ์ฉํ์ง ์๋ ๊ณต๊ฐ์ ์๋ฏธํ๋ค
Solution
- ๊ณ ์ ๋ถํ ๋ฐฉ์์ External, Internal Fragment ๋ชจ๋ ๋ฐ์ ๊ฐ๋ฅํ๋ค.
- ๊ฐ๋ณ ๋ถํ ๋ฐฉ์์ Process์ ํฌ๊ธฐ๋งํผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ Internal์ ๋ฐ์ํ์ง ์๋๋ค.
๐ฅ ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ Compact(์์ถ)์ด ์๋ค.
ํํ ์ฌ์ฉํ๋ ๋์คํฌ ์กฐ๊ฐ ๋ชจ์ ์ ๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๐ฅ ๋ค์๋ฒ์ ๊ณ์
โจ ์๋ชป๋ ๋ถ๋ถ์ ๋ง์ ์กฐ์ธ ๋ฐ ์ง์ ๋ถํ๋๋ฆฝ๋๋ค. - JunHyxxn