목차
제1부 개요
제1장 서론 (Introduction) = 3
1.1 운영체제란 무엇인가 = 5
1.2 단순 일괄처리 시스템 = 8
1.3 다중 프로그램의 일괄처리 시스템 = 10
1.4 시분할 시스템 (Times Sharing System) = 12
1.5 개인용 컴퓨터 시스템 = 14
1.6 병렬 시스템 = 16
1.7 분산 시스템 = 19
1.8 실시간 시스템 = 20
1.9 요약 = 22
연습문제 = 23
제2장 컴퓨터 시스템 구조 (Computer System Structures) = 25
2.1 컴퓨터 시스템 연산 (Computer System Operation) = 27
2.2 입출력 구조 (I/O Structure) = 30
2.2.1 입출력 인터럽트 = 31
2.2.2 DMA 구조 = 33
2.3 저장장치 구조 (Storage Structure) = 34
2.3.1 주기억장치 = 36
2.3.2 자기 디스크 = 37
2.3.3 자기 테이프 = 38
2.4 저장장치 계층 (Storage Hierarchy) = 39
2.4.1 캐싱 (Caching) = 39
2.4.2 응집성과 일관성 (Coherency and Consistency) = 41
2.5 하드웨어 보호 (Hardware Protection) = 42
2.5.1 이중 모드 연산 (Dual-Mode Operation) = 43
2.5.2 입출력 보호 (I/O Protection) = 44
2.5.3 기억장치 보호 (Memory Protection) = 44
2.5.4 중앙처리장치 보호 (CPU Protection) = 46
2.6 일반적인 시스템 구조 (General System Architecture) = 47
2.7 요약 = 48
연습문제 = 50
제3장 운영체제 구조 (Operating System Structures) = 53
3.1 시스템 구성 = 55
3.1.1 프로세스 관리 = 56
3.1.2 주기억장치 관리 = 57
3.1.3 파일 관리 (File Management) = 58
3.1.4 입출력 시스템 관리 = 59
3.1.5 보조 기억장치 관리 = 59
3.1.6 네트워킹 (Networking) = 60
3.1.7 보호 시스템 (Protection System) = 60
3.1.8 명령 해석기 (Command-Interpreter) 시스템 = 61
3.2 운영체제 서비스 = 62
3.3 시스템 호출 (System Calls) = 64
3.3.1 프로세스와 작업 제어 (Process and Job Control) = 67
3.3.2 파일 조작 (File Manipulation) = 70
3.3.3 장치 관리 (Device Management) = 71
3.3.4 정보 유지관리 (Information Maintenance) = 71
3.3.5 통신 (Communication) = 71
3.4 시스템 프로그램 (System Programs) = 72
3.5 시스템 구조 = 75
3.5.1 간단한 구조 = 75
3.5.2 계층적 접근 (Layed Approach) = 77
3.6 가상 기계 (Virtual Machine) = 81
3.6.1 구현 = 83
3.6.2 장점 = 84
3.6.3 자바 (Java) = 85
3.7 시스템 설계 및 구현 = 85
3.7.1 설계 목표 = 86
3.7.2 메커니즘 및 정책 = 86
3.7.3 구현 = 87
3.8 시스템 생성 (System Generation) = 88
3.9 요약 = 90
연습문제 = 91
제2부 프로세스 관리
제4장 프로세스 (Processes) = 95
4.1 프로세스 개념 = 98
4.1.1 프로세스 = 98
4.1.2 프로세스 상태 = 99
4.1.3 프로세스 제어 블록 (Process Control Block) = 100
4.2 프로세스 스케줄링 = 101
4.2.1 스케줄링 큐 = 102
4.2.2 스케줄러 = 103
4.2.3 문맥 교환 (Context Switch) = 105
4.3 프로세스 수행 (Operation on Processes) = 106
4.3.1 프로세스 생성 (Process Creation) = 106
4.3.2 프로세스 종료 (Process Termination) = 108
4.4 상호 협조 프로세스들 (Cooperating Processes) = 109
4.5 스레드 (Threads) = 111
4.5.1 스레드 구조 (Thread Stucture) = 112
4.5.2 예 : Solaris 2 = 115
4.6 프로세스간 통신 (InterprocessCommunication) = 118
4.6.1 기본 구조 (Basic Structure) = 118
4.6.2 명칭 부착 (Naming) = 119
4.6.3 버퍼링 (Buffering) = 123
4.6.4 예외 저건 (Exception Conditions) = 124
4.6.5 실례 : Mach = 126
4.6.6 실례 : 윈도우즈 NT = 128
4.7 요약 = 129
연습문제 = 131
제5장 중앙처리장치 스케줄링 = 133
5.1 기본 개념 = 135
5.1.1 중앙처리장치 입출력 버스트 주기 (Burst Cycle) = 136
5.1.2 중앙처리장치 스케줄러 (CPU Scheduler) = 137
5.1.3 선점 스케줄링 (Preemptive Scheduling) = 138
5.1.4 디스패처 (Dispatcher) = 139
5.2 스케줄링 기준 (Scheduling Criteria) = 139
5.3 스케줄링 알고리즘 (Scheduling Algorithms) = 141
5.3.1 선입 선처리 (First-Come, First-Served) 스케줄링 = 141
5.3.2 최소 작업 우선 (Shortest-Job-First) 스케줄링 = 143
5.3.3 우선순위 (Priority) 스케줄링 = 146
5.3.4 라운드 로빈 (Round-Robin) 스케줄링 = 148
5.3.5 다단계 로빈 (Multilevel Queue) 스케줄링 = 151
5.3.6 다단계 피트백 큐 (Multilevel Feedback Queue) = 152
5.4 다중 프로세서 (Multiple Processor) 스케줄링 = 154
5.5 실시간 (Real-Time) 스케줄링 = 155
5.6 알고리즘 평가 (Algorithm Evaluation) = 157
5.6.1 결정성 모형화 (Deterministic Modeling) = 158
5.6.2 큐잉 모형 (Queueing Model) = 160
5.6.3 모의 실험 (Simulation) = 161
5.6.4 구현 = 161
5.7 요약 = 163
연습문제 = 164
제6장 프로세스 동기화 = 167
6.1 배경 = 169
6.2 임계 구역 (Critical Section) = 172
6.2.1 2개 프로세스를 위한 해결법 = 173
6.2.2 복수 프로세스를 위한 해결법 = 176
6.3 동기화 하드웨어 = 178
6.4 세마포 (Semaphore) = 182
6.4.1 사용법 = 182
6.4.2 구현 = 183
6.4.3 교착 상태와 기아 = 186
6.4.4 이진 세마포 (Binary Semaphores) = 186
6.5 동기화 고전적인 문제들 = 187
6.5.1 한계 버퍼 문제 = 187
6.5.2 판독 기록 문제 = 188
6.5.3 철학자들의 만찬 (Dining Philisoophers) 문제 = 190
6.6 임계 영역 (Critcal Region) = 192
6.7 모니터 (Monitor) = 196
6.8 솔라리스 (Solaris) 2.0에서의 동기화 = 204
6.9 원자성 트랜잭션 (Atomic Transactions) = 205
6.9.1 시스템 모델 = 206
6.9.2 로그 기반 회복 (Log Based Recovery) = 207
6.9.3 검사점 (Checkpoint) = 208
6.9.4 병행 원자 트랜잭션 = 210
6.10 요약 = 215
연습문제 = 216
제7장 교착 상태 (Deadlocks) = 221
7.1 시스템 모델 = 224
7.2 교착 상태의 특징 = 225
7.2.1 필요한 조건들 = 225
7.2.2 자원 할당 그래프 = 226
7.3 교착 상태 처리 방법 (Methods for Handling Deadlocks) = 229
7.4 교착 상태 예방 = 230
7.4.1 상호 배제 (Mutual Exclusion) = 230
7.4.2 점유와 대기 (Hold and wait) = 231
7.4.3 비선점 (No Preemption) = 231
7.4.4 순환 대기 (Cireular Wait) = 232
7.5 교착 상태 회피 = 233
7.5.1 안전 상태 (Safe State) = 234
7.5.2 자원 할당 그래프 알고리즘 = 236
7.5.3 은행가 알고리즘 (Banker`s Algorithm) = 237
7.6 교착 상태 탐지 = 240
7.6.1 각 자원 형태마다 자원이 한 개씩 있는 경우 (Single Instance of Each Resource Type) = 241
7.6.2 자원 형태마다 여러개의 자원이 있는 경우 (Several Instance of a Resource Type) = 242
7.6.3 탐지 알고리즘 사용 (Detection Algorithm Usage) = 244
7.7 교착 상태로부터의 회복 = 244
7.7.1 프로세스 중지 (Termination) = 245
7.7.2 자원 선점 (Resource Preemption) = 246
7.8 교착 상태 해결을 위한 복합 방식 = 246
7.9 요약 = 247
연습문제 = 248
제3부 저장장치 관리
제8장 기억장치 관리 (Memory Management) = 255
8.1 배경 = 257
8.1.1 주소 바인딩 (Address Binding) = 258
8.1.2 동적 적재 (Dynamic Loading) = 259
8.1.3 동적 연결 (Dynamic Linking) = 259
8.1.4 중첩 (Overlay) = 261
8.2 논리적/물리적 주소 공간 = 263
8.3 스웹핑 (Swwapping) = 265
8.4 연속 할당 = 268
8.4.1 단일 분할 할당 (Single-Partition Allocation) = 269
8.4.2 다중 분할 할당 (Multiple-Partition Allocation) = 270
8.4.3 외부 및 내부 단편화 = 272
8.5 페이징 (Paging) = 276
8.5.1 기본 방법 = 276
8.5.2 페이지 테이블의 구조 = 281
8.5.3 다단계 페이징 (Multilevel Paging) = 285
8.5.4 역 페이지 테이블 (Inverted Page Table) = 288
8.5.5 공유 페이지 (Shared Pages) = 291
8.6 세그먼테이션 (Segmentation) = 292
8.6.1 기본 방법 = 292
8.6.2 하드웨어 = 294
8.6.3 세그먼트 테이블의 구현 = 296
8.6.4 보호 (Protection)와 공유 (Sharing) = 296
8.6.5 단편화 (Fragmientation) = 298
8.7 페이지화된 세그먼테이션 = 299
8.7.1 MULTICS = 299
8.7.2 OS/2 32비트 버전 = 301
8.8 요약 = 303
연습문제 = 306
제9장 가상기억장치 (Virtual Memory) = 309
9.1 배경 (Background) = 312
9.2 요구 페이징 (Demand Paging) = 314
9.3 요구 페이징의 성능 = 320
9.4 페이지 교체 (Page Replacement) = 322
9.5 페이지 교채 알고리즘 (Page Replacement Algorithm) = 326
9.5.1 선입선출 (FIFO) 알고리즘 = 327
9.5.2 최적 페이지 교체 알고리즘 (Optimal Algorithm) = 329
9.5.3 LRU 알고리즘 = 330
9.5.4 LRU 근접 알고리즘 = 333
9.5.5 계수 알고리즘 (Counting Algorithm) = 335
9.5.6 페이지 버퍼 알고리즘 (Page Buffering Algorithm) = 336
9.6 프레임의 할당 = 337
9.6.1 최소 프레임 수 = 337
9.6.2 할당 알고리즘 = 339
9.6.3 전역 대 지역 할당 (Global Versus Local Allocation) = 340
9.7 스레싱 (Thrashing) = 341
9.7.1 스레싱의 원인 = 341
9.7.2 작업 집합 (Working Set) 모델 = 344
9.7.3 페이지 부재 (Page-Fault) 빈도 = 346
9.8 기타 고려사항 = 347
9.8.1 프리페이징 (Prepaging) = 347
9.8.2 페이지 크기 = 347
9.8.3 역 페이지 테이블 = 349
9.8.4 프로그램 구조 = 350
9.8.5 입출력 상로잠금 (Input/Output Interlock) = 351
9.8.6 실시잘 처리 (Real-Time Processing) = 353
9.9 요구 세그먼테이션 (Demand Segmentation) = 354
9.10 요약 = 355
연습문제 = 356
제10장 파일 시스템 인터페이스 (File System Interface) = 361
10.1 파일 개념 = 363
10.1.1 파일 속성 = 364
10.1.2 파일 조작 (File Operations) = 365
10.1.3 파일 형태 = 369
10.1.4 파일 구조 = 370
10.1.5 내부 파일 구조 = 372
10.2 접근 방법 = 372
10.2.1 순차 접근 = 373
10.2.2 직접 접근 = 373
10.2.3 기타 접근 방법 = 375
10.3 디렉토리 구조 = 376
10.3.1 1단계 디렉토리 = 378
10.3.2 2단계 디렉토리 = 378
10.3.3 트리 구조 디렉토리 = 383
10.3.4 비순환 그래프 디렉토리 = 383
10.3.5 일반적인 그래프 디렉토리 = 386
10.4 보호 = 387
10.4.1 접근의 형태 = 387
10.4.2 접근 리스트와 그룹 = 388
10.4.3 다른 보호 방법 = 390
10.4.4 예 : UNIX = 391
10.5 일관성 의미 구조 = 392
10.5.1 UNIX 의미 구조 = 392
10.5.2 세션 의미 구조 = 392
10.5.3 불변 공유 파일 의미 구조 = 393
10.6 요약 = 393
연습문제 = 394
제11장 파일 시스템 구현 = 397
11.1 파일 시스템 구조 = 399
11.1.1 파일 시스템 구조 = 400
11.1.2 파일 시스템 마운팅 = 403
11.2 할당 방법 = 403
11.2.1 연속 할당 = 404
11.2.2 연결 할당 = 406
11.2.3 색인 할당 = 410
11.2.4 성능 (Performance) = 412
11.3 가용 공간 관리 (Free Space Management) = 413
11.3.1 비트 벡터 (Bit Vector) = 414
11.3.2 연결 리스트 (Liniked List) = 415
11.3.3 그룹핑 (Grouping) = 416
11.3.4 계수 (Countion) = 416
11.4 디렉토리 구현 = 416
11.4.1 선형 = 416
11.4.2 해시 테이블 = 417
11.5 효율성과 기능 = 418
11.5.1 효율성 = 418
11.5.2 시스템 성능 = 419
11.6 회복 기법 = 421
11.6.1 일관성 검사 = 421
11.6.2 예비 저장고 재저장 = 422
11.7 요약 = 423
연습문제 = 423
제4부 입출력 시스템
제12장 입출력 시스템 = 429
12.1 개요 = 431
12.2 입출력 하드웨어 = 432
12.2.1 폴링 (Polling) = 435
12.2.2 인터럽트 = 437
12.2.3 직접 메모리 접근 (Direct Memory Access) = 441
12.3 응용 입출력 인터페이스 = 443
12.3.1 블록과 문자 장치 = 446
12.3.2 네트워크 장치 = 447
12.3.3 클록과 타이머 = 447
12.3.4 블럭킹과 논불럭킹 (Nonblocking) 입출력 = 448
12.4 커널 입출력 부시스템 (Kernel I/O Subsystem) = 450
12.4.1 스케줄링 (Scheduling) = 450
12.4.2 버퍼링 (Buffering) = 450
12.4.3 캐싱 (Caching) = 452
12.4.4 스폴링 및 장치 예약 (Spooling and Devicd Reservation) = 453
12.4.5 에러 처리 (Error Handling) = 453
12.4.6 커널 자료 구조 (Kernal Data Structures) = 454
12.5 입출력 요청을 하드웨어 작업으로 변환 = 456
12.6 성능 = 459
12.7 요약 = 463
연습문제 = 464
제13장 보조저장장치 구조 = 467
13.1 디스크 구조 = 469
13.2 디스크 스케줄링 = 470
13.2.1 선입선처리 스케줄링 (FCFS Scheduling) = 471
13.2.2 최소 탐색 우선 (SSTF) 스케줄링 = 472
13.2.3 SCAN 스케줄링 = 473
13.2.4 순환 SCAN (C-SCAN) 스케줄링 = 474
13.2.5 LOOK 스케줄링 = 474
13.2.6 디스크 스케줄링 알고리즘의 선택 = 475
13.3 디스크 관리 = 476
13.3.1 디스크 포맷팅 = 476
13.3.2 부트 블럭 = 478
13.3.3 손상 블럭 = 479
13.4 교체 공간 관리 = 480
13.4.1 교체 공간 사용 = 480
13.4.2 교체 공간 위치 = 481
13.4.3 교체 공간 관리 = 482
13.5 디스크 신뢰성 = 483
13.6 안정된 저장장치 구현 = 484
13.7 요약 = 486
연습문제 = 487
제14장 제3의 저장장치 구조 = 489
14.1 제3의 저장장치 = 491
14.1.1 제거가능한 디스크 = 492
14.1.2 테이프 = 493
14.1.3 향후 기술 = 494
14.2 운영체제 작업 = 494
14.2.1 응용 인터페이스 = 495
14.2.2 파일 네이밍 = 496
14.2.3 계층적 저장장치 관리 = 497
14.3 성능 문제 = 498
14.3.1 속도 = 498
14.3.2 신뢰성 = 499
14.3.3 비용 = 500
14.4 요약 = 503
연습문제 = 503
제5부 분산 시스템
제15장 네트워크 구조 (Network Structures) = 509
15.1 배경 = 511
15.2 동기 (Motivatiom) = 513
15.2.1 자원 공유 (Resource Sharing) = 513
15.2.2 연산 속도 향상 (Computation Speed-up) = 513
15.2.3 신뢰성 (Reliability) = 513
15.2.4 통신 (Communication) = 514
15.3 위상 (Topology) = 515
15.3.1 완전 연결 (Fully Connected) = 515
15.3.2 부분 연결 (Partially Connected) = 516
15.3.3 계층 (Hierarchy) 네트워크 = 517
15.3.4 성형 (Star) 네트워크 = 517
15.3.5 링 (Ring) 네트워크 = 518
15.3.6 다중 접근 버스 (Multiaccess Bus) 네트워크 = 519
15.3.7 혼성 (Hybrid) 네트워크 = 520
15.4 네트워크 형태 = 520
15.4.1 근거리 통신망 (LAN : Local-Area Networks) = 520
15.4.2 원거리 통신망 (WAN : Wide-Area Networks) = 522
15.5 통신 (Communication) = 523
15.5.1 네이밍과 이름 변환 (Naming and Name Resolution) = 524
15.5.2 라우팅 전략 (Routing Strategies) = 526
15.5.3 패킷 정책 = 528
15.5.4 연결 전략 (Connection Strategies) = 528
15.5.5 경쟁 (Contention) = 529
15.6 설계 전략 = 531
15.7 네트워킹 예 = 535
15.8 요약 = 537
연습문제 = 538
제16장 분산 시스템 구조 = 539
16.1 네트워크 운영체제 = 541
16.1.1 원격 로그인 = 541
16.1.2 원격 파일 전송 = 542
16.2 분산 운용체제 = 544
16.2.1 자료 이주 = 544
16.2.2 연산 이주 = 544
16.2.3 프로세스 이주 = 545
16.3 원격 서비스 = 546
16.3.1 원격 프로시저 호출 (PRC) = 546
16.3.2 스레드 (Threads) = 548
16.4 견고성 (Robustness) = 551
16.4.1 결함 탐지 = 552
16.4.2 재구성 = 553
16.4.3 결함 복구 = 553
16.5 설계시 고려사항 = 554
16.6 요약 = 556
연습문제 = 557
제17장 분산 파일 시스템 (Distributed File Systems) = 559
17.1 배경 = 562
17.2 네이밍과 투명성 (Naming and Transparency) = 563
17.2.1 네이밍 구조 (Naming Structure) = 564
17.2.2 네이밍 기법 (Naming Schemes) = 566
17.2.3 구현 기법 (Implementation Techniques) = 567
17.3 원격 파일 접근 (Remote File Access) = 568
17.3.1 기본 캐싱 기법 = 568
17.3.2 캐시 위치 = 569
17.3.3 캐시 갱신 전략 = 570
17.3.4 일관성 (Consistency) = 571
17.3.5 캐싱과 원격 서비스의 비교 = 572
17.4 상태 정보를 가진 서비스와 상태 정보가 없는 서비스 (Stateful Versus Stateless Service) = 573
17.5 파일 중복 (File Replication) = 575
17.6 시스템 예제 = 576
17.6.1 UNIX United = 576
17.6.2 Sun NFS (Network File System) = 580
17.6.3 Andrew = 588
17.6.4 Sprite = 593
17.6.5 Locus = 599
17.7 요약 = 606
연습문제 = 607
제18장 분산 조정 (Distributed Coordination) = 609
18.1 사건 순서화 (Event Ordering) = 611
18.1.1 사건 발생전 관계 (Happen-Before Relation) = 612
18.1.2 구현 (Implementation) = 613
18.2 상호 배제 (Mutual Exclusion) = 614
18.2.1 중앙 집중형 접근 (Centralized Approach) = 615
18.2.2 완전 분산형 접근 (Fully Distributed Approach) = 615
18.2.3 토큰 패싱 접근 (Token-Passing Approach) = 617
18.3 원자성 (Atomicity) = 618
18.3.1 2단계 승인 프로토콜 (The Two-Phase Commit Protocol) = 618
18.3.2 2PC에서 결합 처리 (Failure Handoing in 2PC) = 620
18.4 동시성 제어 (Concurrency Control) = 622
18.4.1 잠금 프로토콜 (Locking Protocols) = 622
18.4.2 타임스탬프 (Timestamping) = 625
18.5 교착 상태 처리 (Deadlock Handling) = 627
18.5.1 교착 상태 방지 (Deadlock Prevention) = 627
18.5.2 교착 상태 탐지 (Deadlock Detection) = 629
18.6 선출 알고리즘 (Election Algorithms) = 635
18.6.1 Bully 알고리즘 = 636
18.6.2 링 알고리즘 (Ring Algorithms) = 637
18.7 의견의 일치 (Reaching Agreement) = 638
18.7.1 신뢰성 없는 통신 (Unreliable Communications) = 639
18.7.2 고장 프로세스 (Faulty Processes) = 640
18.8 요약 = 641
연습문제 = 642
제6부 보호와 보안
제19장 보호 = 645
19.1 보호의 목표 = 647
19.2 보호의 영역 = 649
19.2.1 영역 구조 = 649
19.2.2 사례들 = 651
19.3 접근 행렬 = 654
19.4 접근 행렬의 구현 = 659
19.4.1 전역 테이블 = 659
19.4.2 객체에 대한 접근 리스트 = 659
19.4.3 영역에 대한 접근 리스트 = 659
19.4.4 잡김 키 기법 = 661
19.4.5 비교 = 661
19.5 접근 권한의 취소 = 662
19.6 권한 기반 시스템 = 664
19.6.1 Hydra = 664
19.6.2 캠브리지 CAP 시스템 = 666
19.7 언어 기반의 보호 = 667
19.8 요약 = 671
연습문제 = 671
제20장 보안 = 673
20.1 보안 문제 = 675
20.2 인증 = 677
20.2.1 패스워드 = 677
20.2.2 패스워드의 약점 = 677
20.2.3 암호화된 패스워드 = 679
20.3 한번만 사용되는 패스워드 (One Time Passwords) = 680
20.4 프로그램 위협 = 681
20.4.1 트로이 목미 (Trojan Horse) = 681
20.4.2 트랩문 (Trap Door) = 682
20.5 시스템 위협 = 682
20.5.1 벌레 (Worms) = 682
20.5.2 바이러스 (Viruses) = 685
20.6 위협 감시 = 687
20.7 암호화 (Encryption) = 689
20.8 컴퓨터 보안 분류 (Computer Security Classifications) = 691
20.9 보안의 모델 예 : Windows NT = 693
20.10 요약 = 695
연습문제 = 695
제21장 역사적 고찰 = 697
21.1 초기 시스템 = 699
21.2 Atlas = 706
21.3 XDS-940 = 707
21.4 THE = 708
21.5 RC 4000 = 709
21.6 CTSS = 710
21.7 MULTICS = 711
21.8 OS/360 = 711
21.9 UNIX = 713
21.10 Mach = 714
21.11 Linux = 716
21.12 Windows NT = 718
21.13 기타 시스템들 = 718
참고문헌 = 719
찾아보기 (Index) = 749