Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

19 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ป Computer Science Deep Dive Archive

Theory to Practice: ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” CS ์‹ฌํ™” ํƒ๊ตฌ ๋ฐ ๊ตฌํ˜„ ๊ธฐ๋ก

ํ•™๋ถ€ ๊ณผ์ •์—์„œ ์ˆ˜ํ–‰ํ•œ ์šด์˜์ฒด์ œ, ์ปดํ“จํ„ฐ ๊ตฌ์กฐ, ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ์ˆ  ๋ณด๊ณ ์„œ๋ฅผ ์•„์นด์ด๋น™ํ•œ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
๋‹จ์ˆœํ•œ ์ด๋ก  ํ•™์Šต์„ ๋„˜์–ด, ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ด€์ ์—์„œ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„(Trade-off)๋ฅผ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“‚ 1. Operating System (์šด์˜์ฒด์ œ)

CPU ์Šค์ผ€์ค„๋ง๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ „๋žต์„ ๋ถ„์„ํ•˜๋ฉฐ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ํšจ์œจํ™”์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋„“ํ˜”์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ CPU Scheduler Analysis & Design

  • ์ฃผ์š” ๋‚ด์šฉ: ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(FCFS, SJF, RR ๋“ฑ)์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋น„๊ต ๋ถ„์„ํ•จ.
  • Key Insight:
    • "์ ˆ๋Œ€์ ์ธ ๋งŒ๋Šฅ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—†๋‹ค." ์‹œ์Šคํ…œ์˜ ๋ชฉ์ (์‘๋‹ต ์†๋„ vs ์ฒ˜๋ฆฌ๋Ÿ‰)์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ํ˜ผํ•ฉ(Hybrid)ํ•ด์•ผ ํ•จ์„ ์ž…์ฆ.
    • Backend View: ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์‹œ ์Šค๋ ˆ๋“œ ํ’€(Thread Pool)์˜ ์Šค์ผ€์ค„๋ง ์ •์ฑ…์ด๋‚˜ OS ํŠœ๋‹์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๋Š” ๊ธฐ๋ฐ˜์ด ๋จ.
  • ๐Ÿ“„ ๋ณด๊ณ ์„œ PDF ๋ณด๊ธฐ

2๏ธโƒฃ PFU(Probabilistic Frequently Used) ํŽ˜์ด์ง€ ๊ต์ฒด ์ •์ฑ… ์ œ์•ˆ ๋ฐ ๊ตฌํ˜„

  • ์ฃผ์š” ๋‚ด์šฉ: ๊ธฐ์กด 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)์„ ๊ณ ๋ คํ•ด์•ผ ํ•จ์„ ์ฒด๋“.
  • ๐Ÿ“‚ ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๋ณด๊ณ ์„œ ๋ณด๊ธฐ

๐Ÿ“‚ 2. Computer Architecture (์ปดํ“จํ„ฐ ๊ตฌ์กฐ)

ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์กฐ์  ํŠน์ง•๊ณผ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ดํ•ดํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ์ตœ์ ํ™”์˜ ํ•˜๋“œ์›จ์–ด์  ๊ทผ๊ฑฐ๋ฅผ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ Processor System Comparison (MIPS vs ARM vs Intel vs NVIDIA)

  • ์ฃผ์š” ๋‚ด์šฉ: ์ž„๋ฒ ๋””๋“œ(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 ๋ณด๊ธฐ

2๏ธโƒฃ High-Associativity ์บ์‹œ ๊ต์ฒด ์ •์ฑ… ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐ ๊ตฌํ˜„

  • ์ฃผ์š” ๋‚ด์šฉ: SimpleScalar ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ MRU(Most Recently Used) ์ •์ฑ…์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ , ์บ์‹œ ์—ฐ๊ด€๋„(Associativity) ๋ณ€ํ™”์— ๋”ฐ๋ฅธ LRU, Random, MRU์˜ ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ gcc, mcf ๋ฒค์น˜๋งˆํฌ๋กœ ์ธก์ •.
  • Key Insight:
    • ์ œํ•œ๋œ ์šฉ๋Ÿ‰์—์„œ๋Š” ๋ณต์žกํ•œ LRU๋ณด๋‹ค ๋น„์šฉ์ด ๋‚ฎ์€ Random ์ •์ฑ…์ด ๊ฐ€์„ฑ๋น„(Trade-off) ๋ฉด์—์„œ ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Œ์„ ๋ฐ์ดํ„ฐ๋กœ ์ž…์ฆ.
    • Backend View: ๋ฌด์กฐ๊ฑด ๋ณต์žกํ•˜๊ณ  ์ •๊ตํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข‹์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, **๊ตฌํ˜„ ๋ณต์žก๋„ ๋Œ€๋น„ ์„ฑ๋Šฅ ํšจ์œจ(Cost-Benefit Analysis)**์„ ๋”ฐ์ ธ ๊ธฐ์ˆ ์„ ์„ ํƒํ•ด์•ผ ํ•จ์„ ๋ฐฐ์›€.
  • ๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐ ๋ณด๊ณ ์„œ ๋ณด๊ธฐ

๐Ÿ“‚ 3. Network Programming (๋„คํŠธ์›Œํฌ)

์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์˜ ํ•ต์‹ฌ์ธ **๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ(Concurrency)**์™€ I/O๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ํƒ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ Multi-threading ๊ธฐ๋ฐ˜ 1:1 ๊ท“์†๋ง ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌํ˜„

  • ์ฃผ์š” ๋‚ด์šฉ: ๊ธฐ์กด์˜ ๋‹จ์ˆœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฑ„ํŒ… ์„œ๋ฒ„(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: ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฝ๊ธฐ ์Šค๋ ˆ๋“œ์™€ ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ, ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋„์ค‘์—๋„ ์ˆ˜์‹ ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฆ‰์‹œ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ .
  • Key Insight:
    • Backend View: ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ์›๋ฆฌ๋ฅผ ์ฒด๋“ํ•˜๊ณ , ์Šค๋ ˆ๋“œ ์•ˆ์ „(Thread-safe)ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์˜ ์ค‘์š”์„ฑ์„ ๊ฒฝํ—˜ํ•จ.
  • ๐Ÿ“‚ ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๋ณด๊ณ ์„œ ๋ณด๊ธฐ
  • ๐Ÿ“ท ์‹œ์—ฐ ์˜์ƒ ๋ณด๊ธฐ

About

๐Ÿ’ป ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” CS ์‹ฌํ™” ํƒ๊ตฌ ๋ณด๊ณ ์„œ ๋ฐ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ ์•„์นด์ด๋ธŒ (OS, ์ปด๊ตฌ, ๋„คํŠธ์›Œํฌ)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages