์ปดํจํฐ๋ ์ฌ๋ฌ ํ๋์จ์ด ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ํ๋ ฅํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
1. ์ปดํจํฐ์ ์ฃผ์ ๊ตฌ์ฑ ์์
์ปดํจํฐ๋ ํฌ๊ฒ CPU, ๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ์ฅ์น, I/O ์ฅ์น๋ก ๋๋์ด์ง๋๋ค.
1-1. CPU (Central Processing Unit, ์ค์์ฒ๋ฆฌ ์ฅ์น)
CPU๋ ์ปดํจํฐ์ ๋๋ ์ญํ ์ ํฉ๋๋ค.
- ์ฐ์ฐ์ฅ์น(ALU, Arithmetic Logic Unit) : ๋ง์
, ๋บ์
๊ฐ์ ์ฐ์ฐ์ ์ํ
- ์ ์ด์ฅ์น(CU, Control Unit) : ๋ช
๋ น์ ํด์ํ๊ณ ์คํ
- ๋ ์ง์คํฐ(Register) : ์ด๊ณ ์ ๋ฉ๋ชจ๋ฆฌ (CPU ๋ด๋ถ์์ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ)
- ํด๋ญ ์๋(Clock Speed) : CPU๊ฐ ์ด๋น ์ฒ๋ฆฌํ ์ ์๋ ์ฃผํ์ (GHz ๋จ์)
CPU ์๋ ์๋ฆฌ๋ ๋ช
๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ (Fetch), ํด์ํ๊ณ (Decode), ์คํ(Execute) ํฉ๋๋ค.
1-2. ๋ฉ๋ชจ๋ฆฌ (Memory)
- RAM (ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ) : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์์๋ก ์ ์ฅ
- ROM (๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ) : ๋ถํ
์ ํ์ํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ์ฅ
- ์บ์ ๋ฉ๋ชจ๋ฆฌ (Cache) : CPU์ RAM ์ฌ์ด์์ ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ณต
- L1 -> L2 -> L3 ์์ผ๋ก ๋น ๋ฅด๊ณ ์ฉ๋์ ์์
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ค๋ฉด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Swap) ์ฌ์ฉํ๊ฒ ๋๊ณ ์๋๊ฐ ๋๋ ค์ง๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ๋?
- ์ค์ RAM(์ฃผ๊ธฐ์ต์ฅ์น)๋ณด๋ค ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ด์์ฒด์ ๊ฐ ํ๋๋์คํฌ(๋๋ SSD)์ ์ผ๋ถ๋ฅผ RAM์ฒ๋ผ ํ์ฉํ๋ ๊ธฐ์
- CPU๊ฐ ํ์ํ ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ RAM์ผ๋ก ๊ฐ์ ธ์ด
- ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํํ ์ ์๋ค๋ ์ด์ ์ ๊ฐ์ง
- ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ(isolation)๋ฅผ ์ ๊ณตํจ
๊ฐ์ฅ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ๋ฐฉ์
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ด์ง(Paging) ๊ธฐ๋ฒ์ ์ฌ์ฉํด ๊ตฌํ๋จ
1. ํ์ด์ง(Paging)
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ์ ํฌ๊ธฐ์ ๋ธ๋ก(ํ์ด์ง, Page)์ผ๋ก ๋๋
- RAM์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋, ํ์ํ ํ์ด์ง๋ฅผ ๋์คํฌ์์ RAM์ผ๋ก ๋ก๋(ํ์ด์ง ๊ต์ฒด)ํจ
2. ํ์ด์ง ํ
์ด๋ธ (Page Table)
- ๊ฐ์ ์ฃผ์(Virtual Addtress) <-> ๋ฌผ๋ฆฌ ์ฃผ์(Physical Address) ๋ฅผ ๋งคํํ๋ ๊ตฌ์กฐ
- CPU๋ ์ง์ ๊ฐ์ ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , MMU(Memory Management Unit)๊ฐ ๋ณํ์ ์ํํจ
3. ํ์ด์ง ํดํธ (Page Fault)
- CPU๊ฐ ํ์ํ ๋ฐ์ดํฐ๊ฐ RAM์ ์์ ๋ ๋ฐ์ํ๋ ์์ธ(Exception)
- ์ด์์ฒด์ ๊ฐ ๋์คํฌ์์ ํด๋น ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ RAM์ ์ฌ๋ฆผ
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
RAM ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ ์ด๋ค ํ์ด์ง๋ฅผ ๋ด๋ณด๋ผ์ง ๊ฒฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํจ
๋ํ์ ์ธ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ
1. FIFO (First-In, First-Out)
- ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
- ๋จ์ : ๊ฐ์ฅ ์ค๋๋ ํ์ด์ง๊ฐ ๊ผญ ๋ ์ค์ํ ๊ฒ์ ์๋
2. LRU (Least Recently Used)
- ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
- ์๊ฐ ์ง์ญ์ฑ(Temporal Locality)์ ์ ํฉ
- ๊ตฌํ์ด ์ด๋ ต๊ณ ์ค๋ฒํค๋ ๋ฐ์ ๊ฐ๋ฅ
3. LFU(Least Frequently Used)
- ์ฌ์ฉ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
์์ฃผ ์ฌ์ฉ๋๋ ํ์ด์ง๋ฅผ ์ ์งํ๋ ค๋ ์ ๋ต
4. Optimal (OPT, Belady's Algorithm)
- ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ๊ฑฐ
- ํ์ค์ ์ผ๋ก ๋ฏธ๋๋ฅผ ์์ธกํ ์ ์์ด์ ์ด์์ ์ธ ์ด๋ก ๋ชจ๋ธ๋ก ์ฌ์ฉ๋จ
์ค์ (Swap)๊ณผ ์ค์ ๊ณต๊ฐ(Swap Space)
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ ๋, ์ด์์ฒด์ ๋ ๋์คํฌ์ ์ผ๋ถ๋ฅผ ์ค์ ๊ณต๊ฐ(Swap Space)์ผ๋ก ํ ๋นํจ
- RAM์ด ๋ถ์กฑํ๋ฉด ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๊ณต๊ฐ์ผ๋ก ์ฎ๊น -> ์ฑ๋ฅ ์ ํ ๋ฐ์ ๊ฐ๋ฅ!
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- RAM๋ณด๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์
- ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ํฌํธ ๊ฐ๋ฅ (๊ฐ๊ฐ ๋
๋ฆฝ๋ ์ฃผ์ ๊ณต๊ฐ ์ฌ์ฉ)
- ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํํ ์ ์์ (๋ฉํฐํ์คํน)
๋จ์
- ๋์คํฌ ์ ๊ทผ ์๋๊ฐ RAM๋ณด๋ค ํจ์ฌ ๋๋ฆผ -> ์๋ ์ ํ ๋ฐ์
- ๋๋ฌด ๋ง์ ์ค์ ์ฌ์ฉ ์ ์ค๋ ์ฑ (Thrashing) ๋ฌธ์ ๋ฐ์
์ค๋ ์ฑ (Thrashing)์ด๋?
- CPU๊ฐ ๊ณ์ํด์ ํ์ด์ง ํดํธ(Page Fault)๋ฅผ ์ฒ๋ฆฌํ๋๋ผ ์ค์ ์์
์ ๊ฑฐ์ ๋ชปํ๋ ์ํฉ
- ํด๊ฒฐ ๋ฐฉ๋ฒ : RAM ์ฉ๋์ ๋๋ฆฌ๊ฑฐ๋, ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ ๊ฐ์๋ฅผ ์ค์ด๊ธฐ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด์์ฒด์ (OS)๊ฐ ์๋์ผ๋ก ๊ด๋ฆฌํจ
๊ณ ์ฑ๋ฅ ๊ฒ์์์๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ฑฐ๋ ํํผํ๋ ์ ๋ต์ด ์ค์ํจ
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ํํ๋ ๊ฒ์ ๊ฐ๋ฐ ๊ธฐ๋ฒ
1. ๋ ๋ฒจ ์คํธ๋ฆฌ๋ฐ(Level Streaming)
- ์คํ์๋ ๊ฒ์์ฒ๋ผ ๋งต์ด ํฐ ๊ฒฝ์ฐ, ์ ์ฒด ๋งต์ ํ ๋ฒ์ ๋ก๋ฉํ์ง ์๊ณ ํ์ํ ๋ถ๋ถ๋ง ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฒ
- RAM๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ์ฌ ๋ก๋ฉ ์์ด seamlessํ๊ฒ ์งํ ๊ฐ๋ฅ
- ์ธ๋ฆฌ์ผ์์๋ World Partition์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ด์ ์ค์
- GTA V, The Witcher 3 ๊ฐ์ ์คํ์๋ ๊ฒ์์์ ํ์ฉ๋จ
2. ํ
์ค์ฒ ์คํธ๋ฆฌ๋ฐ(Texture Streaming)
- ๊ณ ํด์๋ ํ
์ค์ฒ๋ฅผ ํ ๋ฒ์ ๋ก๋ฉํ์ง ์๊ณ , ํ๋ ์ด์ด๊ฐ ๋ณด๋ ๋ถ๋ถ๋ง ๋ก๋ฉ
- VRAM(๊ทธ๋ํฝ์นด๋ ๋ฉ๋ชจ๋ฆฌ)๊ณผ RAM์ ์ ์ฝํ ์ ์์
- ์ธ๋ฆฌ์ผ ์์ง๊ณผ ์ ๋ํฐ ๋ชจ๋ ํ
์ค์ฒ ์คํธ๋ฆฌ๋ฐ ๊ฐ๋ฅ
- ์ฝ์ค๋ธ๋ํฐ ๊ฐ์ FPS ๊ฒ์์์ ๋ฉ๋ฆฌ ์๋ ์ค๋ธ์ ํธ๋ ๋ฎ์ ํด์๋๋ก ๋ก๋ฉ ํ ๊ฐ๊น์ด ์ค๋ฉด ๊ณ ํด์๋๋ก ๋ณ๊ฒฝ
3. LOD (Level of Detail)
- ๋ฉ๋ฆฌ ์๋ ์ค๋ธ์ ํธ๋ ์ ํด์๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ , ๊ฐ๊น์ด ์ค๋ฉด ๊ณ ํด์๋ ๋ชจ๋ธ๋ก ๋ณ๊ฒฝ
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ RAM์ ๋ถํ์ํ ์ฌ์ฉ์ ์ค์ด๊ณ ์ฑ๋ฅ ์ต์ ํ
- ์คํ์๋ ๊ฒ์์์ ๋ฉ๋ฆฌ ์๋ ๊ฑด๋ฌผ์ด๋ NPC๊ฐ ์ ํด์๋๋ก ํ์๋จ
- ์ค์นด์ด๋ฆผ, ๋ ๋ฐ๋ฆฌ2 ๊ฐ์ ๋๊ท๋ชจ ๊ฒ์์์ ์ฌ์ฉ๋จ
4. ๋ฐ์ดํฐ ์์ถ ๋ฐ ํ๊ธฐ (Memory Compression)
- ๋ฐ์ดํฐ๋ฅผ ์์ถํ ์ํ๋ก RAM์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ํ์ด์ ์ฌ์ฉ
- ์์ถ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์์
- PS5๋ Kraken ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋น ๋ฅธ ๋ก๋ฉ ์ง์
- ์ ๋ํฐ์์๋ Addressables ์์คํ
์ ํ์ฉํ์ฌ ํ์ํ ๋๋ง ๋ฐ์ดํฐ ๋ก๋ ๊ฐ๋ฅ
5. ๋น๋๊ธฐ ๋ก๋ฉ (Asynchronous Loading)
- ๊ฒ์์ด ์คํ๋๋ ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ถ๋ฌ์ RAM์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์์กดํ๋ ๋์ , ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ RAM์ ์ฌ๋ ค์ ๋ก๋ฉ ์ง์ฐ์ ์ค์
- ์ ๋ํฐ์ Resources.LoadAsync(), ์ธ๋ฆฌ์ผ ์์ง์ Async Loading System
1-3. ์ ์ฅ์ฅ์น (Storage)
- HDD (ํ๋๋์คํฌ ๋๋ผ์ด๋ธ) : ๋ฌผ๋ฆฌ์ ๋์คํฌ, ๋๋ฆฌ์ง๋ง ์ฉ๋ ํผ
- SSD (์๋ฆฌ๋ ์คํ
์ดํธ ๋๋ผ์ด๋ธ) : ๋ฐ๋์ฒด ๊ธฐ๋ฐ, ๋น ๋ฅด๊ณ ์์ ์
- NVMe SSD : PCle ์ธํฐํ์ด์ค๋ก ์ฐ๊ฒฐ๋์ด ๊ธฐ์กด SSD๋ณด๋ค ๋ ๋น ๋ฆ
SSD๊ฐ ๋น ๋ฅธ ์ด์ ๋ ๊ธฐ๊ณ์ ํ์ ์์ด ์ ์์ ์ผ๋ก ๋ฐ์ดํฐ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ
1-4. I/O ์ฅ์น (Input/Output Devices)
- ์
๋ ฅ์ฅ์น : ํค๋ณด๋, ๋ง์ฐ์ค, ํฐ์น์คํฌ๋ฆฐ
- ์ถ๋ ฅ์ฅ์น : ๋ชจ๋ํฐ, ํ๋ฆฐํฐ, ์คํผ์ปค
- ๋คํธ์ํฌ ์ฅ์น : LAN ์นด๋, Wi-Fi ๋ชจ๋
2. ์ปดํจํฐ์ ์๋ ์๋ฆฌ
1. ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ ์คํ
2. ํ๋ก๊ทธ๋จ์ด RAM์ ๋ก๋
3. CPU๊ฐ ๋ช
๋ น์ด๋ฅผ ํด์ํ๊ณ ์คํ
4. ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ ์ฅ์น ๋๋ ํ๋ฉด์ ์ถ๋ ฅ
CPU์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐ์ดํฐ ์ด๋์ ๋ฒ์ค(Bus)๋ฅผ ํตํด ์ด๋ฃจ์ด์ง
'๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL ํ๋ก์ ํธ] 4์ผ์ฐจ - ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ธต ๊ตฌ์กฐ (0) | 2025.04.07 |
---|---|
[TIL ํ๋ก์ ํธ] 3์ผ์ฐจ - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฒ์ ์ต์ ํ (0) | 2025.04.03 |
[TIL ํ๋ก์ ํธ] 2์ผ์ฐจ - ์ด์์ฒด์ (OS) (0) | 2025.04.02 |