제1장 컴퓨터 시스템의 개요 1.1 기본개념 ... 1 1.1.1 프로세스 ... 1 1.1.2 기억 장치 ... 5 1.1.3 입출력과 인터럽트 ... 9 1.1.4 UNIX ... 11 1.2 운영 체제의 분류 ... 15 1.2.1 범용 운영 체제 ... 15 1.2.2 특수 목적용 운영 체제 ... 25 연습문제 ... 28 제2장 운영 체제의 개요 2.1 운영 체제의 요소 ... 30 2.2 <B><FONT color ... #0000 2.3 운영 체제의 기능 ... 32 2.3.1 초기 설정 기능(또는 부트스트래핑 기능) ... 32 2.3.2 효율적인 자원 관리 기능 ... 33 2.3.3 편리한 인터페이스 기능 ... 33 2.3.4 신뢰성(reliability) 기능 ... 35 2.3.5 이식성(portability) 기능 ... 35 2.4 자원 관리자 관점의 운영 체제 ... 36 2.5 운영 체제의 계층 구조 ... 39 연습문제 ... 42 제3장 프로세스 개요 ... 43 3.1 프로세스 개념 ... 43 3.1.1 프로세스란? ... 43 3.1.2 프로그램과 프로세스 ... 43 3.1.3 운영 체제 프로세스와 사용자 프로세스 ... 44 3.1.4 CPU와 프로세스들 ... 45 3.1.5 병행(concurrent) 프로세스 ... 45 3.2 프로세스의 상태 ... 47 3.2.1 프로세스의 상태 ... 47 3.2.2 프로세스 관리를 위한 자료 구조(PCB) ... 49 3.2.3 PCB의 관리 ... 51 3.3 프로세스의 상태 변환 ... 52 3.3.1 작업 스케줄러에 의한 상태 변환 ... 53 3.3.2 프로세스 스케줄러에 의한 상태 변환 ... 53 3.3.3 대기 상태의 세분화 ... 56 3.3.4 준비 상태의 세분화 ... 58 3.4 문맥 교환(context switching) ... 59 3.5 프로세스의 생성 ... 62 3.6 프로세스 종료 ... 65 연습문제 ... 67 제4장 프로세스 스케줄링 4.1 스케줄링 목적 ... 69 4.2 스케줄링의 원리 ... 70 4.2.1 비선점(non-preemption) ... 70 4.2.2 선점(preemption) 방식 ... 73 4.3 작업 스케줄링(Job scheduling) ... 77 4.3.1 개요 ... 77 4.3.2 작업 스케줄링 ... 79 4.3.3 FCFS 스케줄링의 예 ... 81 4.3.4 SJF 스케줄링의 예 ... 82 4.4 프로세스 스케줄링 ... 83 4.4.1 중간 단계 스케줄러 ... 84 4.4.2 프로세스 스레줄링 ... 85 4.4.3 라운드 로빈 스케줄링의 예 ... 86 연습문제 ... 91 제5장 교착 상태(deadlock) 5.1 교착 상태 개념 ... 94 5.1.1 자원의 요구와 할당에 따른 교착 상태 ... 94 5.1.2 자원 유형에 따른 교착 상태 ... 96 5.1.3 자원 할당 그래프 ... 98 5.1.4 교착상태 해결 방안 ... 102 5.2 교착 상태 예방(deadlock prevention) ... 103 5.2.1 교착 상태의 발생 4가지 필요조건 ... 103 5.2.2 교착 상태 예방책 ... 104 5.3 교착 상태의 회피 ... 107 5.3.1 안전 상태와 불안전 상태 ... 107 5.3.2 은행원 알고리즘(banker's algorithm) ... 110 5.3.3 교착 상태 회피의 장단점 ... 115 5.4 교착 상태의 탐지와 회복 ... 115 5.4.1 교착 상태 탐지(deadlock detection) ... 115 5.4.2 교착 상태의 회복(deadlock recovery) ... 119 5.4.3 교착 상태 탐지 및 회복의 장단점 ... 122 연습문제 ... 123 제6장 기억 장치 관리 6.1 기억 장치 개요 ... 125 6.2 기억 장소 배당 방법 ... 126 6.2.1 산재 배당 방식(scatter allocation) ... 127 6.2.2 연속 배당 방식(contiguous allocation) ... 127 6.3 단일 사용자 기억 장소 배당 방식 ... 128 6.4 다중 사용자 기억 장소 배당 방식 ... 129 6.5 고정 분할 기억 장소 배당 방식 ... 131 6.5.1 고정 분할 기억 장소의 운영 방식 ... 133 6.6 동적 분할 기억 장소 배당 방식 ... 138 6.6.1 동적 분할의 자료구조 ... 138 6.6.2 동적 분할의 기억 장소 배당 기법 ... 140 6.6.3 동적 분할의 기억 장소 회수 ... 142 6.7 기억 장소 단편화의 해결 방안 ... 142 6.71 기억 장소의 압축(compaction) ... 142 6.7.2 가상기억 장치 ... 144 6.8 연속 배당 방식의 문제점 ... 144 연습문제 ... 146 제7장 가상 기억 장치(Virtual Memory) 7.1 가상 기억 장치 개요 ... 147 7.1.1 가상 개념 ... 147 7.1.2 가상 기억 장치 개념 ... 148 7.2 동적 재배치(dynamic relocation) ... 150 7.3 가상 기억 장치의 필요성 ... 152 7.3.1 프로세스를 기억 장소에 산재 배당시키기 위해 ... 153 7.3.2 오버레이(overlay) 문제를 자동 해결하기 위해 ... 154 7.3.3 요구 페이지 기법에 의한 주기억 장소 이용률을 높이기 위하여 ... 156 7.3.4 기억 장소 단편화를 제거하기 위하여 ... 156 7.3.5 페이지를 공유할 수 있기 때문에 ... 157 7.4 페이징 기법의 동적 주소 변환 ... 159 7.4.1 가상 주소 형식과 페이지 맵 테이블 ... 159 7.4.2 동적 주소 변환 과정 ... 161 7.4.3 고속의 동적 주소 변환 ... 164 7.5 페이지 프레임 맵 테이블에 의한 주기억 장소의 효율적인 관리 ... 167 7.5.1 PMT와 PFMT 그리고 FMT 간의 관계 ... 169 7.5.2 페이지 부재(page fault) 처리 ... 171 7.6 페이징 기법의 장단점 ... 172 7.7 세그먼테이션(segmentation) 기법 ... 173 7.7.1 세그먼테이션 기법의 개요 ... 174 7.7.2 동적 주소 변환 ... 174 7.8 페이징/세그먼테이션 혼합 기법 ... 179 연습문제 ... 181 제8장 가상 기억 장치 관리 8.1 가상 기억 장치 관리 개요 ... 183 8.2 프로그램의 참조 국부성 ... 185 8.3 교체 정책 ... 187 8.3.1 페이지 교체 알고리즘 ... 188 8.3.2 전역 대 지역 교체 ... 194 8.4 할당 정책 ... 195 8.4.1 스래싱(thrashing) ... 195 8.4.2 페이지 부재 빈도(Page Fault Frequency) ... 198 8.4.3 작업 세트(working set) ... 199 8.5 그 외 고려 사항 ... 201 8.5.1 프리페이징(Prepaging) ... 201 8.5.2 페이지 고정(Page Fix) ... 202 8.5.3 페이지 크기 ... 202 연습문제 ... 204 제9장 디스크 관리 9.1 디스크 관리 개요 ... 205 9.2 디스크의 구조 ... 206 9.2.1 디스크의 종류 ... 207 9.2.2 장치 디렉토리 ... 209 9.3 디스크 제어기와 구동기 ... 209 9.3.1 디스크 제어기의 기능 ... 211 9.3.2 디스크 구동기의 기능 ... 211 9.4 디스크 입출력 ... 212 9.4.1 디스크 인터리빙(interleaving) ... 213 9.4.2 디스크 캐시 ... 214 9.4.3 RAM 디스크 ... 215 9.5 디스크 공간 관리 ... 217 9.5.1 디스크의 사용 가능한 공간 관리 ... 217 9.5.2 디스크 공간의 할당 방식 ... 220 9.6 디스크 스케줄링 기법 ... 229 9.6.1 FCFS 스케줄링 ... 230 9.6.2 최소 탐색 우선(SSTF) 스케줄링 ... 232 9.6.3 SCAN 스케줄링 ... 233 9.6.4 C-SCAN(circular-scan) 스케줄링 ... 235 연습문제 ... 237 제10장 파일 시스템 10.1 파일 시스템의 개요 ... 239 10.2 파일의 특성 ... 241 10.2.1 자료나 프로그램을 파일로 구성하는 이유 ... 241 10.2.2 파일 형식 ... 241 10.2.3 파일 속성 ... 242 10.2.4 디렉토리 파일 ... 244 10.2.5 특수 파일(special file) ... 246 10.3 파일의 접근 방법(Access Methods) ... 247 10.3.1 순차 접근에 적합한 순차 파일 ... 247 10.3.2 직접 접근에 적합한 직접 파일 ... 248 10.3.3 색인 접근을 사용하는 색인 순차 파일 ... 250 10.4 파일 조작 ... 251 10.4.1 UNIX에서의 파일 처리 과정 ... 251 10.4.2 UNIX에서의 파일 공유 처리 ... 253 10.4.3 파일 조작에 관련된 시스템 호출 ... 255 10.4.4 파일 조작 과정 ... 258 10.5 UNIX 파일 시스템의 구조 ... 259 10.5.1 트리 구조(tree structure) ... 259 10.5.2 파일 시스템의 구조 ... 262 10.5.3 수퍼 블록 ... 263 10.6 파일 보호 ... 266 10.6.1 접근 제어 정렬 (access control matrix) ... 266 10.6.2 파일 이름 부여(file naming) ... 267 10.6.3 암호(password) ... 267 10.6.4 암호화/해독화 ... 268 10.7 입출력 시스템 ... 268 10.7.1 입출력 제어기(input/output controller) ... 268 10.7.2 장치 구동기(device driver) ... 269 10.7.3 입출력 요청의 처리 과정 ... 270 연습문제 ... 272 제11장 병행 프로세스 11.1 병행 프로세스의 기본 개념 ... 274 11.1.1 병행성(concurrency) ... 274 11.1.2 병행 처리가 필요한 이유 ... 275 11.1.3 결정적(determinate) 프로세스 ... 276 11.1.4 공유 자원의 유형에 따른 병행 처리 방법 ... 277 11.2 프로세스 간의 동기화 ... 278 11.2.1 경쟁자 관계에서의 동기화 : 상호 배제 ... 278 11.2.2 생산자(producer)/소비자(consumer) 관계의 동기화 ... 280 11.3 임계 영역(critical section) ... 283 11.3.1 임계 영역이 필요한 이유 ... 284 11.3.2 임계영역 문제의 고려사항들 ... 284 11.4 상호 배제 ... 286 11.5 Test-and-Set 명령에 의한 상호 배제 ... 288 11.6 세마포어(semaphore) ... 290 11.7 식사하는 철학자 문제 ... 291 11.8 메시지 전송(message passing) ... 294 11.9 모니터(monitor) ... 295 연습문제 ... 298 기출문제 ... 299 찾아보기 ... 363