컴퓨터 과학 기초 지식 지도
OS (운영체제)
프로세스와 스레드
- 프로세스 — 독립 실행 단위, 가상 주소 공간, PCB, 생명주기, fork/exec
- 스레드 — 프로세스 내 실행 흐름, 스레딩 모델(1:1, M:1, M:N), Linux clone()
- 유저 모드와 커널 모드 — CPU 보호 링, 시스템 콜, 모드 전환 비용, vDSO
- 컨텍스트 스위칭 — 프로세스/스레드 전환 비용, TLB flush, 캐시 cold start
- 프로세스 간 통신 (IPC) — 파이프, 소켓, 공유 메모리, 메시지 큐
- 멀티스레드 동기화 — Mutex, Semaphore, 데드락, synchronized vs Lock
- Java Virtual Thread — JVM M:N 스케줄링, Continuation, 비선점, pinning
- Kotlin Coroutine — CPS 변환, Dispatcher, Structured Concurrency, 취소 전파
실행 단위 비교표
| 기준 | 프로세스 | 플랫폼 스레드 | Virtual Thread | Kotlin Coroutine |
|---|---|---|---|---|
| 생성 비용 | ~10ms, ~MB | ~1ms, ~1MB Stack | ~1μs, ~수 KB | ~수십 ns, ~수백 B |
| 최대 생성 수 | 수백~수천 | 수천~수만 | 수백만 | 수백만 |
| 스케줄링 | OS 선점 | OS 선점 | JVM 비선점 | Dispatcher 비선점 |
| 블로킹 I/O | 해당 프로세스만 | 커널 스레드 점유 | 자동 unmount | suspend로 양보 |
| 격리 수준 | 완전 격리 | 공유 (크래시 전파) | 공유 | 공유 |
| 적합한 상황 | 장애 격리 필요 | CPU-bound 병렬 | I/O-bound 대량 동시성 | I/O-bound + 구조화된 동시성 |