최신의 커널 지식과 운영체제 작동방식까지 일석이조!
임베디드 시스템 개발의 필수코스, 디바이스 드라이버의 교과서를 만난다!
3판에 접어드는 고전인 이 책은 리눅스 운영체제에서 컴퓨터 주변기기를 지원하려는 사람, 리눅스에서 새 하드웨어를 돌리려는 사람, 혹은 단순히 리눅스 커널 프로그래밍 전반에 관심있는 사람이 꼭 읽어야 할 책이다. 리눅스 디바이스 드라이버는 입에서 입으로만 혹은 해독불가능한 소스 코드 주석으로만 전해오던 광범위한 디바이스에 대하여 드라이버를 작성하는 비밀을 공개한다.
이번 3판은 리눅스 커널 버전 2.6.10을 위해 완벽히 개정했다. 버전 2.6.10은 PnP, sysfs 파일 시스템을 이용한 사용자 영역과 상호작용, 표준 버스 상에서 여러 버스 관리 등 일반적인 과업 수행 방식을 합리화하고 단순화했다.
리눅스 디바이스 드라이버는 커널 해커가 아니라도 이해하고 즐길 수 있다. C 코드를 이해할 수 있고 유닉스 시스템 호출에 대한 기본적인 배경 지식만 있으면 된다. 이 책에서 독자는 문자 디바이스, 블록 디바이스, 네트워크 인터페이스를 작성하는 방법을 배울 수 있다. 별도 하드웨어 없이도 컴파일하고 실행할 수 있는 완전한 예제를 제공한다. PCI, USB, tty(터미널) 하위 시스템마다 각각 별도 장을 할애하고 있다. 운영체제가 작업을 수행하는 방식이 궁금하다면, 이 책에서 주소 영역, 비동기식 사건, I/O에 관한 지식을 얻을 수 있다.
[주요 내용]
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 구조체 자세히 살펴보기 빠른 참조 참고문헌 찾아보기
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2016-04-06 | 다운로드 |