운영체제의 개념과 동작원리를 차근차근 명쾌하게 다룬 OS 입문서
▶ 누구를 위한 책인가?
이 책은 운영체제에 대한 지식을 쌓고자 하는 컴퓨터 관련 학과 3~4학년 학생이나 대학원생을 주 대상으로 한다. 명쾌한 개념 설명과 쉽게 이해할 수 있는 그림과 도식화로 학생을 물론 실무에서 일하는 운영체제 설계자나 시스템 프로그래머에서 유용한 참고서가 될 것이다.
▶ 무엇을 다루는가?
• 1~2장 : 운영체제의 개념·역사·환경·구성요소와 목표 | 하드웨어 구성 요소 | 프로세서 | 캐싱과 버퍼링 | 소프트웨어 개롼 | 응용 프로그래밍 인터페이스 | 컴파일링·링킹·로딩 | 펌웨어 | 미들웨어
• 3~4장 : 프로세스 생명 주기 | 프로세스 관리 | 인터럽트 | 프로세스 간 통신 | 스레드 정의 | 스레드 생명 주기 | 스레드 연산 | 스레딩 모델 | POSIX와 Pthread | 리눅스·윈도우 XP 스레드 | 자바 스레드
• 5~6장 : 상호 배제 | 상호 배제 프리미티브 구현 | 상호 배제 문제 해결책(소프트웨어·하드웨어) | 세마포어 구현 | 모니터 | 자바 모니터 | 자바 멀티스레딩 사례 연구
• 7~8장 : 자원의 개념 | 교착 상태 성립 조건 | 교착 상태 회피·탐지·복구 | 스케줄링 개념·목적·기준 | 스케줄링 알고리즘 | 데드라인 스케줄링 | 실시간 스케줄링 | 자바 스레드 스케줄링
• 9장~10장 : 메모리 구성·계층 | 메모리 관리 전략 | 단일 사용자 연속 메모리 할당 | 메모리 스왑핑 | 고정/가변 파티션 멀티프로그래밍 | 가상 메모리 개념 | 블록 맵핑 | 페이징 | 세그먼테이션
• 11장 : 지역성 | 요구·예측 페이징 | 페이지 교체 전략 | 작업 집합 모델 | 페이지 폴트 빈도 페이지 교체 | 페이지 해제 | 페이지 크기 | 페이징에서의 프로그램 동작 | 전역/지역 페이지 교체 | 리눅스 페이지 교체
• 12~13장 : 디스크 스케줄링 전략 | 캐싱과 버퍼링 | 디스크 성능 기술 | RAID 개념과 수준 | 파일 접근 제어 | 파일·파일시스템 | 데이터 접근 기술 | 데이터 무결성 | 파일 서버와 분산 시스템 | 데이터베이스 시스템
• 14~15장 : 분산 시스템 | 분산 운영체제 | 분산 시스템에서의 동기화·상호배제·교착 상태 | 암호 기법·인증 | 접근 제어 | 보안 위협 | 보안 통신 프로토콜 | 공격 예방과 보안 해결책 | 키 합의 프로토콜 | 공개키 기반 구조·인증서·인증기관
• PDF 제공 | 16장. 리눅스 사례 연구 | 용어해설 | 웹 자료 | 인용 자료
부/장별 내용 요약
■PART 01 | 하드웨어, 소프트웨어, 운영체제 소개
1장. 운영체제 소개
운영체제(OS)의 정의, 20세기 후반까지 운영체제 발전사와 함께 운영체제가 어떻게 응용 프로그램 개발 플랫폼 역할을 하는지 살펴본다. 운영체제의 핵심 구성 요소와 주요 목표를 보여주고, 여러 운영체제 아키텍처를 설명한다.
2장. 하드웨어와 소프트웨어 개념
운영체제가 관리하는 하드웨어와 소프트웨어 자원에 대해 개괄적으로 살펴본다. 이 장에서는 하드웨어 설계 동향이 운영체제 설계에 미치는 영향, 반대로 운영체제의 변화가 하드웨어에 미치는 영향을 살펴본다. 고급 언어, 구조적 프로그래밍, 객체지향 프로그래밍, 응용 프로그래밍 인터페이스 등 중요한 소프트웨어 관련 개념도 살펴본다.
■PART 02 | 프로세스와 스레드
3장. 프로세스 개념
프로세스의 근본적인 개념을 정의하고, 운영체제의 기본과 프로세스 생명 주기에 대해 다룬다. 특히 프로세스를 프로세스 제어 블록 혹은 프로세스 기술자로 나타낼 때는 운영체제에서 자료구조의 중요성에 중점을 두어 논의한다. 멀티 프로그래밍을 다룰 때는 프로세스 실행 일시 정지와 문맥 교환을 소개한다. 인터럽트 방식과 인터럽트 분류, 시그널과 메시지 전달을 이용한 프로세스간 통신을 설명한다. 마지막으로 유닉스 프로세스에 대한 사례 연구를 제공한다.
4장. 스레드 개념
스레드 개념과 프로세스와의 관계를 살펴보고, 스레드 생명 주기와 여러 스레드 상태에서 어떤 변화가 일어나는지 논의한다. 사용자 수준 스레드, 커널 수준 스레드, 그 조합 등 다양한 스레딩 아키텍처 모델을 다룬다. 또한 스레드 신호 전달 및 스레드 종료 등 스레드를 구현할 때 고려해야 할 점에 관해 설명한다. 마지막으로 리눅스, 윈도우XP, 자바 스레딩 구현을 살펴본다.
5장. 비동기식 병행 실행
병행 프로세스와 병행 스레드를 동기화할 때 해결해야 할 문제를 살펴본다. 임계 영역의 의미와 상호 배제 문제의 해결책으로 임계 영역의 접근하지 못하게 하는 메커니즘을 소개한다. 또한 상호 배제 알고리즘을 쉽게 구현하도록 돕는 하드웨어 메커니즘도 소개한다. 마지막으로 상호 배제와 스레드 동기화를 위한 고급 메커니즘인 세마포어를 소개한다.
6장. 병행 프로그래밍
고수준 상호 배제 구조인 모니터의 개념을 설명하고, 모니터가 정보 은닉을 돕는 방법, 모니터 조건 변수가 전통적인 변수와 다른 점을 살펴본다. 간단한 모니터를 사용해 배타적으로 접근해야 하는 자원에 대한 접근을 통제하는 방법을 살펴본다. 또한 두 가지 고전적인 문제인 원형 버퍼와 리더/라이터 문제를 논의한다.
7장. 교착 상태와 무기한 연기
교착 상태의 문제와 교착 상태에 관한 네 가지 주요 연구 주제인 교착 상태 방지, 회피, 탐지 그리고 복구에 관해 논의한다. 또한 교착 상태와 연관이 많은 무기한 연기도 알아본다. 다익스트라의 은행원 알고리즘을 사용한 교착 상태 회피 방법을 소개하고, 은행원 알고리즘의 약점에 대해서도 논의한다. 자원 할당 그래프 소거를 사용한 교착 상태 탐지 방법을 설명한 후 마지막으로 현재와 향후 시스템에서 교착 상태 관련 전략을 논의한다.
8장. 프로세서 스케줄링
프로세스와 스레드에 프로세서 시간을 할당하는 개념과 알고리즘을 논의하고, 스케줄링 수준과 목적, 기준 등을 살펴본다. 선점 및 비선점 스케줄링 방식을 비교하고 스케줄링 알고리즘에서 우선순위와 퀀텀(유한 크기의 프로세서 시간 할당량)을 주의해서 설정하는 이유를 설명한다. 또한 몇 가지 고전적, 현대적인 스케줄링 알고리즘을 살펴본다.
자바 스레드 스케줄링과 소프트 실시간 스케줄링, 하드 실시간 스케줄링, 데드라인 스케줄링에 대해서도 논한다.
■PART 03 | 실제 메모리와 가상 메모리
9장. 실제 메모리 관리와 구성
운영체제가 실제 메모리를 어떻게 구성하는지, 물리적 메모리 자원을 어떻게 관리해 왔는지 그 역사를 간략하게 정리한다. 캐시와 메인 메모리, 2차 저장소로 이루어지는 메모리 분류 체계와 세 가지 메모리 관리 전략과 연속/비연속 메모리 할당 방식에 대해 설명한다. 또한 고정 파티션 멀티프로그래밍에서 변동 파티션 멀티프로그래밍으로 발전해온 과정, 메모리 단편화와 이를 줄이기 위한 메모리 압축, 병합에 대해서도 살펴본다. 메모리 배치 전략과 메모리 스와핑을 통한 멀티프로그래밍에 대해서도 논한다.
10장. 가상 메모리 구성
기본적인 가상 메모리 개념과 가상 메모리를 지원하는 하드웨어 기능에 대해 논의한다. 가상 메모리 구성의 핵심적인 접근법인 페이징과 세그먼테이션에 대해 설명하고, 각각의 장단점을 분석한다. 직접 맵핑에 의해 세그먼테이션 주소 변환, 세그먼테이션 시스템에서의 공유, 세그먼테이션 시스템에 대한 보호와 제어 문제를 다룬다. 또한 세그먼테이션/페이징 조합 시스템에 대해 설명하고, 동적 주소 변환과 공유, 보호의 문제에 대해서도 다룬다. 마지막으로 잘 알려진 IA?32 인텔 아키텍처의 가상 메모리 구현에 대해 공부한다.
11장. 가상 메모리 관리
가상 메모리 시스템에서 메모리 관리에 대해 논의한다. 지역성 현상을 시간적, 공간적 관점에서 살펴보고, 페이징 시스템의 성능을 최적화할 수 있는 페이지 교체 전략에 관해 집중적으로 살펴본다. 페이징 시스템에서 프로그램 실행에 관한 관찰, 분석, 개선 프레임워크를 제공하는 Denning의 작업 집합 모델을 통해 프로그램의 동작 방식도 논의한다. 또한 자발적인 페이지 반환 가능성에 대해서도 논의한다. 작은 페이지와 큰 페이지에 관한 논쟁에 대해 그리고 페이징을 위해 프로그램이 어떻게 동작하는가도 살펴본다. 마지막으로 리눅스 페이지 교체 방법을 살펴보고 전체적/지역적 페이지 교체 전략을 논의한다.
■PART 04 | 2차 저장소, 파일, 데이터베이스
12장. 디스크 성능 최적화
무빙 헤드 디스크 저장소의 특징을 알아보고, 운영체제 설계자가 프로세스에 더 나은 서비스를 제공하기 위해 이 장치를 어떻게 관리하는지 살펴본다. 또한 디스크 요청을 재정렬해 처리량을 높이고, 응답 시간을 줄이고, 응답 시간의 변량을 줄임으로써 디스크의 성능을 최적화하는 방법에 관해서도 설명한다. 또한 운영체제가 디스크의 데이터를 재구성하고 버퍼와 캐시를 사용해 성능을 향상하는 방법을 논의한다. 마지막으로 한꺼번에 여러 디스크를 사용해 서비스함으로써 디스크 접근 시간을 개선하고 장애 내구성을 증진하는 RAID도 살펴본다.
13장. 파일과 데이터베이스 시스템
데이터 계층, 파일, 파일 시스템, 디렉토리, 링크, 메타데이터, 마운팅 등 데이터와 관련된 주요 개념을 알아본다. 연속, 직접, 색인 순차, 파티션 방식 등 다양한 파일 구성을 설명한다. 또한 연속 파일 할당, 연결 리스트를 사용한 불연속 파일 할당, 테이블을 사용한 불연속 파일 할당, 색인을 사용한 불연속 파일 할당 등 다양한 파일 할당 기술을 살펴본다. 사용자 카테고리와 접근 제어 매트릭스에 의한 파일 접근 제어도 설명한다. 기본적인 접근 방식, 큐잉 접근 방식, 예측 버퍼링과 메모리 맵 파일을 통한 데이터 접근 기술을 살펴본다. 데이터의 무결성을 보장하는 기술과 파일 서버와 분산 시스템에 대해 설명한다. 마지막으로 데이터베이스 시스템의 개념과 장점을 분석하며, 데이터 접근, 관계 데이터베이스 모델과 이를 지원하는 운영체제의 기능에 대해 살펴본다.
■PART 05 | 2차 저장소, 파일, 데이터베이스
14장. 분산 시스템 소개
분산 운영체제에 대한 소개로 시작하여 성능, 규모확장성, 연결성, 보안, 신뢰성, 장애 내구성, 투명성 등 분산 시스템의 속성을 설명한다. 특히 네트워크 운영체제와 분산 운영체제를 비교한다. 분산 시스템에서의 통신과 원격 프로시저 호출, RMI, CORBA, 마이크로소프트의DCOM 등의 미들웨어 기술을 살펴보고, 분산 시스템에서의 프로세스 이동과 동기화, 상호 배제를 살펴본다. 또한 공유 메모리가 없을 때의 상호 배제, Agrawala와 Ricart의 분산 상호 배제 알고리즘에 대해서도 살펴본다. 분산 시스템의 교착 상태, 특히 교착 상태 방지와 교착 상태 탐지에 초점을 두어 설명한다.
■PART 06 | 보안
15장. 보안
컴퓨터와 네트워크 보안에 대한 일반적인 소개와 비밀 키, 공개 키 암호, 잘 알려진 RSA와 PGP 공개 키 암호 설계 등을 설명한다. 안전한 시스템을 만드는 인증 기술의 역할과 종류를 살펴본다. 또한 접근 제어와 관련하여 접근 권한, 보호 도메인, 접근 제어 모델, 접근 제어 정책, 접근 제어 메커니즘을 살펴본다. 이제까지 시도된 여러 가지 보안 공격을 살펴보고, 전자상거래의 필수 요소인 디지털 서명과 디지털 증명서, 인증기관에 대해 살펴본다. 독점적인 솔루션과 오픈 소스 방식의 보안 솔루션을 비교 분석하고, 유닉스 시스템의 보안에 대한 사례 연구를 제공한다.
■PART 07 | 운영체제 사례 연구
16장. 리눅스 사례 연구
리눅스 2.6 커널과 리눅스 사례 연구를 다룬다. 오늘날 세계에서 가장 많이 쓰이는 오픈 소스 운영체제의 역사와 커뮤니티, 소프트웨어 배포 등에 대해 이야기한다. 리눅스 운영체제의 핵심 구성 요소가 실제로 어떻게 구현되었는가에 초점을 맞추어 설명한다. 커널 아키텍처, 프로세스 관리, 메모리 구성과 관리, 파일 시스템, 입출력관리, 동기화, IPC, 네트워킹, 규모 확장성, 보안 등 모든 주제에 대해 분석하고 설명한다.
Part 01 하드웨어, 소프트웨어, 운영체제 소개
Chapter 01 운영체제 소개
01 소개
02 운영체제란 무엇인가
03 초기 역사: 1940, 1950년대
04 1960년대
05 1970년대
06 1980년대
07 인터넷과 월드 와이드 웹의 역사
08 1990년대
09 2000년 이후
10 응용 프로그램 기반
11 운영체제 환경
12 운영체제의 구성 요소와 목표
13 운영체제 아키텍처
요약
연습문제
핵심용어
Chapter 02 하드웨어와 소프트웨어 개념
01 소개
02 하드웨어 장치의 발전
03 하드웨어 구성 요소
04 하드웨어의 운영체제 지원
05 캐싱과 버퍼링
06 소프트웨어 개관
07 응용 프로그래밍 인터페이스
08 컴파일, 링킹, 로딩
09 펌웨어
10 미들웨어
요약
연습문제
핵심용어
Part 02 프로세스와 스레드
Chapter 03 프로세스 개념
01 소개
02 프로세스 상태: 프로세스 생명 주기
03 프로세스 관리
04 인터럽트
05 프로세스 간 통신
06 사례 연구: 유닉스 프로세스
요약
연습문제
핵심용어
Chapter 04 스레드 개념
01 소개
02 스레드의 정의
03 스레드 사용 동기
04 스레드 상태: 스레드 생명 주기
05 스레드 연산
06 스레딩 모델
07 스레드 구현 시 고려 사항
08 POSIX와 Pthread
09 리눅스 스레드
10 윈도우 XP 스레드
11 자바 멀티스레딩 사례 연구 I: 자바 스레드 소개
요약
연습문제
핵심용어
Chapter 05 비동기적 병행 실행
01 소개
02 상호 배제
03 상호 배제 프리미티브 구현
04 상호 배제 문제에 대한 소프트웨어적 해결책
05 상호 배제 문제에 대한 하드웨어적 해결책
06 세마포어
요약
연습문제
핵심용어
Chapter 06 병행 프로그래밍
01 소개
02 모니터
03 자바 모니터
04 자바 멀티스레딩 사례 연구3: 자바 생산자/소비자 관계
05 자바 멀티스레딩 사례 연구 4: 자바 원형 버퍼
요약
연습문제
핵심용어
Chapter 07 교착 상태와 무기한 연기
01 소개
02 교착 상태의 예
03 관련 문제: 무기한 연기
04 자원의 개념
05 교착 상태가 성립되기 위한 네 가지 조건
06 교착 상태 해결책
07 교착 상태 방지
08 다익스트라의 은행원 알고리즘을 사용한 교착 상태 회피
09 교착 상태 탐지
10 교착 상태 복구
11 현재와 미래 시스템의 교착 상태 전략
요약
연습문제
핵심용어
Chapter 08 프로세서 스케줄링
01 소개
02 스케줄링 수준
03 선점/비선점형 스케줄링
04 우선순위
05 스케줄링 목적
06 스케줄링 기준
07 스케줄링 알고리즘
08 데드라인 스케줄링
09 실시간 스케줄링
10 자바 스레드 스케줄링
요약
연습문제
핵심용어
Part 03 물리 메모리와 가상 메모리
Chapter 09 실제 메모리 구성과 관리
01 소개
02 메모리 구성
03 메모리 관리
04 메모리 계층
05 메모리 관리 전략
06 연속/비연속 메모리 할당
07 단일 사용자 연속 메모리 할당
08 고정 파티션 멀티프로그래밍
09 가변 파티션 멀티프로그래밍
10 메모리 스왑핑을 사용한 멀티프로그래밍
요약
연습문제
핵심용어
Chapter 10 가상 메모리 구성
01 소개
02 가상 메모리: 기본 개념
03 블록 맵핑
04 페이징
05 세그먼테이션
06 세그먼테이션/페이징 시스템
07 사례 연구: IA-32 인텔 아키텍처 가상 메모리
요약
연습문제
핵심용어
Chapter 11 가상 메모리 관리
01 소개
02 지역성
03 요구 페이징
04 예측 페이징
05 페이지 교체
06 페이지 교체 전략
07 FIFO 수정안: 2차 기회와 클록 페이지 교체
08 원거리 페이지 교체
09 페이지 해제
10 페이지 크기
11 페이징에서의 프로그램 동작
12 전역 대 지역 페이지 교체
13 사례 연구: 리눅스 페이지 교체
요약
연습문제
핵심용어
Part 04 2차 저장소, 파일, 데이터베이스
Chapter 12 디스크 성능 최적화
01 소개
02 2차 저장소의 발전
03 무빙 헤드 디스크 저장소의 특징
04 디스크 스케줄링이 필요한 이유
05 디스크 스케줄링 전략
06 회전 최적화
07 시스템 고려 사항
08 캐싱과 버퍼링
09 기타 디스크 성능 기술
10 RAID
요약
연습문제
핵심용어
Chapter 13 파일과 데이터베이스 시스템
01 소개
02 데이터 계층
03 파일
04 파일 시스템
05 파일 구성
06 파일 할당
07 여유 공간 관리
08 파일 접근 제어
09 데이터 접근 기술
10 데이터 무결성 보호
11 파일 서버와 분산 시스템
12 데이터베이스 시스템
요약
연습문제
핵심용어
Part 05 네트워킹과 분산 컴퓨팅
Chapter 14 분산 시스템 소개
01 소개
02 분산 시스템의 속성
03 분산 시스템에서의 통신
04 분산 시스템에서의 동기화
05 분산 시스템에서의 상호 배제
06 분산 시스템에서의 교착 상태
07 사례 연구: 스프라이트 분산 운영체제
08 사례 연구: 아메바 분산 운영체제
요약
연습문제
핵심용어
Part 06 보안
Chapter 15 보안
01 소개
02 암호 기법
03 인증
04 접근 제어
05 보안 공격
06 공격 예방과 보안 해결책
07 보안 통신
08 키 합의 프로토콜
09 공개키 기반 구조, 인증서, 인증기관
10 보안 통신 프로토콜
11 스테가노그라피
12 독점 소스와 오픈 소스 보안
13 사례 연구: 유닉스 시스템 보안
요약
연습문제
핵심용어
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2020-08-05 | 다운로드 |