나에게 필요한 지식과 기술을 검색해 보세요.

리눅스 디바이스 드라이버(개정3판)

지은이

조나단 코벳, 알레산드로 루비니, 그렉 크로아-하트만

옮긴이

박재호, 이해영

출간일

2005.11.07

레벨

중고급

정가

30,000

판매가

27,000

총 결제 금액

10%

27,000

적립 예정

1,350P

최신의 커널 지식과 운영체제 작동방식까지 일석이조!
임베디드 시스템 개발의 필수코스, 디바이스 드라이버의 교과서를 만난다!

3판에 접어드는 고전인 이 책은 리눅스 운영체제에서 컴퓨터 주변기기를 지원하려는 사람, 리눅스에서 새 하드웨어를 돌리려는 사람, 혹은 단순히 리눅스 커널 프로그래밍 전반에 관심있는 사람이 꼭 읽어야 할 책이다. 리눅스 디바이스 드라이버는 입에서 입으로만 혹은 해독불가능한 소스 코드 주석으로만 전해오던 광범위한 디바이스에 대하여 드라이버를 작성하는 비밀을 공개한다.

이번 3판은 리눅스 커널 버전 2.6.10을 위해 완벽히 개정했다. 버전 2.6.10은 PnP, sysfs 파일 시스템을 이용한 사용자 영역과 상호작용, 표준 버스 상에서 여러 버스 관리 등 일반적인 과업 수행 방식을 합리화하고 단순화했다.

리눅스 디바이스 드라이버는 커널 해커가 아니라도 이해하고 즐길 수 있다. C 코드를 이해할 수 있고 유닉스 시스템 호출에 대한 기본적인 배경 지식만 있으면 된다. 이 책에서 독자는 문자 디바이스, 블록 디바이스, 네트워크 인터페이스를 작성하는 방법을 배울 수 있다. 별도 하드웨어 없이도 컴파일하고 실행할 수 있는 완전한 예제를 제공한다. PCI, USB, tty(터미널) 하위 시스템마다 각각 별도 장을 할애하고 있다. 운영체제가 작업을 수행하는 방식이 궁금하다면, 이 책에서 주소 영역, 비동기식 사건, I/O에 관한 지식을 얻을 수 있다.

[주요 내용]
  • 완전한 문자/블록/tty(터미널)/네트워크 드라이버
  • 드라이버 디버깅
  • 인터럽트
  • 타이밍
  • 동시성, 잠금, SMP(대칭적인 다중 프로세싱)
  • 메모리 관리와 DMA
  • 드라이버 모델과 sysfs
  • 핫플러그 가능한 디바이스
  • SCSI, PCI, USB, IEEE1394(파이어와이어) 등을 포함한 공용 버스의 특수 요구사항

저자

목차

1장 디바이스 드라이버 소개
  디바이스 드라이버 임무
  커널 구분
  디바이스와 모듈 클래스
  보안 문제
  버전 번호
  라이선스 조건
  커널 개발 커뮤니티에 동참하기
  이 책의 전반적인 흐름

2장 모듈 빌드와 실행
  테스트 시스템 설정
  Hello World 모듈
  커널 모듈 대 응용 프로그램
  컴파일과 적재
  커널 심벌 테이블
  사전 지식
  초기화와 종료
  모듈 매개 변수
  사용자 영역에서 작업하기
  빠른 참조

3장 문자 드라이버
  scull 설계
  주 번호와 부 번호
  몇몇 중요한 자료 구조체
  문자 디바이스 등록
  open과 release
  scull의 메모리 사용법
  read와 write
  새 디바이스 다루기
  빠른 참조

4장 디버깅 기술
  커널이 지원하는 디버깅 옵션
  출력을 통한 디버깅
  질의를 통한 디버깅
  관찰을 통한 디버깅
  시스템 폴트 디버깅
  디버거와 관련 도구

5장 동시성과 경쟁 상태
  scull에 존재하는 함정
  동시성과 동시성 관리
  세마포어와 뮤텍스
  완료
  스핀락(spinlocks)
  잠금 시 피해야 할 함정
  잠금 대안
  빠른 참조

6장 고급 문자 디바이스 연산
  ioctl
  차단 I/O
  poll과 select
  비동기식 통지
  디바이스 탐색
  디바이스 파일 접근 제어
  빠른 참조

7장 시간, 지연, 작업 연기
  시간 경과 측정하기
  현재 시각 알기
  실행 지연하기
  커널 타이머
  태스크릿
  작업 큐
  빠른 참조

8장 메모리 할당
  kmalloc에 얽힌 진짜 이야기
  색인 캐시(Lookside Cache)
  get_free_page와 관련 함수
  vmalloc과 관련 함수
  CPU별 변수
  대형 버퍼 얻기
  빠른 참조

9장 하드웨어와 통신하기
  I/O 포트와 I/O 메모리
  I/O 포트 사용하기
  I/O 포트 예제
  I/O 메모리 사용하기
  빠른 참조

10장 인터럽트 처리하기
  병렬 포트 준비하기
  인터럽트 처리기 설치하기
  처리기 구현하기
  상반부와 하반부
  인터럽트 공유하기
  인터럽트 구동 I/O
  빠른 참조

11장 커널 자료형
  표준 C 타입 활용
  자료 항목 크기를 명시적으로 할당하기
  인터페이스에 종속적인 타입
  기타 이식성 문제
  연결 리스트
  빠른 참조

12장 PCI 드라이버
  PCI 인터페이스
  돌아온 탕아: ISA
  PC/104와 PC/104+
  다른 PC 버스
  S버스(SBus)
  누버스(NuBus)
  외부 버스
  빠른 참조

13장 USB 드라이버
  USB 디바이스 기본
  USB와 Sysfs
  USB urb(USB 요청 블록)
  USB 드라이버 작성하기
  urb 없는 USB 전송하기
  빠른 참조

14장 리눅스 디바이스 모델
  Kobject, Kset, 하위시스템
  저수준 sysfs 연산
  핫플러그 사건 생성
  버스, 디바이스, 드라이버
  클래스
  하나로 합치기
  핫플러그
  펌웨어 다루기
  빠른 참조

15장 메모리 사상과 DMA
  리눅스에서 메모리 관리
  mmap 디바이스 연산
  직접 I/O 수행하기
  직접 메모리 접근(DMA)
  빠른 참조

16장 블록 드라이버
  등록
  블록 디바이스 연산
  요청 처리하기
  다른 몇몇 세부 사항
  빠른 참조

17장 네트워크 드라이버
  snull 설계 방법
  커널에 접속하기
  net_device 구조체 세부 내역
  열고 닫기
  패킷 전송
  패킷 수신
  인터럽트 처리기
  수신 인터럽트 완화
  연결 상태 변경
  소켓 버퍼
  맥 주소 결정
  전용 ioctl 명령
  통계 정보
  멀티캐스트
  기타 사항
  빠른 참조

18장 TTY 드라이버
  자그마한 TTY 드라이버
  tty_driver 함수 포인터
  TTY 터미널 전송 제어 규칙
  ioctls
  tty 디바이스를 다루는 proc과 sysfs
  tty_driver 구조체 자세히 살펴보기
  tty_operations 구조체 자세히 살펴보기
  tty_struct 구조체 자세히 살펴보기
  빠른 참조

참고문헌
찾아보기

리뷰

30,000

10%

27,000