OS 20
- 성능 관찰과 병목 분석 — "느려요"를 추측이 아니라 측정으로 (시리즈 마무리)
- 가상화와 컨테이너 — VM과 컨테이너, 격리 스펙트럼의 양 끝
- 블록 I/O와 페이지 캐시 — 같은 파일을 두 번째 읽으면 왜 빠른가
- I/O·인터럽트·DMA — CPU보다 백만 배 느린 장치와 효율적으로 대화하기
- 파일 시스템 (2) — 쓰는 중 전원이 꺼지면? 저널링과 크래시 일관성
- 파일 시스템 (1) — 파일명은 파일이 아니다, inode와 VFS의 세계
- 메모리 할당자 — malloc은 어떻게 힙을 쪼개나, buddy와 slab까지
- 페이지 교체 알고리즘 — 메모리가 꽉 찼을 때 누구를 쫓아낼까
- 페이지 폴트·디맨드 페이징·스왑 — malloc 1GB가 즉시 성공하는 이유
- 페이징·페이지 테이블·TLB — 4단계 주소 변환과 그 캐시
- 가상 메모리 — 모든 프로세스가 같은 주소에서 시작하는데 왜 안 겹치나
- 동기화 (2) — 세마포어·조건 변수, 그리고 데드락의 네 가지 조건
- 동기화 (1) — 경쟁 상태와 임계 구역, 뮤텍스 vs 스핀락
- 프로세스 간 통신(IPC) — 격리된 프로세스가 협력하는 법, 파이프부터 공유 메모리까지
- 컨텍스트 스위치 — 전환은 공짜가 아니다, 직접비용과 캐시·TLB 오염
- CPU 스케줄링 — 누구에게 CPU를 줄까, FCFS부터 리눅스 CFS까지
- 스레드와 동시성 — 한 주소 공간 속 여러 실행 흐름, 그리고 비결정성의 시작
- 프로세스란 무엇인가 — 주소 공간·PCB·fork와 exec, 그리고 COW의 마법
- 부팅 — 전원 버튼에서 커널까지, 그 1초 사이에 일어나는 모든 일
- 운영체제란 무엇인가 — 커널·유저모드·시스템콜, 왜 프로그램은 하드웨어를 직접 못 만지나