OS) Memory Management
๐ ๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฌผ๋ฆฌ์ ์ฃผ์
-
๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์นํ๊ณ ์๋ ๊ณณ์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ ๋ ผ๋ฆฌ์ ์ฃผ์์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋๋๋ค.
Logical address (= virtual address)
- ํ๋ก์ธ์ค๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ ์ฃผ์ ๊ณต๊ฐ
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค 0๋ฒ์ง๋ถํฐ ์์
CPU
๊ฐ ๋ณด๋ ์ฃผ์๋logical address
์- ์๋๋ฉด ์ฝ๋์์ ์ฃผ์๊ฐ
logical address
์ธ๋ฐ ์ด๊ฒ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ฐ๋๋ค ํด์ ์ฝ๋์์ ์ฃผ์๋ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ฐ๋๋ ๊ฒ์ ์๋๋ค. ๋ง์ฝ ๋ฐ๋๋ค๋ฉด ์ปดํ์ผ์ ์๋ก ํด์ผ ํ๋๋ฐ ์ด๋ฌ๋ฉด ์ด์ํ๋ค. ๊ทธ๋์CPU
๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ฐธ๊ณ ํ๊ฒ ๋๋ค.
Physical address
- ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ก ์ฌ๋ผ๊ฐ๋ ์์น
CPU
๊ฐinstruction
์ ์ํํ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ํ์๊ฐ ์์ผ๋ฉด ๊ทธ ๋ฐ์ดํฐ๊ฐ ์์นํ๊ณ ์๋ ์ฃผ์๋ฅผ ์์์ผ ํ๋ค.- ์ด๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ํญ์ ๋ช ์๋์ด ์์ด์ ๋ฐ๋ก ๊ทธ ์์น๋ก ๊ฐ์ ์ฝ์ด์ค๋ฉด ์๋ก ํธํ๊ฒ ์ง๋ง ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ปดํจํฐ์ ํ๊ฒฝ์ ๋ฐ๋ผ ํญ์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ณด์ฅ์ด ์๋ค.
- ๊ทธ๋์ ์ฝ๋์๋ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ฌ์ฉํด ๊ฐ ํ๋ก์ธ์ค๋ณ๋ก ์ ์ฉ ์ฃผ์๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ํ๊ณ ๊ทธ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ก ์ฌ๋ ค์ ธ ์๋ ์์น๋ฅผ ์ฐธ๊ณ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
CPU
๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ํ์๊ฐ ์์ผ๋ฉด ๋จผ์ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ณํํ ๋ค ํด๋น ์์น์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
์ฃผ์ ๋ฐ์ธ๋ฉ(Address Binding)
- ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ณํํ๋ ๊ฒ
- ํ์ง๋ง ์ฃผ์๋ณํ์
CPU
๊ฐ ํ๋ ๊ฒ์ด ์๋ ํ๋์จ์ด์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. - ์ฃผ์๋ณํ์ด ํ์ํ ๋๋ง๋ค
CPU
๊ฐ ํ์ํ๋ฉด ๊ทธ ๋๋ง๋คinterrupt
๊ฐ ์ผ์ด๋๊ฒ ๋ ๊ฒ์ด๊ณ ๊ทธ๊ฑด ๊ต์ฅํ ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ค.
์ฃผ์ ๋ฐ์ธ๋ฉ ์์ ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
Compile time binding
- ์ปดํ์ผ๋ ๋ ๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ค.
- ์์์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฌ์ปดํ์ผ
- ์ปดํ์ผ๋ฌ๋ ์ ๋ ์ฝ๋(absolute code) ์์ฑ
- ์๋ ์ ๋ง์ด ์ฐ๋ค๊ฐ ์ง๊ธ์ ์ ์ ์ด๋ค.
Load time binding
Loader
์ ์ฑ ์ํ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ถ์ฌ- ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ ๋ฌผ๋ฆฌ์ ์ฃผ์๊ฐ ๊ฒฐ์ ๋๋ค.
- ์ปดํ์ผ๋ฌ๊ฐ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ์ฝ๋(relocatable code)๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ๊ฐ๋ฅ
Execution time binding (= Run time binding)
- ์ํ์ด ์์๋ ์ดํ์๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ์์น๋ฅผ ์ฎ๊ธธ ์ ์๋ค.
CPU
๊ฐ ์ฃผ์๋ฅผ ์ฐธ์กฐํ ๋๋ง๋คbinding
์ ๊ฒ (address mapping table)- ํ๋์จ์ด์์ ์ง์ํด์ผ ๊ฐ๋ฅํ๋ค.
- ์ต๊ทผ ์์คํ ์์ ์ฌ์ฉํ๋ ๋ฐฉ์
Memory-Management Unit (MMU)
- ์ฃผ์ ๋ณํ์ ์ํ ํ๋์จ์ด
- ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋งคํํด ์ค๋ค.
- ์ค์ ๋ฌผ๋ฆฌ์ ์ฃผ์์ ์์์ ์์ ๋
ผ๋ฆฌ์ ์ฃผ์์
offset
๋งํผ์ ๋ํด์ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์๋ ค์ค๋ค. Limit register
: ๋ง์ฝ ํ๋ก์ธ์ค๊ฐ ์๊ธฐ ๋ฒ์๋ฅผ ๋์ด๊ฐ๋ ์์น์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผ์ ์๊ตฌํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ๋ ์ ์๋ค. ๊ทธ๋์ ์ฃผ์๋ฅผ ๋ณํํ ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง ์ ์๋ ์ฃผ์์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋จผ์ ์ ํํด๋๊ณ ๊ทธ ๋ฒ์ ์์์๋ง ๋ณํํ ์ ์๋๋ก ํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ก๋ ๊ธฐ๋ฒ๋ค
Dynamic Loading
- ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฏธ๋ฆฌ ๋ค ์ฌ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ํด๋น ๋ฃจํด์ด ๋ถ๋ ค์ง ๋ ๋ฉ๋ชจ๋ฆฌ์
load
ํ๋ ๊ฒ memory utilization
์ด ํฅ์๋จ- ๊ฐ๋์ฉ ์ฌ์ฉ๋๋ ์ฝ๋๊ฐ ๋ง์ ๋ ์ ์ฉํ๋ค.
- ์์ฃผ ์ฌ์ฉ๋๋ ๋ถ๋ถ์ด ํ์ ์ ์ธ๋ฐ ์ ์ฒด๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋นํจ์จ์ ์ด๋ค.
- ์ : ์ค๋ฅ ์ฒ๋ฆฌ ๋ฃจํด
- ์ด์์ฒด์ ์ ํน๋ณํ ์ง์ ์์ด ํ๋ก๊ทธ๋จ ์์ฒด์์ ๊ตฌํ ๊ฐ๋ฅ (
OS
๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ง์ ๊ฐ๋ฅ)
Dynamic Linking
Linking
์ ์คํ์๊ฐ(execution time)`๊น์ง ๋ฏธ๋ฃจ๋ ๊ธฐ๋ฒStatic linking
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํ ํ์ผ ์ฝ๋์ ํฌํจ๋จ
- ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง
- ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์๊ธด๋ค.(์:
printf
ํจ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋)
Overlays
- ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์ค์ ๋ถ๋ถ ์ค ์ค์ ํ์ํ ์ ๋ณด๋ง์ ์ฌ๋ฆผ
- ์ด๋ ๊ฒ ๋ณด๋ฉด
Dynamic loading
๊ณผ ๋น์ทํด ๋ณด์ด์ง๋ง ํ๋ก๊ทธ๋๋จธ๊ฐ ์์์ ์ผ๋ก ๊ตฌํํด์ผ ํ๋ค๋ ์ ์์ ๋ค๋ฅด๋ค. ์์ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ฐฝ๊ธฐ ์์คํ ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๋งค์ฐ ๋ณต์กํ๋ค. - ํ๋ก์ธ์ค์ ํฌ๊ธฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํด ๋ ์ ์ฉ
- ์ด์์ฒด์ ์ ์ง์ ์์ด ์ฌ์ฉ์์ ์ํด ๊ตฌํ
Dynamic linking
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์คํ์ ์ฐ๊ฒฐ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํ
stub
์ด๋ผ๋ ์์ ์ฝ๋๋ฅผ ๋๋ค. - ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉด ๊ทธ ๋ฃจํด์ ์ฃผ์๋ก ๊ฐ๊ณ ์์ผ๋ฉด ๋์คํฌ์์ ์ฝ์ด์ด
- ์ด์์ฒด์ ์ ๋์ ํ์
Swapping
- ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์
backing store(ํ๋๋์คํฌ)
๋ก ์ซ์๋ด๋ ๊ฒ Backing store
: ๋ง์ ์ฌ์ฉ์์ ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ฅผ ๋ด์ ๋งํผ ์ถฉ๋ถํ ๋น ๋ฅด๊ณ ํฐ ์ ์ฅ ๊ณต๊ฐ- ์ผ๋ฐ์ ์ผ๋ก ์ค๊ธฐ ์ค์ผ์ค๋ฌ(swapper)์ ์ํด
swap in/out
๋ ํ๋ก์ธ์ค๊ฐ ์ ์ ๋๋ค. - ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ๋ฐ๋ผ
swap
์ด ์ด๋ฃจ์ด์ง๋ค. Compile time
ํน์load time binding
์์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋กswap in
ํด์ผ ํจExecution time binding
์์๋ ์ถํ ๋น ๋ฉ๋ชจ๋ฆฌ ์์ญ ์๋ฌด ๊ณณ์๋ ์ฌ๋ฆด ์ ์๋ค.swap time
์ ๋๋ถ๋ถtransfer time
(swap๋๋ ์์ ๋น๋กํ๋ ์๊ฐ)์ด๋ค.
- ํ๋ก์ธ์ค๋ฅผ ์ผ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์
Allocation of Physical Memory
-
๋ฉ๋ชจ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์์ญ์ผ๋ก ๋๋์ด ์ฌ์ฉ๋๋ค.
OS
์์ฃผ ์์ญ :interrupt vector
์ ํจ๊ป ๋ฎ์ ์ฃผ์ ์์ญ ์ฌ์ฉ- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ : ๋์ ์ฃผ์ ์์ญ ์ฌ์ฉ
์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ํ ๋น ๋ฐฉ๋ฒ
Contiguous allocation
- ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ ์ฌ๋๋๋ก ํ๋ ๊ฒ
Noncontiguous allocation
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ์์ญ์ ๋ถ์ฐ๋์ด ์ฌ๋ผ๊ฐ ์ ์๋ค.
- ํ๋ ์ด์์ฒด์ ์์ ์ฌ์ฉ
Contiguous Allocation
- ๊ณ ์ ๋ถํ (Fixed partition) ๋ฐฉ์
- ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ช ๊ฐ์ ์๊ตฌ์ ๋ถํ ๋ก ๋๋
- ๋ถํ ์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ๋์ผํ ๋ฐฉ์๊ณผ ์๋ก ๋ค๋ฅธ ๋ฐฉ์ ์กด์ฌ
- ๋ถํ ๋น ํ๋์ ํ๋ก๊ทธ๋จ ์ ์ฌ
- ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ ํ๋ก๊ทธ๋จ์ ์๊ฐ ๊ณ ์ ๋จ
- ์ต๋ ์ํ ๊ฐ๋ฅ ํ๋ก๊ทธ๋จ ํฌ๊ธฐ ์ ํ
internal fragmentation(๋ด๋ถ ์กฐ๊ฐ)
,external fragmentation(์ธ๋ถ ์กฐ๊ฐ)
๋ฐ์
- ๊ฐ๋ณ๋ถํ (Variable partition) ๋ฐฉ์
- ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํด์ ํ ๋น
- ๋ถํ ์ ํฌ๊ธฐ, ๊ฐ์๊ฐ ๋์ ์ผ๋ก ๋ณํจ
- ๊ธฐ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฒ ํ์
external fragmentation(์ธ๋ถ ์กฐ๊ฐ)
๋ฐ์
External fragmentation(์ธ๋ถ ์กฐ๊ฐ)
- ํ๋ก๊ทธ๋จ ํฌ๊ธฐ๋ณด๋ค ๋ถํ ํฌ๊ธฐ๊ฐ ์์ ๋ ์๊น
- ์๋ฌด ํ๋ก๊ทธ๋จ์๋ ๋ฐฐ์ ๋์ง ์์ ๋น ๊ณต๊ฐ์ด์ง๋ง ํ๋ก๊ทธ๋จ์ด ์ฌ๋ผ๊ฐ ์ ์๋ ์์ ๊ณต๊ฐ
Internal fragmentation(๋ด๋ถ ์กฐ๊ฐ)
- ํ๋ก๊ทธ๋จ ํฌ๊ธฐ๋ณด๋ค ๋ถํ ํฌ๊ธฐ๊ฐ ๊ธ ๋ ์๊น
- ํ๋์ ๋ถํ ๋ด๋ถ์์ ๋ฐ์ํ๋ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐ
- ํน์ ํ๋ก๊ทธ๋จ์ ๋ฐฐ์ ๋์์ง๋ง ์ฌ์ฉ๋์ง ์๋ ๊ณต๊ฐ
Hole
- ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- ๋ค์ํ ํฌ๊ธฐ์
hole
๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ๋ฌ ๊ณณ์ ํฉ์ด์ ธ ์๋ค. - ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด ์์ฉ๊ฐ๋ฅํ
hole
์ ํ ๋น - ์ด์์ฒด์ ๋ ๋ค์์ ์ ๋ณด ์ ์ง - ํ ๋น๊ณต๊ฐ, ๊ฐ์ฉ๊ณต๊ฐ
Dynamic Storage-Allocation Problem
-
๊ฐ๋ณ ๋ถํ ๋ฐฉ์์์ size = n ์ธ ์์ฒญ์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ ์ ํ
hole
์ ์ฐพ๋ ๋ฌธ์ First-fit
- ์ฌ์ด์ฆ๊ฐ n ์ด์์ธ ๊ฒ ์ค ์ต์ด๋ก ์ฐพ์์ง๋
hole
์ ํ ๋น
- ์ฌ์ด์ฆ๊ฐ n ์ด์์ธ ๊ฒ ์ค ์ต์ด๋ก ์ฐพ์์ง๋
Best-fit
- ์ฌ์ด์ฆ๊ฐ n ์ด์์ธ ๊ฐ์ฅ ์์
hole
์ ์ฐพ์์ ํ ๋น hole
๋ค์ ๋ฆฌ์คํธ๊ฐ ํฌ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋hole
๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํจ- ๋ง์ ์์ ์์ฃผ ์์
hole
๋ค์ด ์์ฑ๋จ
- ์ฌ์ด์ฆ๊ฐ n ์ด์์ธ ๊ฐ์ฅ ์์
Wost-fit
- ๊ฐ์ฅ ํฐ
hole
์ ํ ๋น - ๋ชจ๋ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํจ
- ์๋์ ์ผ๋ก ์์ฃผ ํฐ
hole
๋ค์ด ์์ฑ๋จ
- ๊ฐ์ฅ ํฐ
First-fit
๊ณผBest-fit
์ดWost-fit
๋ณด๋ค ์๋์ ๊ณต๊ฐ ์ด์ฉ๋ฅ ์ธก๋ฉด์์ ํจ๊ณผ์
-
Compaction
external fragmentation(์ธ๋ถ ์กฐ๊ฐ)
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ- ์ฌ์ฉ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๊ตฐ๋ฐ๋ก ๋ชฐ๊ณ
hole
๋ค์ ๋ค๋ฅธ ํ ๊ณณ์ผ๋ก ๋ชฐ์ ํฐblock
์ ๋ง๋๋ ๊ฒ - ์ด๋ ๊ฒ ๋ณด๋ฉด
Windows
์ ๋์คํฌ ์กฐ๊ฐ ๋ชจ์๊ณผ ๋น์ทํด ๋ณด์ด์ง๋ง ๋์คํฌ ๋ชจ์์ ๋์คํฌ์ ์๋ ์กฐ๊ฐ๋ค์ ๋ชจ์ผ๋ ๊ฒ์ธ๋ฐ ๋ฐํดCompaction
์ ์คํ ์ค์ธ ๋ฉ๋ชจ๋ฆฌ์ ์กฐ๊ฐ๋ค์ ๋ชจ์ผ๋ ๊ฒ์ด๋ผ๋ ์ ์์ ๋ค๋ฅด๋ค. - ๋น์ฉ์ด ๋งค์ฐ ๋ง์ด ๋ ๋ค.
- ์ต์ํ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ผ๋ก
Compaction
ํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ๋งค์ฐ ๋ณต์กํ๋ค. - ํ๋ก์ธ์ค์ ์ฃผ์๊ฐ ์คํ ์๊ฐ์ ๋์ ์ผ๋ก ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ์ํ๋ ์ ์๋ค. ๋ฐํ์ ๋ฐ์ธ๋ฉ์ด ์ง์๋ ๋์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
Paging
- ํ๋ก์ธ์ค์
virtual memory
๋ฅผ ๋์ผํ ์ฌ์ด์ฆ์page
๋ก ๋๋๋ค. virtual memory
์ ๋ด์ฉ์ดpage
๋จ์๋ก ๋น์ฐ์์ ์ผ๋ก ์ ์ฅ๋๋ค.- ์ผ๋ถ๋
backing storage
์, ์ผ๋ถ๋physical memory
์ ์ ์ฅ -
๊ฐ ํ์ด์ง๋ง๋ค ๋ ผ๋ฆฌ์ - ๋ฌผ๋ฆฌ์ ์ฃผ์ ๋งคํ ์ ๋ณด(ํ์ด์ง ํ ์ด๋ธ)๊ฐ ํ์ํ๋ค.
physical memory
๋ฅผ ๋์ผํ ํฌ๊ธฐ์frame
์ผ๋ก ๋๋logical memory
๋ฅผ ๋์ผ ํฌ๊ธฐ์page
๋ก ๋๋(frame
๊ณผ ๊ฐ์ ํฌ๊ธฐ)- ๋ชจ๋ ๊ฐ์ฉ
frame
๋ค์ ๊ด๋ฆฌ page table
์ ์ฌ์ฉํ์ฌ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ก ๋ฐ๊พผ๋ค.-
์ธ๋ถ์กฐ๊ฐ์ด ๋ฐ์ํ์ง ์์ง๋ง ํ์ด์งํ ํ๋ก์ธ์ค์ ๋ง์ง๋ง ์กฐ๊ฐ์ ํ์ด์ง ํฌ๊ธฐ๋ณด๋ค ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์กฐ๊ฐ์ ๋ฐ์ํ ์ ์๋ค.
- ์๋ ํฅ์์ ์ํด
TLB(Translation Look-aside Buffer)
๋ผ๋ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ๋ค.- ์ผ์ข ์ ์บ์๋ก ๋ ผ๋ฆฌ์ - ๋ฌผ๋ฆฌ์ ์ฃผ์ ์์ ๊ฐ์ง๊ณ ์๋ค.
- ํ์ด์ง ๊ฐฏ์๋งํผ ํ์ด์ง ํ ์ด๋ธ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ด ๋ง์ด ํ์ํ๋ค.
Two-Level Page Table
- ํ์ด์ง ํ ์ด๋ธ ๊ณต๊ฐ์ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค. (์๋ ํฅ์์ ์ธ ์ธก๋ฉด์์๋ ๋ณ ํจ๊ณผ ์์)
- ํ์ด์ง ํ ์ด๋ธ ์์ฒด๋ฅผ ํ์ด์ง๋ก ๊ตฌ์ฑํด์ ํ์ด์ง ์์ ํ์ด์ง๊ฐ ๋ ์๋ ํํ์ด๋ค.
- ์ฌ์ฉ๋์ง ์๋ ํ์ด์ง ์์ญ์ ์์ชฝ ํ์ด์ง ํ
์ด๋ธ์ ์ ๋ง๋ค๊ณ ํฌ์ธํฐ๋ฅผ
NULL
๋ก ๋๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์๋ค. - ์ฃผ์ ๊ณต๊ฐ์ด ๋ ์ปค์ง๋ฉด ๋ค๋จ๊ณ ํ์ด์ง ํ ์ด๋ธ์ ์ฌ์ฉํ ์๋ ์๋ค.
Memory Protection
-
ํ์ด์ง ํ ์ด๋ธ ๊ฐ
entry
๋ง๋คbit
๋ฅผ ๋๋ค. Protection bit
- ํ์ด์ง์ ๋ํ ์ ๊ทผ ๊ถํ ์ค์ (read/write/read-only ๋ฑ ์ฐ์ฐ์ ๋ํ ์ ๊ทผ ๊ถํ)
Valid-invalid bit
valid
: ํด๋น ์ฃผ์์frame
์ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ ํจํ ๋ด์ฉ์ด ์์์ ๋ปํจ(์ ๊ทผ ํ์ฉ)invalid
: ํด๋น ์ฃผ์์frame
์ ์ ํจํ ๋ด์ฉ์ด ์์ (์ ๊ทผ ๋ถํ)- ํ๋ก์ธ์ค๊ฐ ๊ทธ ์ฃผ์ ๋ถ๋ถ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
- ํด๋น ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ ์์ง ์๊ณ
swap area
์ ์๋ ๊ฒฝ์ฐ
Inverted Page Table
- ํ์ด์ง ๊ฐฏ์๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ํ์ด์ง ํ ์ด๋ธ์ด ์ปค์ง๋ ๋ฌธ์ ๋ฅผ ์ค์ฌ๋ณด๋ ค๊ณ ์ฌ์ฉํ๋ ํ ์ด๋ธ
- ํ๋ก์ธ์ค๋ณ๋ก ํ์ด์ง ํ
์ด๋ธ์ ๋๋ ๊ฒ์ด ์๋ ํ์ด์ง ํ๋ ์ ํ๋๋น ํ์ด์ง ํ
์ด๋ธ์ ํ๋์
entry
๋ฅผ ๋ ๊ฒ - ๊ฐ
page table entry
๋ ๊ฐ๊ฐ์ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์page frame
์ด ๋ด๊ณ ์๋ ๋ด์ฉ ํ์ - ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ณด๊ณ ๋ ผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ ์ ์๋ ํ ์ด๋ธ์ด๋ผ ํ ์ ์๋ค.
Shared Page
Shared code
- ๊ณต์ ๊ฐ ๊ฐ๋ฅํ ์ฝ๋๋
read-only
๋ก ํframe
์๋ง ์ฌ๋ฆฌ๋ ๊ฒ - ๋ชจ๋ ํ๋ก์ธ์ค์
logical address space
์์ ๋์ผํ ์์น์ ์์ด์ผ ํจ
- ๊ณต์ ๊ฐ ๊ฐ๋ฅํ ์ฝ๋๋
Private code and data
- ๊ฐ ํ๋ก์ธ์ค๋ค์ ๋ ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
private data
๋logical address space
์๋ฌด ๊ณณ์ ์๋ ๋ฌด๋ฐฉํจ
Segmentation
- ํ๋ก๊ทธ๋จ์ ์๋ฏธ ๋จ์์ธ ์ฌ๋ฌ ๊ฐ์
segment
๋ก ๊ตฌ์ฑ - ์๊ฒ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ํจ์ ํ๋ํ๋์์ ํฌ๊ฒ๋ ํ๋ก๊ทธ๋จ ์ ์ฒด๊น์ง๋ ๊ฐ๋ฅ
- ์ผ๋ฐ์ ์ผ๋ก๋
code
,data
,stack
๋ถ๋ถ์ด ํ๋์ฉ์ ์ธ๊ทธ๋จผํธ๋ก ์ ์๋จmain()
,function
,global variables
,stack
,symbol table
,arrays
- ๋
ผ๋ฆฌ์ ์ฃผ์๋
segment-number, offest
์์ผ๋ก ๊ตฌ์ฑ๋๋ค. - ์ธ๊ทธ๋จผํธ๋ณ ์ฃผ์ ๋ณํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋
segment table
์ด ํ์ํ๋ค. segment-number
๋ก๋ถํฐoffest
๋งํผ ๋จ์ด์ง ์์น์ ์ ๊ทผํ๋ ๋ฐฉ์- ๊ฐ ์ธ๊ทธ๋จผํธ๋ณ๋ก
protection bit
์ค์ ํ๊ธฐ๊ฐ ์ฉ์ดํ๋ค. - ์๋ฏธ ๋จ์์ด๊ธฐ ๋๋ฌธ์ ๊ณต์ ์ ๋ณด์์ ์์ด ํ์ด์ง ๊ธฐ๋ฒ๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์ด๋ค.(ํ์ด์ง์ ํ ํ์ด์ง ์์ ํ ์ข ๋ฅ๋ง ๋ค์ด์์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ข ๋ฅ๋ณ๋ก ๋ณด์ ์ค์ ์ ๋ค๋ฅด๊ฒ ํด ์ค์ผ ํ๋ค)
- ํ์ด์ง ๊ธฐ๋ฒ๋ณด๋ค๋ ํ ์ด๋ธ ํฌ๊ธฐ๊ฐ ์๋ค.
- ์ธ๋ถ์กฐ๊ฐ ๋ฐ์
- ํ ๋น์
first fit / best fit
๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ์ธ๊ทธ๋จผํธ์ ๊ธธ์ด๊ฐ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๋ถํ ์์์ ๋์ผํ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค.
Segmentation with Paging
- ์ธ๊ทธ๋จผํธ ํ๋๊ฐ ์ฌ๋ฌ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋๋ค. ๋์ ์์ ๊ฒ
- ํจ์ฌ ํจ์จ์ ์ด๋ผ ๋ง์ด ์ฐ๋ ๋ฐฉ์์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ ํ์ด์ง ๋จ์๋ก ์ฌ๋ผ๊ฐ๊ณ ๊ณต์ ๋ ์ธ๊ทธ๋จผํธ ๋จ์์์ ์ด๋ฃจ์ด์ง๋ค.