목차
제1장 운영체제의 개요
1.1 운영체제의 개념 = 24
1.1.1 운영체제의 목적 = 25
1.1.2 운영체제의 역할 = 25
1.1.3 운영체제의 관리 대상 = 26
1.1.4 운영체제의 발달 과정 = 28
1.2 운영체제의 종류 = 30
1.2.1 초기 운영체제 시스템 = 30
1.2.2 단순 모니터(상주 모니터) = 31
1.2.3 일괄처리 시스템 = 34
1.2.4 오프라인 시스템 = 35
1.2.5 대화식 또는 온라인 시스템 = 36
1.2.6 시분할 시스템 = 37
1.2.7 다중 프로그래밍 시스템 = 39
1.2.8 다중처리 시스템 = 41
1.2.9 실시간 시스템 = 42
1.2.10 분산 처리 시스템 = 43
1.3 관리자 관점에 따른 운영체제의 기능 = 45
1.3.1 자원 관지자의 관점 = 45
1.3.2 프로세스 관점 = 47
1.3.3 계층 구조 관점 = 48
1.4 운영체제 서비스 = 52
1.5 차세대 사용자 인터페이스 동향 = 55
1.5.1 사용자 인터페이스 = 55
1.5.2 사용자 중심의 인터페이스 기술 = 56
1.5.3 음성, 애니메이션, 동화상 사용 = 58
1.5.4 소리를 통한 정보 전달 = 60
1.5.5 애니메이션을 통한 정보 전달 = 63
제2장 입출력 방식과 운영체제의 관계
2.1 입출력 기능 = 68
2.1.1 블럭 단위 전송 기능 = 68
2.1.2 논리적, 물리적 특성의 일치 기능 = 69
2.1.3 자원의 공유 기능 = 70
2.2 입출력 하드웨어의 원리 = 71
2.2.1 입출력 장치 = 71
2.2.2 장치 제어기 = 71
2.3 입출력 소프트웨어의 원리 = 73
2.3.1 입출력 소프트웨어의 목적 = 73
2.3.2 인터럽트 핸들러 = 74
2.3.3 장치 구동기 = 74
2.3.4 장치 독립적인 운영체제 소프트웨어 = 75
2.3.5 사용자 수준 입출력 소프트웨어 = 76
2.4 입출력 방식 = 77
2.4.1 직접 입출력 = 77
2.4.2 간접 입출력 = 78
2.5 입출력 버퍼링 = 85
2.5.1 버퍼링의 개요 = 85
2.5.2 단일 버퍼링 = 86
2.5.3 이중 버퍼링 = 87
2.5.4 환형 버퍼링 = 89
2.5.5 스풀링 = 90
2.6 입출력과 인터럽트 = 92
2.6.1 개요 = 92
2.6.2 폴링과 인터럽트의 비교 = 92
2.6.3 인터럽트의 종류 = 93
2.6.4 인터럽트 구조 및 처리 = 95
2.7 트랩과 슈퍼바이저 호출 = 97
2.7.1 트랩 = 97
2.7.2 수퍼바이저 호출 = 98
2.8 운영체제의 구조 = 99
2.8.1 단일 구조 방식 = 99
2.8.1 계층 구조 방식 = 101
제3장 프로세스 관리
3.1 개요 = 108
3.2 프로세스의 정의 = 108
3.3 순차 프로세스의 의미 = 109
3.4 병행 프로세스의 의미 = 110
3.5 프로세스의 상태 = 112
3.6 프로세스의 상태 전환 = 114
3.7 프로세스 제어 블록 = 116
3.7.1 프로세스에 대한 PCB의 정보 = 116
3.7.2 PCB의 관리 = 117
3.8 디스패처와 문맥 교환 = 118
3.9 스케쥴링 큐 = 120
3.10 프로세스 스케쥴러의 종류 = 122
3.10.1 장기 스케쥴러(작업 스케쥴러) = 122
3.10.2 단기 스케쥴러(CPU 스케쥴러) = 123
3.10.3 중기 스케쥴러 = 124
3.11 프로세스의 중단과 재시작 = 125
3.12 프로세스간의 관계 = 128
3.12.1 독립적인 프로세스 = 128
3.12.2 유기적인 프로세스 = 128
3.13 프로세스에 대한 연산 = 129
3.13.1 프로세스의 생성 = 129
3.13.2 프로세스 종료 = 131
3.13.3 프로세스 중단 = 132
3.13.4 프로세스 재시작 = 132
3.13.5 우선순위의 변경 = 133
3.14 스레드 = 133
3.14.1 스레드의 개요 = 133
3.14.2 스레드 실행 상태의 변화 과정 = 137
3.14.3 스레드의 실행 방법에 따른 분류 = 138
3.14.4 다중 스레드형 프로그래밍을 위한 소프트웨어 모델 = 139
제4장 비동기 병행 프로세스
4.1 경쟁 조건 = 144
4.2 상호 배제 = 145
4.3 임계 영역 = 146
4.4 상호 배제 프리미티브 = 146
4.5 2개 프로세스의 상호 배제 = 147
4.5.1 소프트웨어적 해결 과정 = 148
4.5.2 데커 알고리즘 = 150
4.5.3 피터슨 알고리즘 = 151
4.6 N개 프로세스의 상호 배제 = 152
4.6.1 Lamport의 빵집 알고리즘 = 152
4.6.2 하드웨어 명령어를 이용한 N개 프로세스의 상호 배제 = 154
4.7 세마포어 = 155
4.7.1 세마포어를 이용한 상호 배제의 구현 = 156
4.7.2 세마포어를 이용한 동기화 = 157
4.7.3 세마포어를 이용한 생산자 소비자 문제 = 157
4.7.4 세마포어를 이용한 읽기 쓰기 문제 = 158
4.7.5 세마포어를 이용한 식사하는 철학자 문제 = 159
4.7.6 세마포어의 구현 = 160
4.7.7 세마포어의 잘못된 사용 = 162
4.8 언어 구조체 = 163
4.8.1 임계 구역 = 163
4.9 모니터 = 166
4.9.1 모니터를 이용한 자원 할당 = 168
4.9.2 모니터를 이용한 원형 버퍼(생산자-소비자) = 169
4.9.3 모니터를 이용한 읽기 쓰기 문제 모니터 = 171
4.9.4 모니터를 이용한 식사하는 철학자 = 173
4.10 경로 표현 = 174
4.11 메시지 전달 = 175
4.11.1 버퍼링 = 176
4.11.2 직접/간접 통신 = 177
4.11.3 원격 프로시쥬어 호출 = 180
제5장 교착 상태
5.1 개요 = 186
5.2 교착 상태의 정의 및 예 = 186
5.2.1 교착 상태의 정의 = 186
5.2.2 자원의 교착 상태의 예 = 187
5.2.3 스풀링 시스템에서의 교착 상태 = 188
5.3 무한 연기 = 189
5.4 자원의 종류 = 190
5.4.1 선점형 및 비선점형 자원 = 190
5.4.2 전용 및 공용 자원 = 191
5.4.3 재사용 및 소비 자원 = 191
5.5 시스템 모델 = 192
5.6 교착 상태의 네 가지 필요 조건 = 194
5.7 교착 상태의 연구 분야 = 195
5.8 교착 상태의 예방 = 197
5.8.1 점유와 대기 조건의 부정 = 197
5.8.2 비선점 조건의 부정 = 198
5.8.3 환형 대기 조건의 부정 = 199
5.8.4 상호 배제 조건 부정 = 200
5.9 교착 상태의 회피 = 200
5.9.1 안전 상태와 불안전 상태 = 200
5.9.2 안전 상태와 불안전 상태의 예 = 202
5.9.3 은행가 알고리즘 = 204
5.10 교착 상태의 발견 = 207
5.10.1 교착 상태 발견 알고리즘 = 208
5.10.2 자원 할당 그래프 = 208
5.10.3 자원 할당 그래프의 소거 = 209
5.10.4 자원 유형마다 여러 개의 자원이 있는 경우 교착 상태 발견 = 211
5.10.5 자원 유형마다 하나의 자원이 있는 경우 교착 상태 발견 = 213
5.11 교착 상태의 회복 = 214
5.11.1 프로세스 중지 = 214
5.11.2 자원 선점 = 215
5.11.3 교착 상태 회복의 문제점 = 216
5.12 교착 상태 해결을 위한 전체 시스템 설계 = 217
제6장 주기억 장치 관리
6.1 개요 = 222
6.2 주소 바인딩 = 223
6.3 동적 적재 = 226
6.4 동적 연결 = 227
6.5 절대 로더와 재배치 로더 = 227
6.6 링킹 로더와 링키지 에디터 = 228
6.7 기억 장치의 계층 구조 = 228
6.8 기억 장치 관리 정책 = 230
6.9 연속대 불연속 기억 장치 할당 = 231
6.10 단일 사용자 연속 기억 장치 할당 = 232
6.10.1 할당 방법 = 232
6.10.2 장단점 = 233
6.11 상주 모니터 = 233
6.11.1 기억 장치 할당 = 233
6.11.2 시스템의 보호 = 234
6.12 오버레이 기법 = 235
6.12.1 기억 장치 할당 방법 = 236
6.12.2 시스템 보호 = 237
6.12.3 오버레이의 장단점 = 238
6.13 교체 기법 = 238
6.13.1 기억 장치 할당 = 240
6.13.2 교체의 장단점 = 241
6.14 고정 분할 기억 장치 할당 = 241
6.14.1 절대 번역과 적재 = 242
6.14.2 재배치 번역과 적재 = 243
6.14.3 고정 분할 기억 장치 할당에서의 보호 = 243
6.14.4 고정 분할 기억 장치 할당에서의 단편화 = 244
6.14.5 고정 분할 기억 장치 할당의 장단점 = 246
6.15 가변 분할 기억 장치 할당 = 246
6.15.1 기억 장치 할당 전략 = 247
6.15.2 기억공간의 효율화 = 249
6.15.3 베이스 레지스터를 사용한 시스템 보호 = 254
6.15.4 가변 분할 기억 장치 할당의 장단점 = 255
제7장 가상 기억 장치의 구성
7.1 개요 = 258
7.2 동적 주소 변환 = 261
7.3 블록 사상 = 262
7.4 순수 페이징 기법 = 264
7.4.1 직접 사상 방법 = 267
7.4.2 연관 사상 방법 = 268
7.4.3 연관/직접 사상에 의한 페이징 방법 = 270
7.4.4 페이징 시스템의 공유 = 272
7.4.5 페이징 시스템의 예 = 273
7.5 세그멘테이션 기법 = 277
7.5.1 순수 세그멘테이션 = 277
7.5.2 직접 사상 방법 = 278
7.5.3 세그먼트 시스템에서의 공유 = 281
7.6 페이징/세그멘테이션 혼용 기법 = 282
7.6.1 동적 주소 변환 = 283
7.6.2 페이지/세그먼트 혼용 시스템에서의 공유 = 284
7.6.3 페이지/세그먼트 혼용 시스템의 예 = 285
제8장 가상 기억 장치의 관리
8.1 개요 = 290
8.2 가상 기억 장치 관리 기법 = 291
8.2.1 반입 정책 = 291
8.2.2 배치 정책 = 292
8.2.3 교체 정책 = 293
8.3 최적 교체 알고리즘 = 294
8.4 무작위 페이지 교체 알고리즘 = 294
8.5 선입 선출 교체 알고리즘 = 295
8.6 2차 기회 페이지 교체 알고리즘 = 296
8.7 LRU 교체 알고리즘 = 297
8.8 LFU 알고리즘 = 298
8.9 NUR 교체 알고리즘 = 299
8.10 워킹 세트 = 300
8.11 페이지 부재 빈도(PFF) = 300
8.12 스래싱 = 301
8.12.1 다중 프로그래밍의 정도 = 301
8.12.2 스래싱의 원인 = 303
8.12.3 구역성 = 304
8.13 워킹 세트 = 304
8.13.1 워킹 세트의 의미 = 304
8.13.2 워킹 세트의 주기억 장치 할당 = 306
8.14 페이지 교체시 고려 사항 = 307
8.14.1 전역 대 지역 교체 = 307
8.14.2 프리 페이징 = 309
8.14.3 페이지 크기 = 310
8.14.4 프로그램 구조 = 312
8.15 요구 페이징 기법 = 313
8.15.1 요구 페이징 기법 = 313
8.15.1 요구 페이징 성능 = 317
제9장 작업과 CPU 스케쥴링
9.1 개요 = 322
9.2 스케쥴링 구조 = 323
9.3 스케쥴링의 목적과 기준 = 324
9.3.1 스케쥴링의 목적 = 324
9.3.2 스케쥴링의 기준 = 325
9.3.3 성능의 기준 = 326
9.4 단계별 분류 = 328
9.4.1 상위수준 스케쥴링 = 328
9.4.2 중위수준 스케쥴링 = 328
9.4.3 하위수준 스케쥴링 = 328
9.5 방법별 분류 = 329
9.5.1 선점/비선점 스케쥴링 = 329
9.5.2 인터벌 타이머와 인터럽트용 클록 = 330
9.6 CPU 스케쥴링의 알고리즘별 분류 = 333
9.6.1 우선순위 스케쥴링-nonpreemptive = 333
9.6.2 기한부 스케쥴링-nonpreemptive = 334
9.6.3 FCFS 스케쥴링-nonpreemptive = 335
9.6.4 라운드 로빈 스케쥴링-preemptive = 336
9.6.5 SJF 스케쥴링-nonpreemptive = 337
9.6.6 SRT 스케쥴링-preemptive = 339
9.6.7 HRN 스케쥴링-nonpreemptive = 340
9.6.8 다단계 큐 스케쥴링 알고리즘-preemptive = 342
9.6.9 다단계 피드백 큐 스케쥴링 알고리즘-preemptive = 343
제10장 보조기억 장치와 디스크 스케쥴링
10.1 개요 = 350
10.2 기억 장치 속성 = 351
10.2.1 기억 매체 = 351
10.2.2 기억 장치 = 352
10.2.3 저장 장치의 선택 요인 및 평가 요소 = 352
10.3 자기 테이프 장치 = 353
10.4 자기 디스크 장치 = 355
10.4.1 자기 디스크 구조 = 355
10.4.2 디스크 장치 종류 = 357
10.4.3 디스크 인터리빙 = 358
10.4.4 디스크 공간 할당 = 360
10.4.5 블록 단위 입출력 = 360
10.4.6 자기 드럼 = 362
10.4.7 자기 코어 = 362
10.4.8 광 디스크 = 362
10.5 디스크 캐싱 = 363
10.5.1 캐시 기억 장치 = 363
10.5.2 디스크 캐시 = 364
10.5.3 RAM 디스크 = 364
10.6 장치 디렉토리 = 366
10.7 디스크 가용 공간 관리 = 366
10.7.1 비트 벡터 = 367
10.7.2 연결 리스트 = 367
10.7.3 그룹핑 = 368
10.7.4 카운팅 = 369
10.8 디스크 스케쥴링 기법 = 370
10.8.1 디스크 접근 = 372
10.8.2 FCFS 스케쥴링 = 373
10.8.3 SSTF 스케쥴링 = 374
10.8.4 SCAN 스케쥴링 = 375
10.8.5 C-SCAN 스케쥴링 = 376
10.8.6 N-단계 SCAN 스케쥴링 = 377
10.8.7 에션바흐 기법 = 378
10.8.8 SLTF 스케쥴링 = 378
10.9 실시간 처리 디스크 스케쥴링 알고리즘 = 380
10.9.1 EDF 스케쥴링 = 380
10.9.2 P-SCAN 스케쥴링 = 380
10.9.3 FD-SCAN 스케쥴링 = 381
10.9.4 SSEDO 스케쥴링 = 381
10.9.5 SSEDV 스케쥴링 = 382
10.9.6 Scan-EDF 스케쥴링 = 382
10.9.9 GSS 스케쥴링 = 383
제11장 화일 시스템
11.1 화일 시스템의 개요 = 388
11.1.1 화일의 개념 = 388
11.1.2 디렉토리 개념 = 390
11.2 화일 조작 = 392
11.2.1 화일 생성 = 393
11.2.2 화일 기록 = 393
11.2.3 화일 판독 = 393
11.2.4 화일 위치 재설정 = 394
11.2.5 화일 검색 = 394
11.2.6 화일 삭제 = 394
11.3 화일 시스템의 기능 = 395
11.3.1 화일 시스템 = 395
11.3.2 화일 시스템의 기능 = 395
11.4 데이타 계층 구조 = 396
11.5 블록킹 = 397
11.6 화일의 구조 및 접근 방법 = 399
11.6.1 화일의 구조 = 399
11.6.2 화일 접근 방법 = 402
11.7 화일 공간의 할당과 회수 방법 = 405
11.7.1 연속 할당 = 405
11.7.2 불연속 할당 = 407
11.8 화일의 보호 = 411
11.8.1 접근 제어 행렬 = 412
11.8.2 화일의 이름 명명 = 413
11.8.3 암호 = 413
11.8.4 해독화 = 414
11.9 화일의 백업과 복구 = 415
11.9.1 백업의 필요성 = 415
11.9.2 데이타 보존 방법 = 415
11.10 디렉토리 시스템 = 416
11.10.1 1단계 구조 디렉토리 = 417
11.10.2 2단계 구조 디렉토리 = 418
11.10.3 트리 구조 디렉토리 = 419
11.10.4 비주기 구조 디렉토리 = 421
11.10.5 일반적 그래프 디렉토리 = 422
제12장 보호
12.1 보호의 개념 = 426
12.2 보호의 기법과 정책 = 427
12.3 보호의 영역 = 428
12.4 접근 행렬에 의한 보호 기법 = 429
12.4.1 전역 테이블 = 430
12.4.2 접근 제어 리스트 = 431
12.4.3 권한 리스트 = 432
12.4.4 록-키 기법 = 434
12.4.5 각 기법의 비교 = 434
12.5 운영체제 보안 = 436
12.5.1 보안 = 436
12.5.2 위협을 줄이는 방법 = 437
12.6 운영체제 침투를 위한 보안 위협 = 440
12.6.1 위협의 요구 조건 = 441
12.6.2 위협의 형태 = 442
12.6.3 수동적인 위협 = 443
12.6.4 능동적인 위협 = 444
12.7 인증과 네트워크 보안성 = 446
12.7.1 인증의 필요성 = 446
12.7.2 인증의 기본 개념 = 448
12.7.3 인증의 목적 및 종류 = 449
12.7.4 인증을 위해 사용되는 원칙 = 450
12.8 보안 정책 = 450
12.9 보안 기법 = 452
12.9.1 암호학 = 452
12.9.2 키 관리 = 459
12.9.3 여분 정보 삽입 기법 = 459
12.9.4 인증 교환 기법 = 460
12.9.5 디지털 서명 기법 = 461
12.9.6 접근 제어 기법 = 462
12.9.7 데이타 무결성 기법 = 463
12.9.8 경로 제어 기법 = 463
12.9.9 공증 기법 = 463
12.9.10 물리적 보안 유지와 직원의 보안 관리 = 463
12.9.11 하드웨어와 소프트웨어의 신임성 = 464
제13장 다중처리 시스템
13.1 개요 = 468
13.2 병렬 처리 컴퓨터의 발전 과정 = 469
13.2.1 병렬 처리 컴퓨터의 필요성 = 469
13.2.2 병렬 처리 시스템의 발전 단계 = 470
13.3 Flyne 에 의한 컴퓨터의 분류 = 473
13.3.1 각 구조의 개념 = 473
13.3.2 MIMD 구조 = 475
13.4 자료와 명령어의 흐름에 따른 병렬 처리 시스템 = 477
13.4.1 종류 및 특성 = 477
13.4.2 파이프라인 프로세서 = 478
13.4.3 벡터 프로세서 = 481
13.4.4 어레이 프로세서 = 482
13.4.5 연관 기억 장치 프로세서 = 485
13.4.6 시스톨릭 구조 = 486
13.4.7 데이타 플로우 프로세서 = 486
13.4.8 Reduction 구조 = 488
13.4.9 Wavefront 어레이 구조 = 488
13.5 기억 장치 결합도에 따른 분류 = 489
13.5.1 약결합 다중처리기 = 489
13.5.2 강결합 다중처리기 = 490
13.5.3 시스템의 분류 = 491
13.6 연결 방식에 따른 분류 = 491
13.6.1 시분할 및 공유 버스 = 492
13.6.2 크로스바 교환 행렬 = 493
13.6.3 다중 입출구 기억 장치 = 494
13.6.4 하이퍼큐브 = 497
13.7 다중처리 시스템의 운영체제 형태에 따른 분류 = 498
13.7.1 주종 관계 = 499
13.7.2 분리 수행 = 500
13.7.3 대칭적 처리 = 501
13.8 병렬 처리를 위한 병렬 언어의 분류 = 502
13.8.1 병렬성의 관점 = 503
13.8.2 통신 방법 및 동기화 기법 = 506
13.8.3 고성능 병렬 프로그래밍 언어들 = 509
13.9 병렬 처리 컴퓨터의 응용 분야 = 520
13.9.1 예고에 사용되는 모델링과 시뮬레이션 = 521
13.9.2 공업디자인 및 자동화 = 521
13.9.3 에너지 자원 탐사 = 522
13.9.4 의학·군사 및 기초연구 = 523
제14장 분산 처리 시스템
14.1 개요 = 526
14.2 분산 처리와 관련된 용어들 = 527
14.3 분산 처리의 개발 동기 = 529
14.3.1 자원 공유 = 529
14.3.2 연산 속도 향상 = 529
14.3.3 신뢰성 = 530
14.3.4 통신 = 530
14.4 분산 처리 시스템의 범위 = 531
14.4.1 분산 시스템의 정의 = 531
14.4.2 하드웨어 구성의 분산화 = 533
14.4.3 제어 구성의 분산화 = 534
14.4.4 데이타 구성의 분산화 = 534
14.4.5 분산 처리 시스템의 특성 = 535
14.5 분산 처리 시스템의 형태 = 536
14.5.1 프로세스 모델에 따라 = 536
14.5.2 위상에 따른 분류 = 539
14.5.3 분산 범위에 따른 분류 = 547
14.5.4 운영체제 형태에 따른 분류 = 551
14.6 분산 시스템의 계층 구조 = 556
14.6.1 시스템의 계층 구조 = 556
14.6.2 각 계층의 특성 = 557
14.7 분산 시스템의 설계 = 560
14.7.1 프로세스 지향 모델 = 560
14.7.2 객체 지향 모델 = 561
14.8 통신 네트워크 설계시 고려사항 = 562
14.8.1 라우팅 전략 = 563
14.8.2 연결 전략 = 564
14.8.3 경쟁 = 565
14.8.4 설계 전략 = 568
제15장 성능 평가
15.1 개요 = 572
15.2 성능 평가의 목적 = 573
15.3 성능 감시와 성능 평가의 필요성 = 574
15.4 성능 평가를 하는 기본 요소 = 575
15.4.1 서비스 질에 따른 성능 평가의 기본 요소 = 575
15.4.2 시간적인 요소를 포함한 평가 기준 = 576
15.5 성능 평가의 방법들 = 578
15.5.1 측정 방법 = 579
15.5.2 모델링 방법 = 584
제16장 유닉스 운영체제
16.1 개요 = 590
16.2 유닉스 시스템의 내부 구조 = 591
16.2.1 커널 기능 = 592
16.2.2 프로세스와 화일 = 593
16.2.3 시스템 호출 = 594
16.2.4 사용자 모드와 커널 모드 = 595
16.2.5 인터럽트 처리 = 597
16.2.6 화일 시스템 구조 = 600
16.3 프로세스 관리 = 605
16.3.1 첫 번째 프로세스 =605
16.3.2 프로세스 계층 구조 = 606
16.3.3 프로세스 상태 = 607
16.3.4 프로세스 테이블 = 609
16.3.5 CPU 스케쥴러 = 610
16.3.6 스케쥴링 규칙 = 611
16.3.7 프로세스 연산 = 612
16.4 기억 장치 관리 = 618
16.4.1 기억 장치 페이지 = 618
16.4.2 페이지 테이블과 영역 = 619
16.4.3 실행 화일 적재: exec() = 621
16.5 화일 입출력 시스템 = 626
16.5.1 입출력 객체 = 626
16.5.2 입출력 버퍼링 = 627
16.5.3 일반 화일 입력 = 629
16.5.4 디렉토리 화일 입출력 = 634
16.5.5 화일 시스템 마운팅 = 635
16.5.6 특수 화일 입출력 = 637
16.5.7 터미널 입출력 = 641
16.6 프로세스간 통신 = 644
16.6.1 메시지 교환 = 644
16.6.2 파이프 = 646
16.6.3 소켓 = 651
INDEX = 655
참고문헌 = 665