리눅스 커널 내부구조
- 저자
- 백승재, 최종무
- 정가
- 25,000원
- 페이지
- 384쪽
- 발행일
- 2015년 1월 30일
- 책소개
- 저자소개
- 미리보기
- 목차
이 책은 저자가 아는 내용만큼은 독자가 쉽게 이해 할 수 있는 책을 만들어보자는 생각 하나로 집필을 시작하여 2008년에 초판이 발행된 후 분에 넘칠 정도로 많은 분들에게 사랑을 받았습니다. 더 많은 유용한 내용과 최신 정보가 반영된 개정판을 꾸준히 만드는 것이 그 분들에게 보답할 수 있는 유일한 방법이라는 것을 너무도 잘 알고 있기에 늦게나마 이렇게 개정판을 출간합니다.
이번 개정판은 더 재미있는 실습 예제들과 최근 커널에서 변경된 여러 가지 흥미로운 내용들이 추가되어 있습니다. 이를 통해 막연히 이론으로만 배워왔던 운영체제, 그중에서도 리눅스라는 운영체제에 대해 보다 심도 있는 이해가 가능하길 바랍니다. 또한 부디‘많이 팔린 책’보다는‘좋은 책’으로 기억될 수 있길 바랍니다.
특징
이 책은 리눅스에 관심이 있는 사람들이 보다 ‘쉽게’ 리눅스를 접할 수 있게 해야 한다는 생각으로 만들엇습니다. 그러나 이 한 권의 책으로 리눅스 커널 전체를 다 설명한다는 것은 불가능하다는 것을 너무도 잘 알고 있기에 꼭 알아야 한다고 생각되는 것들만을 중심으로 기술하였습니다.
저자들은 책을 쓰면서 ‘리눅스 커널의 오해’라 우스갯소리로 불리는 책보다 많은 내용을 다룰 수는 없을지라도 리눅스 커널에 대한 ‘오해’는 없길 바라는 마음으로 원고 작업을 하였습니다.
운영체제를 자동차로 비유한다면 이 책을 읽은 후에 자동차를 완전 분해하여 조립하거나 혹은 새로운 엔진을 구현 할 수 없을지라도 무엇이 엔진이고 바퀴이고 핸들인지 정도는 알 수 있는, 즉 운영체제의 전체 윤곽과 동작원리를 알 수 있는 것에 초점을 맞추었습니다.
리눅스도 어차피 하드웨어에서 수행되는 하나의 프로그램에 불과하고, 모든 프로그램은 자신이 원하는대로 수정할 수 있기에, 리눅스에 관심이 있는 분들께조금이라도 보탬이 될 수 있는 책이 될 수 있기를 바랍니다.
백승재
◈ 1998. 3. ~ 2005. 2. 단국대학교 전기전자컴퓨터공학부 공학사
◈ 2005. 1. ~ 2011. 6. 비트교육센터 강사
◈ 2005. 3. ~ 2007. 2. 단국대학교 정보컴퓨터학과 이학 석사
◈ 2007. 3. ~ 2010. 2. 단국대학교 컴퓨터학과 공학 박사
◈ 2010. 1 ~ 2011. 6. (주)프롬나이 책임연구원
◈ 2011. 7 ~ 2013. 9. University of Pittsburgh, Post-doctoral Research Associate
◈ 2014. 1 ~ 현재 단국대학교 컴퓨터학과 조교수
최종무
◈ 1988. 3. ~ 1993. 2. 서울대학교 해양학과 이학사
◈ 1993. 3. ~ 1995. 2. 서울대학교 컴퓨터공학과 공학 석사
◈ 1995. 3. ~ 2001. 2. 서울대학교 컴퓨터공학과 공학 박사
◈ 2001. 3. ~ 2003. 2. (주) 유비퀵스 책임 연구원
◈ 2003. 3. ~ 현재 단국대학교 교수
◈ 2005. 8. ~ 2006. 8. University of California, Santa Cruz, Visiting Researcher
◈ 2014. 3 ~ 2015. 2 Carnegie Melon University, Visiting Researcher
제0장 운영체제 이야기
1. 운영체제 이야기
2. 운영체제 동작 비유
제1장 리눅스 소개
1. 리눅스의 탄생
2. 유닉스와 리눅스
3. 리눅스의 배포판
4. 리눅스의 장점
5. 쉘(Shell) 사용해보기
제2장 리눅스 커널 구조
1. 리눅스 커널 구조
2. 리눅스 커널 컴파일
실습 문제
제3장 태스트 관리
1. 프로세스와 쓰레드 그리고 태스크
2. 사용자 입장에서 프로세스 구조
3. 프로세스와 쓰레드의 생성과 수행
4. 리눅스의 태스크 모델
5. 태스크 문맥
6. 상태 전이(State Transtion)의 실행 수준 변화
7. 런큐와 스케줄링
8. 문맥 교환
9. 태스크와 시그널
실습 문제
제4장 메모리 관리
1. 메모리 관리 기법과 가상 메모리
2. 물리 메모리 관리 자료 구조
2-1 node
2-2 zone
2-3 page frame
3. Buddy와 Slab
3-1 버디 할당자(Buddy Allocator)
3-2 Lazy Buddy
3-3 슬랩 할당자(Slab Allocator)
4. 가상 메모리 관리 기법
5. 가상 메모리와 물리 메모리의 연결 및 변환
6. 커널 주소 공간
7. Slub, Slob
실습 문제
제5장 파일시스템과 가상 파일시스템
1. 파일 시스템 일반
2. 디스크 구조와 블록 관리 기법
3. FAT 파일시스템
4. inode 구조
5. Ext2 파일시스템
6. Ext3 파일시스템과 Ext4 파일시스템
7. 가상 파일시스템(Virtual File System)
8. 태스크 구조와 VFS 객체
9. 파일시스템 제어 흐름 분석
실습 문제
제6장 인터럽트와 트랩 그리고 시스템 호출
1. 인터럽트 처리 과정
2. 시스템 호출 처리 과정
3. 새로운 시스템 호출 구현
4. 시스템 호출 구현 확장
4-1 커널 정보 출력
4-2 인자 전달
4-3 구조체를 사용한 인자 전달
실습 문제
제7장 리눅스 모듈 프로그래밍
1. 마이크로 커널
2. 모듈 프로그래밍 무작정 따라하기
3. 시스템 호출 hooking
4. 시스템 호출 hooking 모듈 확장
실습 문제
제8장 디바이스 드라이버
1. 디바이스 드라이버 일반
2. 문자 디바이스 드라이버 구조
3. 블록 디바이스 드라이버 구조
실습 문제
제9장 네트워킹
1. 계층 구조
2. 주요 커널 내부 구조
3. 리눅스에서 통신 프로토콜의 제어 흐름
실습 문제
제10장 운영체제 관련 실습
1. 쉘(Shell)
2. 스케줄러와 시뮬레이팅 환경
3. 버디 할당자와 시뮬레이팅 환경
4. FAT 파일시스템과 디스크 에뮬레이팅 환경
4-1 파일 시스템 마운트
4-2 파일의 생성 및 쓰기
4-3 파일의 탐색 및 읽기
4-4 파일의 삭제
부록A 리눅스와 가상화 그리고 XEN
1. 가상화 기법의 이해
2. 가상화 기술
3. Xen
3-1 전가상화 기술을 이용한 리눅스 설치
3-2 전가상화 기술을 이용한 윈도즈 설치
부록B MTD와 YAFFS
1. 플래시 메모리의 이해
2. MTD
3. YAFFS
부록C Map of the Linux