Theory to Practice: ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ทผ๊ฐ์ด ๋๋ CS ์ฌํ ํ๊ตฌ ๋ฐ ๊ตฌํ ๊ธฐ๋ก
ํ๋ถ ๊ณผ์ ์์ ์ํํ ์ด์์ฒด์ , ์ปดํจํฐ ๊ตฌ์กฐ, ๋คํธ์ํฌ ๊ด๋ จ ํ๋ก์ ํธ์ ๊ธฐ์ ๋ณด๊ณ ์๋ฅผ ์์นด์ด๋นํ ์ ์ฅ์์ ๋๋ค.
๋จ์ํ ์ด๋ก ํ์ต์ ๋์ด, ์์คํ ์ ๋์ ์๋ฆฌ๋ฅผ ๋ถ์ํ๊ณ ์ฑ๋ฅ ์ต์ ํ ๊ด์ ์์์ ํธ๋ ์ด๋์คํ(Trade-off)๋ฅผ ๊ณ ๋ฏผํ์ต๋๋ค.
CPU ์ค์ผ์ค๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ต์ ๋ถ์ํ๋ฉฐ ์์คํ ๋ฆฌ์์ค ํจ์จํ์ ๋ํ ์ดํด๋ฅผ ๋ํ์ต๋๋ค.
- ์ฃผ์ ๋ด์ฉ: ๋ค์ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ(FCFS, SJF, RR ๋ฑ)์ ์ง์ ์ค๊ณํ๊ณ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ฑ๋ฅ์ ๋น๊ต ๋ถ์ํจ.
- Key Insight:
- "์ ๋์ ์ธ ๋ง๋ฅ ์๊ณ ๋ฆฌ์ฆ์ ์๋ค." ์์คํ ์ ๋ชฉ์ (์๋ต ์๋ vs ์ฒ๋ฆฌ๋)์ ๋ฐ๋ผ ์ ํฉํ ์ค์ผ์ค๋ฌ๋ฅผ ์ ํํ๊ฑฐ๋ ํผํฉ(Hybrid)ํด์ผ ํจ์ ์ ์ฆ.
- Backend View: ๋์ฉ๋ ํธ๋ํฝ ์ฒ๋ฆฌ ์ ์ค๋ ๋ ํ(Thread Pool)์ ์ค์ผ์ค๋ง ์ ์ฑ ์ด๋ OS ํ๋์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ดํดํ๋ ๊ธฐ๋ฐ์ด ๋จ.
- ๐ ๋ณด๊ณ ์ PDF ๋ณด๊ธฐ
- ์ฃผ์ ๋ด์ฉ: ๊ธฐ์กด LFU/MFU ์ ์ฑ ์ด ํ๋ก๊ทธ๋จ์ ์ง์ญ์ฑ(Locality) ๋ณํ์ ์ทจ์ฝํ๋ค๋ ์ ์ ๋ถ์ํ๊ณ , ์ด๋ฅผ ๋ณด์ํ๋ **ํ๋ฅ ๊ธฐ๋ฐ์ ์๋ก์ด ๊ต์ฒด ์ ์ฑ (PFU)**์ ์ง์ ์ค๊ณ ๋ฐ ๊ตฌํํจ.
- Implementation:
- ๊ธฐ์กด ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ(FIFO, LFU, MFU)๊ณผ ์ ์ํ PFU ์๊ณ ๋ฆฌ์ฆ์ ์๋ฎฌ๋ ์ด์ ์ฝ๋๋ก ๊ตฌํ.
- ๋ค์ํ ์ํฌ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ์ฌ
Page Fault๋ฐ์ ํ์๋ฅผ ์ธก์ ํ๊ณ ์ฑ๋ฅ ์ฐ์๋ฅผ ์ ์ฆํจ.
- Key Insight:
- Locality-Awareness: ์ง์ญ์ฑ ํน์ฑ์ด ๊ฐํ ํ๊ฒฝ๊ณผ ๊ทธ๋ ์ง ์์ ํ๊ฒฝ ๋ชจ๋์์ ์์ ์ ์ธ ์ฑ๋ฅ์ ๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์ค์์ฑ ํ์ธ.
- Backend View: DB์ Buffer Pool ๊ด๋ฆฌ๋ Redis์ ๊ฐ์ **์บ์(Cache) ์์คํ ์ ๋ง๋ฃ ์ ์ฑ (Eviction Policy)**์ ์ค๊ณํ ๋, ๋ฐ์ดํฐ ์ ๊ทผ ํจํด(Access Pattern)์ ๊ณ ๋ คํด์ผ ํจ์ ์ฒด๋.
- ๐ ์์ค ์ฝ๋ ๋ฐ ๋ณด๊ณ ์ ๋ณด๊ธฐ
ํ๋์จ์ด์ ๊ตฌ์กฐ์ ํน์ง๊ณผ ๋ณ๋ชฉ ํ์์ ์ดํดํ์ฌ ์ํํธ์จ์ด ์ต์ ํ์ ํ๋์จ์ด์ ๊ทผ๊ฑฐ๋ฅผ ๋ง๋ จํ์ต๋๋ค.
- ์ฃผ์ ๋ด์ฉ: ์๋ฒ ๋๋(ARM), PC(Intel Skylake), ์ํผ์ปดํจํฐ(NVIDIA A100) ํ๋ก์ธ์์ ์ํคํ ์ฒ๋ฅผ ๋ถ์ํ๊ณ , ๋ชฉ์ ์ ๋ฐ๋ฅธ ISA ๋ฐ ํ์ดํ๋ผ์ธ ์ค๊ณ์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ท๋ช .
- Key Insight:
- ARM: Throughput์ ํฌ๊ธฐํ๊ณ ์ ๋ ฅ/๋น์ฉ ํจ์จ์ ์ ํ (3๋จ๊ณ ํ์ดํ๋ผ์ธ)
- Intel: ์ ๋ ฅ ์๋ชจ๋ฅผ ๊ฐ์ํ๊ณ ๋จ์ผ ์ค๋ ๋ ์ฑ๋ฅ ๊ทน๋ํ (๋ณต์กํ ๋น์์ฐจ ์คํ)
- NVIDIA: ๋จ์ผ ์๋๋ฅผ ํฌ๊ธฐํ๊ณ ๋๊ท๋ชจ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ ํ (SIMT, Latency Hiding)
- Backend View: ์๋ฒ ํ๊ฒฝ ๊ตฌ์ถ ์, ์ํฌ๋ก๋์ ํน์ฑ(๋จ์ผ ์ฐ์ฐ vs ๋ณ๋ ฌ ์ฒ๋ฆฌ)์ ๋ฐ๋ผ **์ ์ ํ ์ธ์คํด์ค ํ์ (CPU Optimized vs GPU)**์ ์ ํํด์ผ ํ๋ ์ด์ ๋ฅผ ํ๋์จ์ด ๋ ๋ฒจ์์ ์ดํดํจ.
- ๐ ๋ณด๊ณ ์ PDF ๋ณด๊ธฐ
- ์ฃผ์ ๋ด์ฉ:
SimpleScalar์๋ฎฌ๋ ์ดํฐ๋ฅผ ์์ ํ์ฌ MRU(Most Recently Used) ์ ์ฑ ์ ์ง์ ๊ตฌํํ๊ณ , ์บ์ ์ฐ๊ด๋(Associativity) ๋ณํ์ ๋ฐ๋ฅธ LRU, Random, MRU์ ์ฑ๋ฅ ์ฐจ์ด๋ฅผgcc,mcf๋ฒค์น๋งํฌ๋ก ์ธก์ . - Key Insight:
- ์ ํ๋ ์ฉ๋์์๋ ๋ณต์กํ LRU๋ณด๋ค ๋น์ฉ์ด ๋ฎ์ Random ์ ์ฑ ์ด ๊ฐ์ฑ๋น(Trade-off) ๋ฉด์์ ํฉ๋ฆฌ์ ์ผ ์ ์์์ ๋ฐ์ดํฐ๋ก ์ ์ฆ.
- Backend View: ๋ฌด์กฐ๊ฑด ๋ณต์กํ๊ณ ์ ๊ตํ ์๊ณ ๋ฆฌ์ฆ์ด ์ข์ ๊ฒ์ด ์๋๋ผ, **๊ตฌํ ๋ณต์ก๋ ๋๋น ์ฑ๋ฅ ํจ์จ(Cost-Benefit Analysis)**์ ๋ฐ์ ธ ๊ธฐ์ ์ ์ ํํด์ผ ํจ์ ๋ฐฐ์.
- ๐ ํ๋ก์ ํธ ์ฝ๋ ๋ฐ ๋ณด๊ณ ์ ๋ณด๊ธฐ
์์ผ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ๋ฐฑ์๋์ ํต์ฌ์ธ **๋์์ฑ ์ฒ๋ฆฌ(Concurrency)**์ I/O๋ฅผ ๊น์ด ์๊ฒ ํ๊ตฌํ์ต๋๋ค.
- ์ฃผ์ ๋ด์ฉ: ๊ธฐ์กด์ ๋จ์ ๋ธ๋ก๋์บ์คํธ ์ฑํ
์๋ฒ(
chat_serv.c)๋ฅผ ๊ฐ์ ํ์ฌ, ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ 1:1 ๊ท์๋ง ๊ธฐ๋ฅ๊ณผ ๋์ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋๋ก ๊ณ ๋ํ. - Tech Stack:
C,Socket Programming,POSIX Threads (pthread),Mutex - Implementation Details:
- Protocol Design:
@receiver messageํฌ๋งท์ ํ์ฑํ์ฌ ํน์ ํด๋ผ์ด์ธํธ์๊ฒ๋ง ๋ฉ์์ง๋ฅผ ๋ผ์ฐํ ํ๋ ๋ก์ง ๊ตฌํ (send_whisper_msg). - Concurrency Control:
clnt_names(์ฌ์ฉ์ ๋ชฉ๋ก) ๋ฑ ์ ์ญ ๋ณ์์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํ ๋ ๋ฐ์ํ๋ Race Condition์ ๋ฐฉ์งํ๊ธฐ ์ํด Mutex๋ฅผ ํ์ฉํ ์๊ณ ์์ญ(Critical Section) ๋ณดํธ ์ ์ฉ. - Non-blocking I/O: ํด๋ผ์ด์ธํธ์์ ์ฝ๊ธฐ ์ค๋ ๋์ ์ฐ๊ธฐ ์ค๋ ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ, ๋ฉ์์ง๋ฅผ ์ ๋ ฅํ๋ ๋์ค์๋ ์์ ๋ ๋ฉ์์ง๋ฅผ ์ฆ์ ์ถ๋ ฅํ ์ ์๋๋ก ๊ฐ์ .
- Protocol Design:
- Key Insight:
- Backend View: ๋ค์์ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๋ ๋ฐฑ์๋ ์๋ฒ์ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์ฒด๋ํ๊ณ , ์ค๋ ๋ ์์ (Thread-safe)ํ ์ฝ๋ ์์ฑ์ ์ค์์ฑ์ ๊ฒฝํํจ.
- ๐ ์์ค ์ฝ๋ ๋ฐ ๋ณด๊ณ ์ ๋ณด๊ธฐ
- ๐ท ์์ฐ ์์ ๋ณด๊ธฐ