본문 바로가기

IT 신간

리눅스 커널 디자인의 기술

 

리눅스 커널 디자인의 기술

Lixiang Yang 저 | 안진섭 역 | 576쪽 | 30,000원

2015년 9월 15일 


 

 

■ 책 소개

 

이 책은 리눅스 운영체제를 공부하고 개발하고자 하는 사람들을 위한 도서입니다.   리눅스 커널 디자인의 기술
운영체제를 개발하기 위해서는 기술적인 부분보다 운영체제의 동작 원리 자체를 이해하는 것이 더 중요합니다. 이 책에서는 리눅스 0.11 소스코드를 이용해서 실제 운영체제가 어떤 구조로 어떻게 동작하는지 자세히 설명하고 있습니다. 초기 버전의 리눅스인 리눅스 0.11은 복잡하지 않으면서도 리눅스 운영체제의 거의 모든 형태를 이루고 있어 운영체제가 하는 작업들에 대해 자세히 배울 수 있게 해줍니다. 무엇보다 가상 PC 환경에서 스스로 구현 해볼 수 있어 OS의 동작 원리 이해에 많은 도움을 줍니다.
이 책에서는 운영체제의 원리를 통해 운영체제의 동작 방식에 대해 설명하고, 운영체제 디자이너의 시각으로 운영체제 디자인 가이드라인을 제시하고 있습니다. 특히 운영체제가 부팅하는 과정과 프로세스 생성과정 그리고 프로세스 스케줄링 과정을 리눅스에서 사용하는 실제 소스코드로 설명하여 리눅스 운영체제의 내부 구조를 확실히 알 수 있습니다. 또한 다소 어렵다고 생각되는 리눅스 커널을 많은 그림과 도표를 통해 최대한 쉽게 설명하여 내용을 이해할 수 있도록 도와줍니다. 실제 리눅스 소스코드를 바탕으로 ‘제대로’ 리눅스 운영체제를 배워보고 싶은 분, 운영체제를 개발해 보고 싶으신 분들께 추천합니다.

 

■ 이 책의 구성

 

Chapter 1. 컴퓨터에 전원을 켜는 순간부터 메인 함수가 호출되는 순간까지
컴퓨터의 전원을 켜고, 메인 함수를 실행시키기까지는 세 가지 단계를 거친다. 챕터 1에서는 메인 함수를 실행시키기 위해 해야 하는 세 가지 단계의 준비작업 즉, BIOS를 로드하고, 인터럽트 서비스루틴을 통해 OS를 로드하는 것, 그리고 32비트 메인 함수를 실행하기 위한 것들을 준비시키는 것에 대해 자세히 설명한다.

 

Chapter 2. 디바이스 초기화와 프로세스 0 활성화
챕터 2에서는 OS가 기타 다른 하드웨어를 설정하는 디바이스 초기화와 프로세스 0(첫 번째 프로세스)을 위한 환경을 구성하는 방식과 함께 유저 애플리케이션들이 프로세스로서 실행될 수 있게 하는 작업들이 무엇인지 설명한다.

 

Chapter 3. 프로세스 1의 생성과 실행
챕터 2를 통해 프로세스 0은 부모 프로세스 역할을 한다는 것을 살펴보았다. 이제 이 프로세스의 임무는 자식 프로세스인 프로세스 1을 생성하는 것이다. 챕터 3에서는 어떻게 프로세스 1을 생성하고 하드디스크 파일 시스템을 설치하는지 살펴본다. 또한 램디스크를 포맷하고 램디스크를 루트 디바이스로 만들어 루트파일 시스템을 로드하는 방법을 알아본다.

 

Chapter 4. 프로세스 2의 생성과 실행
챕터 4에서는 프로세스 1이 프로세스 2를 생성하는 방법을 알아본다. 그리고 HCI를 위한 쉘 프로세스의 원리와 실행 방법을 통해 OS와 소통하는 방법을 소개한다.

 

Chapter 5. 파일 오퍼레이션
챕터 5에서는 챕터 3에서 로드한 루트 파일 시스템을 바탕으로 OS가 루트 디바이스와 데이터를 주고  받을 수 있게 하기 위해 파일 시스템 설치로 하드 디스크 파일 시스템을 루트 파일 시스템으로 만드는 방법에 대해 자세히 알아본다.

 

Chapter 6. 유저 프로세스와 메모리 관리
OS의 가장 중요한 기능은 실시간 멀티태스킹이다. 또한 동시에 다수의 프로그램을 실행해야 하는 멀티프로세스를 지원하는 데 있어서 핵심은 시분할 방식이다. 챕터 6에서는 이러한 목적을 달성하기 위한 프로세스, 파일 시스템 그리고 메모리 관리에 대한 내용을 배운다.

 

Chapter 7. 버퍼와 멀티 프로세스 파일
챕터 6에서 배운 프로세스, 파일 시스템, 메모리 관리에 대한 내용을 좀 더 깊게 이해하고 싶다면
버퍼의 기능을 알아야 한다. 챕터 7에서는 버퍼에 대해 알아보고 다수의 프로세스들이 파일을 어떻게 처리하고 있는지에 대해 알아본다.

 

Chapter 8. IPC (프로세스 간 통신)
프로세스들은 서로 협력하고 정보를 공유해야 한다. 챕터 8에서는 프로세스의 코드와 데이터를 보호하는 프로세스 간 통신(IPC)을 위해 예제를 사용해서 파이프 메커니즘, 시그널 메커니즘에 대해 자세히 살펴본다.

 

Chapter 9. OS 디자인의 가이드라인
앞에서 살펴본 8개의 챕터를 통해 배운 내용들을 바탕으로 운영체제에 대해 충분히 이해했을 것이다. 챕터 9에서는 이제 어떻게 OS를 디자인하는지에 대한 가이드라인을 살펴본다.


■ 저자 소개


Lixiang Yang
중국 과학 아카데미의 대학의 부교수입니다. 그의 연구 분야는 운영체제, 컴파일러, 프로그래밍 언어를 포함하고 있습니다. 최근에, 그와 그의 팀은 성공적으로 근본적으로 컴퓨터에 불법 프로그램의 침입에 관한 문제를 해결하는 것을 목표로 새로운 운영 체제를 개발했습니다.

 

■ 역자 소개


안진섭
고려대학교 컴퓨터 학과를 졸업하고 삼성 SDS에 입사하여 리눅스 드라이버, 미들웨어를 개발했고, 모바일 개발자를 거쳐 최근에는 사물인터넷 회사를 공동 창업해서 매직에코 CTO로 개발자 인생을 계속하고 있습니다. URC 미들웨어 개발, 로봇 스크립트 엔진 개발, 윈도우 모바일 이메일 클라이언트 개발 등 다수의 내부 시스템을 개발했으며, 저서로는 “IPhone 실전 프로젝트(2012. 영진닷컴)”가 있습니다.


■ 목차

 

CHAPTER 01. 컴퓨터에 전원을 켜는 순간부터 메인 함수가 호출되는 순간까지
1.1 BIOS 로딩, 인터럽트 벡터 테이블 생성 그리고 리얼모드에서 인터럽트 서비스 루틴 활성화
1.2 OS 커널 로딩과 보호 모드 전환 준비
1.3 32비트 모드 전환과 메인 함수 실행 준비
1.4 요약

 

CHAPTER 02. 디바이스 초기화와 프로세스 0 활성화
2.1 루트 디바이스와 하드디스크 정보 설정
2.2 물리적인 메모리 레이아웃, 버퍼 메모리, 램 디스크 그리고 메인 메모리 설정
2.3 램 디스크 설정과 초기화
2.4 메모리 관리 구조체인 mem_map 초기화
2.5 인터럽트 서비스 루틴 바인딩
2.6 블록 디바이스의 리퀘스트 구조체 초기화하기
2.7 주변기기를 위한 인터럽트 서비스 루틴 바인딩과 HCI 인터페이스 만들기
2.8 타임 설정
2.9 프로세스 0 초기화하기
2.10 버퍼 관리 구조체 초기화하기
2.11 하드 디스크 초기화하기
2.12 플로피 디스크 초기화하기
2.13 인터럽트 활성화
2.14 프로세스 0의 권한 레벨을 0에서 3으로 변경하고 프로세스를 만든다.

 

CHAPTER 03. 프로세스 1의 생성과 실행
3.1 프로세스 1의 생성
3.2 커널의 첫 번째 스케줄링
3.3 프로세스 1이 실행

 

CHAPTER 04. 프로세스 2의 생성과 실행
4.1 터미널 디바이스 파일 열기와 파일 핸들 복사
4.2 프로세스 2를 포크시키고 프로세스 2로 프로세스 전환
4.3 쉘 프로그램 로드
4.4 시스템이 대기 상태(idle)에 빠진다.

 

CHAPTER 05. 파일 오퍼레이션
5.1 파일 시스템 설치
5.2 파일 열기
5.3 파일 읽기
5.4 새 파일 생성하기
5.5 파일에 데이터 기록하기
5.6 파일 수정
5.7 파일 닫기
5.8 파일 삭제

 

CHAPTER 06. 유저 프로세스와 메모리 관리
6.1 선형 어드레스 보호
6.2 페이징
6.3 유저 프로세스의 생성에서 종료까지
6.4 멀티 프로세스의 동시 실행

 

CHAPTER 07. 버퍼와 멀티 프로세스 파일
7.1 버퍼의 기능
7.2 버퍼 구조
7.3 b_dev, b_blocknr 그리고 request의 기능
7.4 uptodate와 dirt 필드의 기능
7.5 count, lock, wait, request의 기능
7.6 예제 1 : 버퍼 블록의 프로세스 대기 큐
7.7 버퍼 블록과 리퀘스트에 대해서 더 알아보기
7.8 예제 2 : 다수의 프로세스가 파일을 사용할 때

 

CHAPTER 08. IPC (프로세스 간 통신)
8.1 파이프 메커니즘
8.2 시그널 메커니즘
8.3 요약

 

CHAPTER 09. 운영체제의 디자인 가이드라인
9.1 간단한 프로그램을 통해서 알아보는 OS의 필수 작업들
9.2 OS 디자인: 마스터/슬레이브 메커니즘
9.3 마스터/슬레이브 메커니즘 구현을 위한 세 가지 기술
9.4 마스터/슬레이브 메커니즘을 만들기 위한 결정적 요소: 디자인 의도
9.5 소프트웨어와 하드웨어의 관계
9.6 부모와 자식 프로세스 간의 페이지 공유
9.7 OS의 전역 인터럽트와 프로세스의 로컬 인터럽트: 시그널
9.8 정리

 

 

 

반응형

'IT 신간' 카테고리의 다른 글

다양한 봇빌더를 이용한 《똑똑한 챗봇 만들기》  (0) 2020.11.12
윈도우10 가이드  (0) 2015.09.09
프로들의 에버노트  (0) 2015.09.09