개요
이 책의 목차
- 개요
1.1. 운영체제가 하는 일
1.2. 컴퓨터 시스템의 구조
1.3. 컴퓨터 시스템 아키텍쳐
1.4. 컴퓨터 시스템의 동작
1.5. 리소스 관리
1.6. 보안과 보호
1.7. 가상화 (virtualization)
1.8. 분산 시스템
1.9. 커널(kernel) 자료구조
1.10. 컴퓨팅 환경
1.11. 무료 & 오픈소스 운영체제
1.12. 요약
- 운영체제의 구조
2.1. 운영체제 서비스
2.2. 사용자 & 운영체제 인터페이스
2.3. 시스템 호출
2.4. 시스템 서비스
2.5. 링커 & 로더
2.6. 어플리케이션이 운영체제 특화적인 이유
2.7. 운영체제의 설계 및 구현
2.8. 운영체제의 구조
2.9. 운영체제의 빌드 및 부팅 과정
2.10. 운영체제 디버깅
2.11. 요약
- 프로세스
3.1. 프로세스의 개념
3.2. 프로세스 스케쥴링
3.3. 프로세스 연산
3.4. 프로세스 간 통신 (IPC)
3.5. shared memory 시스템에서의 IPC
3.6. message-passing 시스템에서의 IPC
3.7. IPC 시스템의 예시
3.8. 클라이언트-서버 시스템에서의 통신
3.9. 요약
- 스레드와 동시성
4.1. 개요
4.2. 멀티코어 프로그래밍
4.3. 멀티스레딩 모델
4.4. 스레드 라이브러리
4.5. 암묵적 스레딩
4.6. 스레딩에 관한 이슈들
4.7. 운영체제 예시
4.8. 요약
- CPU 스케쥴링
5.1. 기본 개념
5.2. 스케쥴링 표준
5.3. 스케쥴링 알고리즘
5.4. 스레드 스케쥴링
5.5. 멀티프로세서 스케쥴링
5.6. 실시간 CPU 스케쥴링
5.7. 운영체제 예시
5.8. 알고리즘 평가
5.9. 요약
- 동기화 도구
6.1. 배경
6.2. 임계구역 문제 (critical-section problem)
6.3. 피터슨의 솔루션 (peterson's solution)
6.4. 동기화를 위한 하드웨어 지원
6.5. 뮤텍스 락 (mutex lock)
6.6. 세마포어 (semaphore)
6.7. 모니터
6.8. 라이브니스 (liveness)
6.9. 평가
6.10. 요약
- 동기화 예시
7.1. 동기화의 고전적인 문제
7.2. 커널 내부에서의 동기화
7.3. POSIX 동기화
7.4. Java에서의 동기화
7.5. 다른 접근법
7.6. 요약
- 데드락 (deadlock)
8.1. 시스템 모델
8.2. 멀티스레드 어플리케이션에서의 데드락
8.3. 데드락의 특징
8.4. 데드락을 처리하는 방법들
8.5. 데드락 방지
8.6. 데드락 회피
8.7. 데드락 탐지
8.8. 데드락으로부터의 복구
8.9. 요약
- 메인 메모리
9.1. 배경
9.2. 연속 메모리 할당 (contiguous memory allocation)
9.3. 페이징
9.4. 페이지 테이블의 구조
9.5. 스와핑
9.6. 예시: Intel 32bit & 64bit 구조
9.7. 예시: ARMv8 구조
9.8. 요약
- 가상 메모리 (virtual memory)
10.1. 배경
10.2. 요구 페이징 (demand paging)
10.3. Copy on Write (COW)
10.4. 페이지 대체
10.5. 프레임 할당
10.6. 스래싱 (thrashing)
10.7. 메모리 압축
10.8. 커널 메모리 할당
10.9. 기타 고려사항
10.10. 운영체제 예시
10.11. 요약
- 대용량 스토리지 구조
11.1. 개요
11.2. HDD 스케쥴링
11.3. NVM 스케쥴링
11.4. 에러 검출 및 수정
11.5. 스토리지 장치 관리
11.6. 스왑 공간 관리 (swap-space management)
11.7. 스토리지 연결
11.8. RAID 구조
11.9. 요약
- 입출력 시스템
12.1. 개요
12.2. 입출력 하드웨어
12.3. 어플리케이션 입출력 인터페이스
12.4. 커널 입출력 하위 시스템
12.5. 입출력 요청을 하드웨어 동작으로 변환하기
12.6. 스트림
12.7. 성능
12.8. 요약
- 파일 시스템 개요
13.1. 파일의 개념
13.2. 접근 방법
13.3. 디렉토리 구조
13.4. 보호
13.5. 메모리 맵 파일 (memory-mapped file)
13.6. 요약
- 파일 시스템의 구현
14.1. 파일 시스템 구조
14.2. 파일 시스템 동작
14.3. 디렉토리 구현
14.4. 할당 방법
14.5. 빈 공간 관리
14.6. 효율성과 성능
14.7. 복구
14.8. 예시: WAFL 파일 시스템
14.9. 요약
- 파일 시스템 내부
15.1. 파일 시스템
15.2. 파일 시스템 마운팅
15.3. 파티션과 마운팅
15.4. 파일 공유
15.5. 가상 파일 시스템
15.6. 원격 파일 시스템
15.7. 일관성 의미론
15.8. NFS
15.9. 요약
- 보안
16.1. 보안 문제
16.2. 프로그램 위협
16.3. 시스템 및 네트워크 위협
16.4. 보안 도구로서의 암호학
16.5. 사용자 인증
16.6. 보안 방어 구현하기
16.7. 예시: Windows 10
16.8. 요약
- 보호
17.1. 보호의 목적
17.2. 보호 원칙
17.3. 보호 링
17.4. 보호 범위
17.5. 접근 행렬
17.6. 접근 행렬 구현
17.7. 접근 권한 취소
17.8. 역할 기반 접근 제어
17.9. 의무 접근 제어 (MAC)
17.10. 능력 기반 시스템
17.11. 기타 보호 개선법
17.12. 언어 기반 보호
17.13. 요약
- 가상 머신
18.1. 개요
18.2. 역사
18.3. 장점과 특징
18.4. 빌딩 블록
18.5. VM의 종류와 구현
18.6. 가상화 및 운영체제의 구성 요소
18.7. 예시
18.8. 가상화 연구
18.9. 요약
- 네트워크 및 분산 시스템
19.1. 분산 시스템의 장점
19.2. 네트워크 구조
19.3. 통신 구조
19.4. 네트워크 및 분산 운영체제
19.5. 분산 시스템의 설계 이슈
19.6. 분산 파일 시스템
19.7. DFS 네이밍 및 투명성
19.8. 원격 파일 접근
19.9. 분산 파일 시스템에 대한 마지막 의견
19.10. 요약
- 리눅스 시스템
20.1. 리눅스의 역사
20.2. 설계 원칙
20.3. 커널 모듈
20.4. 프로세스 관리
20.5. 스케쥴링
20.6. 메모리 관리
20.7. 파일 시스템
20.8. 입출력
20.9. 프로세스 간 통신
20.10. 네트워크 구조
20.11. 보안
20.12. 요약
- Windows 10
21.1. 역사
21.2. 설계 원칙
21.3. 시스템 구성 요소
21.4. 터미널 서비스 및 빠른 사용자 전환
21.5. 파일 시스템
21.6. 네트워킹
21.7. 프로그래머 인터페이스
21.8. 요약
부록
A. 영향력 있는 운영체제
B. Windows 7
C. BSD UNIX
D. Mach 시스템