🧵 운영체제 — 강의 교재 인덱스
Operating System Concepts, 10th Edition (Silberschatz · Galvin · Gagne, Wiley 2018) 기반. 학부 고학년~대학원 수준의 정독용 교재로, 원문 각 절을 모두 커버하되 내부 구현·현대 맥락·구현 코드까지 확장했습니다. 각 페이지에서 📘 OSC N.x(교재 원문)와 ⊕ 교재 외 확장 배지로 출처를 구분합니다.
챕터 (동시성·스케줄링 묶음)
- 4장 · 스레드와 동시성 (Threads & Concurrency) — 스레드 해부·문맥 교환 · 동시성/병렬성·Amdahl/Gustafson · 멀티스레딩 모델 · Pthreads/Windows/Java/C++ · 스레드 풀·work-stealing·OpenMP/GCD · 메모리 모델·가시성·재배열 · fork/시그널/취소/TLS · Linux·Windows 내부 · goroutine·virtual thread·async
- 5장 · CPU 스케줄링 (CPU Scheduling) — CPU–I/O 버스트·디스패처 · 스케줄링 기준 · FCFS·SJF·SRTF·RR·우선순위·MLQ/MLFQ(간트차트+계산) · 스레드 스케줄링(PCS/SCS) · 다중처리기(부하균형·친화성·NUMA) · 실시간(RMS·EDF) · Linux CFS·Windows·Solaris · 알고리즘 평가
- 6장 · 동기화 도구 (Synchronization Tools) — 경쟁 조건 · 임계구역 3요건 · Peterson · 하드웨어 지원(메모리 배리어·CAS·atomic) · 뮤텍스·스핀락 · 세마포어 · 모니터·조건 변수 · 라이브니스(데드락·우선순위 역전/상속) · 평가
- 7장 · 동기화 예제 (Synchronization Examples) — 고전 문제(유한버퍼·readers-writers·식사하는 철학자) · 커널 내부(Windows·Linux) · POSIX 동기화 · Java 동기화 · 대안(트랜잭셔널 메모리·OpenMP·함수형) · Rust/Go 확장
- 8장 · 교착 상태 (Deadlocks) — 시스템 모델 · 멀티스레드 데드락·라이브락 · 4가지 필요조건·자원 할당 그래프 · 예방·회피(은행원 알고리즘 손계산)·탐지·회복
📌 읽는 법 — 📘 vs ⊕
각 챕터 본문의 절·소절 제목 옆 배지로 출처를 구분합니다. 📘 OSC N.x는 교재 4~8장 원문에 해당하는 핵심 내용이고, ⊕ 교재 외 확장은 내부 구현(CFS·futex·은행원 손계산)·현대 맥락(Go/Rust)·구현 코드 등 교재 범위를 넘어선 심화입니다. 배지 없는 소절은 교재 본문입니다.
관통 질문
이 실행 단위는 무엇을 공유하고, 누가 언제 CPU를 주며(스케줄링), 공유 자원의 경쟁을 어떻게 막고(동기화), 서로를 영원히 기다리는 교착을 어떻게 다루는가?
손으로 할 실습
- 4장: raw
clone()+futex로 뮤텍스 구현, false sharing 벤치마크(perf) - 5장:
chrt/taskset으로 정책·친화성 바꿔 지연 측정, 간트차트 손계산 - 6장: Peterson 해법이 x86에서 깨지는지 관측, 세마포어로 유한버퍼 구현
- 7장: 식사하는 철학자 데드락 재현 → 자원 순서화/중재자로 해결
- 8장: 은행원 알고리즘 안전성 판정 손계산, 두 뮤텍스 교차 획득 데드락 재현 후
tryLock으로 회피