Memory
์ด์์ฒด์ (OS) ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์์คํ ์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ํต์ฌ ์์์.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ํด์ฒดํ๋ฉฐ, ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋๋ก ํจ.
1. ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ(Memory Hierarchy)
๋ฉ๋ชจ๋ฆฌ๋ ์๋์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑ๋จ. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง.
๋ ์ง์คํฐ(Register) : CPU ์ RAM ์ฌ์ด์ ์์นํ๋ฉฐ, ๊ฐ์ฅ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ์ง.(๋๋ ธ์ด ๋จ์)
์บ์(Cache Memory) : CPU์ RAM ์ฌ์ด์ ์์นํ๋ฉฐ, L1, L2, L3 ์บ์๋ก ๊ตฌ๋ถ๋จ.
์ฃผ ๋ฉ๋ชจ๋ฆฌ(Main Memory, RAM) : ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์ง์ ์ฌ์ฉํ๋ ๊ณต๊ฐ.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Virtual Memory) : ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋ ๋์คํฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉ.
๋ณด์กฐ ์ ์ฅ์ฅ์น(Storage, HDD/SDD) : ์ฅ๊ธฐ ์ ์ฅ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ, ์ ๊ทผ ์๋๊ฐ ๊ฐ์ฅ ๋๋ฆผ.
2. ์ฃผ์ ๊ณต๊ฐ๊ณผ ์ฃผ์ ๋ณํ(Addressing & Translation)
ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์ฃผ์๋ ๋ ผ๋ฆฌ ์ฃผ์(Logical Address) ๋๋ ๊ฐ์ ์ฃผ์(Virtual Address) ์ด๋ฉฐ, ์ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์์น์ธ ๋ฌผ๋ฆฌ ์ฃผ์(Physical Address) ๋ก ๋ณํ๋จ.
์ด๋ฅผ ๋ด๋นํ๋ ์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋(MMU, Memory Management Unit) ์.
์ฃผ์ ๋ฐ์ธ๋ฉ(Address Binding)
์ฃผ์ ๋ฐ์ธ๋ฉ์ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํ๋ ๋ฐฉ์์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ด ๋๋จ.
์ปดํ์ผ ํ์ ๋ฐ์ธ๋ฉ(Compile Time Binding)
ํ๋ก๊ทธ๋จ์ด ์ปดํ์ผ๋ ๋ ์ฃผ์๊ฐ ๊ฒฐ์ ๋จ.
์คํ ์ค์ ์์น ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํจ.
๋ก๋ ํ์ ๋ฐ์ธ๋ฉ(Load Time Binding)
ํ๋ก๊ทธ๋จ์ด ๋ก๋๋ ๋ ์ค์ ์ฃผ์๊ฐ ๊ฒฐ์ ๋จ.
์คํ ์ ์ด๋ผ๋ฉด ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
์คํ ์๊ฐ ๋ฐ์ธ๋ฉ(Execution Time Binding)
ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์๋ ์ฃผ์๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์์.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉ๋จ.
์ฃผ์ ๋ณํ ๋ฐฉ์
๋ฒ ์ด์ค(Base) ๋ ์ง์คํฐ + ํ๊ณ(Limit) ๋ ์ง์คํฐ ๋ฐฉ์ : ํ๋ก์ธ์ค์ ์์ ์ฃผ์์ ํฌ๊ธฐ๋ฅผ ๊ด๋ฆฌ
ํ์ด์ง ํ ์ด๋ธ(Page Table) : ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํ
์ธ๊ทธ๋จผํธ ํ ์ด๋ธ(Segment Table) : ์ธ๊ทธ๋จผํธ ๋จ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ
3. ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(Contiguos Memory Allocation)
ํ๋ก์ธ์ค์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ํ ๋นํ๋ ๊ธฐ๋ฒ์.
๊ณ ์ ๋ถํ (Fixed Partitioning)
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋ถํ ํ์ฌ ๊ด๋ฆฌ
๋ด๋ถ ๋จํธํ(Internal Fragmentation) ๋ฐ์ ๊ฐ๋ฅ
๊ฐ๋ณ ๋ถํ (Variable Partitioning)
ํ๋ก์ธ์ค ํฌ๊ธฐ์ ๋ง๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋น.
์ธ๋ถ ๋จ๋ณํ(External Fragmentation) ๋ฐ์ ๊ฐ๋ฅ
๋จํธํ(Fragmentation)
๋ด๋ถ ๋จํธํ(Internal Fragmentation) : ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ๊ณต๊ฐ๋ณด๋ค ์์ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋จ.
์ธ๋ถ ๋จํธํ(External Fragmentation) : ๊ฐ๋ณ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํ ๋น ๊ณต๊ฐ์ด ์กฐ๊ฐ๋์ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ณต๊ฐ์ด ๋ฐ์
ํด๊ฒฐ๋ฐฉ๋ฒ
์์ถ : ๋ฉ๋ชจ๋ฆฌ์ ๋น ๊ณต๊ฐ์ ํ ๊ณณ์ผ๋ก ๋ชจ์ ํฐ ๊ณต๊ฐ์ ํ๋ณด
ํ์ด์ง ๋๋ ์ธ๊ทธ๋ฉํ ์ด์ (Segmentation) ์ฌ์ฉ.
4. ํ์ด์ง ๊ณผ ์ธ๊ทธ๋ฉํ
์ด์
์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋จ์ (์ธ๋ถ ๋จํธํ)์ ํด๊ฒฐํ๊ธฐ ์ํด ๋น์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋จ.
ํ์ด์ง(Paging)
๋ฉ๋ชจ๋ฆฌ ๊ณ ์ ํฌ๊ธฐ(ํ์ด์ง ๋จ์)๋ก ๋๋์ด ๊ด๋ฆฌ
ํ์ด์ง ํ ์ด๋ธ(Page Table) ์ ์ฌ์ฉํ์ฌ ๋ ผ๋ฆฌ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํ.
์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง, ๋ด๋ถ ๋จํธํ ๊ฐ๋ฅ
ํ์ด์ง ํ ์ด๋ธ(Page Table) ๊ตฌ์กฐ
๊ธฐ๋ณธ ํ์ด์ง ํ ์ด๋ธ : ํ๋ก์ธ์ค๋ง๋ค ๋ณ๋์ ํ ์ด๋ธ์ ์ ์ง
๋ค๋จ๊ณ ํ์ด์ง ํ ์ด๋ธ(Multi-level Page Table) : ํ์ด์ง ํ ์ด๋ธ์ด ๋๋ฌด ํด ๊ฒฝ์ฐ ๊ณ์ธต์ ์ผ๋ก ์ ์ฅ
TLB(Translation Lookaside Buffer) : ํ์ด์ง ํ ์ด๋ธ ์กฐํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํ ์บ์
์ธ๊ทธ๋ฉํ
์ด์
(Segmentation)
ํ๋ก์ธ์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ธ ๋จ์(์ฝ๋, ๋ฐ์ดํฐ, ์คํ ๋ฑ)๋ก ๋๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ
์ธ๊ทธ๋จผํธ ํ ์ด๋ธ(Segment Table) ์ ์ฌ์ฉํ์ฌ ๋ณํ
์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ ์ ์์.
5. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Virtual Memory)
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ RAM ๋ณด๋ค ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณตํ๋ ๊ธฐ์ ์. ํ๋ก์ธ์ค๋ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋ก๋ํ์ง ์๊ณ ํ์ํ ๋ถ๋ถ๋ง ์คํํจ.
ํ์ด์ง ๊ต์ฒด(Page Replacement) ์๊ณ ๋ฆฌ์ฆ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ด์ง๊ฐ ๊ฐ๋ ์ฐจ๋ฉด, ์ค๋๋ ํ์ด์ง๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ก๋ํด์ผ ํจ.
FIFO(First-In-First-Out) : ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
LRU(Least Recently Used) : ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
Optimal(OPT) : ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
LFU(Least Frequently Used) : ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
6. ์ค์ํ(Swapping)
์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ณ ํ์ํ ๋ ๋ค์ ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฒ
๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ ์ฌ์ฉ๋๋ฉฐ, ์ปจํ ์คํธ ์ค์์นญ(Context Switching) ๋น์ฉ์ด ๋ฐ์
7. ์บ์ ๋ฉ๋ชจ๋ฆฌ(Cache Memory)
CPU ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ณ ์ ๋ฉ๋ชจ๋ฆฌ
์บ์ ๋งคํ ๋ฐฉ์
์ง์ ๋งคํ(Direct Mapping) : ๋ฉ๋ชจ๋ฆฌ์ ํน์ ๋ธ๋ก์ ํน์ ์บ์ ๋ผ์ธ์ ๋งคํ
์ฐ๊ด ๋งคํ(Associative Mapping) : ๋ชจ๋ ์บ์ ๋ผ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๊ฐ๋ฅ
์ธํธ ์ฐ๊ด ๋งคํ(Set-Associative Mapping) : ์ง์ ๋งคํ๊ณผ ์ฐ๊ด ๋งคํ์ ์ ์ถฉ์
8. ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ(Memory Protection)
์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ ์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ ๊ทผํ ์ ์๋๋ก ๋ณดํธํจ.
๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๊ธฐ๋ฒ
๋ฒ ์ด์ค(Base) ์ ๋ฆฌ๋ฏธํธ(Limit) ๋ ์ง์คํฐ ์ฌ์ฉ
ํ์ด์ง ๋ณดํธ ๋นํธ(Protcetion Bit) ํ์ฉ.
MMU์ ์ปค๋ ๋ชจ๋(Kernel Mode) ์ง์
9. NUMA(Non-Uniform Memory Access)
๋ฉํฐ์ฝ์ด ๋ฐ ๋ฉํฐ ํ๋ก์ธ์ ์์คํ ์์ ๊ฐ CPU๊ฐ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋น๊ท ์ผํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋๋ฅผ ๊ฐ์ง.
NUMA ์์คํ ์์๋ ํ๋ก์ธ์ค ๊ฐ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉ ํ์ฌ ์ฑ๋ฅ์ ์ต์ ํ ํจ.
Last updated
Was this helpful?