리눅스 커널과 디바이스 드라이버 실습2

책소개:601쪽 | 257*188mm (B5) | 1142g | ISBN : 9788997750054 저자가...

리눅스 커널과 디바이스 드라이버 실습2

31,000원 36,000원
추가 금액
수량
품절된 상품입니다.

책소개:

601쪽 | 257*188mm (B5) | 1142g | ISBN : 9788997750054

 

저자가 커널연구회(www.kernel.bz)를 수년동안 운영하면서 리눅스 커널 소스를 분석한 내용 위주로 구성했다. 리눅스 커널 소스를 이론적으로 설명하지 않고 최신 소스를 분석하여 소스 위주로 설명하고자 하는 저자의 꼼꼼한 노력이 돋보이는 책이다.

 

특히 Second Edtion에서는 다음과 같은 내용을 대폭 보강했다.

제4장 동기화에 대해서 내용을 수정함. 제6장 메모리 관리 및 주소 변환에 대해서 내용을 좀더 자세히 보강함. 제8장 커널내부 들여다보기에서 커널 부팅 과정을 소스 분석적 관점에서 자세히 설명하고 커널모드와 사용자 모드에 대해서 설명을 좀더 추가함. 제10장 기본원리 이해에서 디바이스 드라이버 작성에 대한 기본을 좀더 충실히 기술함. 제11장 문자 드라이버들에서 병렬포트 실습 소스 코드를 좀더 자세히 추가하고, 임베디드에서 자주 사용하는 플랫폼 디바이스 드라이버에 대한 설명을 추가함. 제12장 직렬통신 디바이스 드라이버에 대한 설명을 좀더 보강함. 제13장 IIC 버스 인터페이스에 대한 내용을 새롭게 추가함. 제14장 PWM과 ADC 드라이버에 대한 내용을 새롭게 추가함. 부록1 리눅스 커널 버전별 특징을 새롭게 추가함.

 

이 책은 크게 두부분으로 나누어 진다. 제1부에서는 리눅스 커널 소스를 이해하고 실습해 볼 수 있도록 구성했고, 이것을 바탕으로 제2부에서 리눅스 디바이스드라이버를 구현하는 소스 코드들을 설명하고 있다.

 

리눅스 커널 소스 설명에서 가장 돋보이는 부분은 리눅스 커널에 구현되어 있는 자료구조(링크드리스트, 큐, 트리) 소스를 처음부터 끝까지 자세히 분석하여 독자들이 직접 실습해 볼 수 있도록 구현한 부분이다. 제1장과 제7장에 있는 소스들은 저자가 리눅스 최신 커널에서 소스를 직접 분리해 내어 독자들이 직접 실습하여 익히도록 구성했다. 이 부분은 국내에 출판된 리눅스 커널에 관련 서적에는 없는 이 책만의 백미에 해당하는 부분이며 독자들에게 커널 소스를 익히는데 많은 자신감을 안겨줄것이라 확신한다. 아울러 커널의 다른 부분도 소스 위주로 자세히 설명하고 있다. 특히 Second Edtion에서 그동안 미흡한 부분들을 대폭 보강하여 제2부에서 다양한 리눅스 디바이스드라이버를 익힐 수 있도록 구성한 좋은 책이다.

 

목차:

리눅스 커널과 디바이스드라이버 실습2

저작권 저자 소개

SECOND EDITION에 추가된 내용들  

문서 표준  

목차

 

제1부 리눅스 커널 이해 및 실습

제1장 커널 자료구조

1.1 링크드 리스트(LINKED LISTS)  

1.2 큐(QUEUES)  

1.3 트리(TREES)  

1.4 적절한 자료구조 선택

1.5 알고리즘 효율성

제2장 프로세스(PROCESS)  

2.1 프로세스(PROCESS) 이해

2.2 쓰레드(THREAD)  

2.3 프로세스 문맥 교환(CONTEXT SWITCH)  

2.4 스케쥴링

2.4.1 스케쥴러 자료구조(Data Structures)  

2.4.2 스케쥴링 우선순위값(Priorities)  

2.4.3 스케쥴링 정책(policy)  

2.4.4 Scheduler Classes  

2.4.5 Run Queues  

2.4.6 스케쥴링 개체들(Scheduling Entities)  

2.4.7 Periodic Scheduler  

2.4.8 프로세스 깨움(wake up process)  

2.4.9 Wait Queues

제3장 인터럽트(INTERRUPT)  

3.1 INTERRUPTS와 EXCEPTIONS  

3.2 INTERRUPT 문맥교환(CONTEXT SWITCHING)  

3.3 INTERRUPT HANDLER 등록

3.4 LINUX INTERRUPT 구조체

3.5 BOTTOM HALVES (SOFTIRQS / TASKLETS / WORK QUEUES)  

3.5.1 softIRQs  

3.5.2 Tasklets  

3.5.3 Work Queues

제4장 동기화(SYNCHRONIZATION)  

4.1 보호 영역과 경쟁 조건들

4.2 LOCKING  

4.3 동기화 방법들

4.4 동기화 사례

제5장 시간(TIME)  

5.1 THE TICK RATE: HZ  

5.2 HARDWARE CLOCKS AND TIMERS  

5.3 타이머 인터럽트 핸들러

5.4 타이머들(TIMERS)  

5.5 지연 실행(DELAYING EXECUTION)

제6장 메모리

6.1 메모리 관리 기법들

6.2 메모리 주소 변환

6.3 SLAB/SLOB/SLUB 할당

제7장 커널 자료구조 실습

7.1 링크드 리스트(LINKED LIST) 실습

7.2 큐(QUEUE) 실습

7.3 RED-BLACK TREE 실습

 

제2부 리눅스 디바이스드라이버 실습

제8장 커널내부 들여다보기

8.1 리눅스 커널소스 요약설명

8.2 부팅 업

8.3 커널 모드와 사용자 모드

8.4 커널 타이머들

8.5 커널안의 동시성

8.6 프로세스 파일시스템(PROCESS FILESYSTEM)  

8.7 메모리 할당

8.8 리눅스 소스 위치

제9장 커널에 보관된 기능들

9.1 커널 쓰레드

9.2 도움 인터페이스들(HELPER INTERFACES)  

9.3 리눅스 소스 위치

제10장 기본원리 이해

10.1 커널 모듈 프로그래밍 방법

10.2 장치들과 드라이버 기본

10.3 인터럽트 핸들링

10.4 리눅스 소스 위치

제11장 문자 드라이버들

11.1 문자 드라이버 기초

11.2 디바이스 예제: 시스템 CMOS  

11.3 데이터 유효성 감지(SENSING DATA AVAILABILITY)  

11.4 병렬 포트에게 이야기하기

11.5 가상 문자 드라이버들(PSEUDO CHAR DRIVERS)  

11.6 기타 드라이버들(MISC DRIVERS)  

11.7 문자 통고(CHARACTER CAVEATS)  

11.8 플랫폼 디바이스 드라이버

11.9 리눅스 소스 위치

제12장 직렬통신 드라이버들

12.1 계층적 구조

12.2 UART DRIVERS  

12.3 TTY DRIVERS  

12.4. 라인 규율(LINE DISCIPLINES)  

12.5 리눅스 소스 위치

제13장 IIC 버스 인터페이스

13.1 IIC 버스 인터페이스 이해

13.2 RTC 드라이버 예제

제14장 PWM과 ADC 드라이버

14.1 PWM 디바이스드라이버

14.2 ADC 디바이스드라이버

제15장 입력장치 드라이버들

15.1 입력 이벤트 드라이버들

15.2 입력 장치 드라이버들

15.3 리눅스 소스 위치

제16장 주변장치 연결(PCI)  

16.1 주소와 식별

16.2 PCI 영역에 접근

16.3 직접 메모리 접근(DIRECT MEMORY ACCESS)  

16.4 디바이스 예제: 이더넷-모뎀 카드

16.5 리눅스 소스 위치

제17장 USB(UNIVERSAL SERIAL BUS)  

17.1 USB 구조

17.2 USB 드라이버 데이터 구조체

17.3 USB 드라이버 실습예제 (USB-FT245)  

17.4 리눅스 소스 위치

제18장 비디오 드라이버들

18.1 디스플레이 구조

18.2 리눅스-비디오 서브시스템

18.3 디스플레이 파라미터들

18.4 프레임 버퍼 드라이버들

18.5 콘솔 드라이버들

18.6 리눅스 소스 위치

기부금 안내

부록1. 리눅스커널 버전별 특징 비교

A1.1 커널 3.X 특징

A1.2 커널 2.6.X 소스 비교대상

A1.3 커널 2.6.X 스케쥴러 비교

A1.4 커널 2.6.X 디바이스 드라이버 비교

A1.4.1 device 구조체 비교 (핵심 구조체 중심)

A1.4.2 misc 드라이버 소스 비교 (핵심 구조체 중심)

A1.4.3 input 드라이버 소스 비교 (핵심 구조체 중심)

A1.4.4 platform 드라이버 소스 비교 (핵심 구조체 중심)

A1.4.5 pci 드라이버 소스 비교 (핵심 구조체 중심)

A1.4.6 usb 드라이버 소스 비교 (핵심 구조체 중심)

A1.4.7 video 드라이버 소스 비교 (핵심 구조체 중심)