메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

리눅스 디바이스 드라이버

리눅스 디바이스 드라이버

한빛미디어

번역서

절판

  • 저자 : 알레산드로 루비니(Alessandro Rubini)
  • 번역 : 김인성 , 류태중
  • 출간 : 2000-02-28
  • 페이지 : 480 쪽
  • ISBN : 897914055X
  • 물류코드 :1055
  • 초급 초중급 중급 중고급 고급
3.6점 (5명)
좋아요 : 24

최근 다양한 응용분야에서 지지세력을 넓혀나가고 있는 리눅스 운영체제 환경에서 컴퓨터 주변장치를 사용하기 위해 설정하려는 파워유저 또는 아예 리눅스용 새 하드웨어를 개발하려는 개발자를 위한 필수 지침서. 이 책은 지금까지 산재되어 있거나 소스 코드에 포함되어 있는 암호와 같은 구문에서 유용한 정보를 밝혀내고 여러 영역에 걸친 드라이버를 작성하는 방법을 명확하게 보여 준다. 

커널 해커 수준이 아니더라도 C 언어에 대한 이해와 유닉스 시스템 콜에 대한 기초 지식만 갖추면 이 책을 충분히 이해할 수 있다. 문자 디바이스, 블록 디바이스, 그리고 네트워크 인터페이스용 드라이버 등을 단계적으로 설명하고 있으며, 드라이버 설계의 주제에 맞도록 완전한 기능을 가진 예제를 보여 준다. 물론 디바이스는 특정 하드웨어 사양에 한정되지 않도록 설계되어 있다.

특히 운영체제가 이런 작업을 어떻게 수행하는지 궁금증을 가진 사람들은 이 책을 통해 주소 공간, 비동기 이벤트, 그리고 I/O 등으로 시야를 넓힐 수 있다. 커널 버전 1.2.13으로부터 2.0과 2.2에 이르기까지 폭넓게 다루고 있으며, 여러 하드웨어 플랫폼 사이에서 호환성을 최대한 유지할 수 있는 방법도 상세히 설명한다.


주요 내용

  • 드라이버 빌드와 모듈 적재
  • 문자, 블록, 그리고 네트워크 드라이버
  • 드라이버 디버깅
  • 타이밍
  • 메모리 관리와 DMA
  • 인터럽트
  • 호환성
  • PCI
  • 내부에 대한 고찰

이 책은 리눅스 운영체제에서 하드웨어에 관한 전반적인 사항을 쉽게 파악할 수 있도록 매우 체계적으로 구성되어 있을 뿐만 아니라 다루는 영역도 광범위하다. 게다가 각 장별로 참조사항을 정리해 본문 내용을 쉽게 이해할 수 있도록 독자를 배려한 점도 눈에 띈다. 저자의 명성만으로도 책에 대한 관심을 솟게 하기에 충분하다. 
패트릭 로버츠, 로스앤젤레스, 2000. 1. 22

알레산드로 루비니 저자

알레산드로 루비니

전자공학을 전공했고, 파비아(Pavia) 대학에서 컴퓨터공학 박사학위를 받았다. 대학을 졸업한 직후부터 리눅스 0.99,14 버전을 사용하기 시작했고, 현재 첨단기술과 개발자들의 지혜를 엿보는 데 열중하고 있다. 

김인성 역자

김인성

1992년 서울대학교 컴퓨터공학과 졸업. 리눅스를 이용한 프로그램 개발에 관심이 많으며, 하드웨어와 밀접한 디바이스 드라이버의 개발이 전공이다. 컴퓨터 잡지에 리눅스 기술 칼럼을 자주 기고했다. 커널 디바이스 제작과 리눅스 한글화 사업에 참여하였고 오픈 소스 프로젝트에도 상당히 기여하고 있다. 현재는 리눅스원의 개발 실장으로 리눅스 대화형 프로젝트를 진행중이며, 포탈 업체들에게 기술자문을 해주고 있다.
류태중 역자

류태중

한국과학기술원(KAIST) 전산학과 졸업. 대우통신연구소를 거쳐 현재 하나로통신(주)의 연구원으로 재직하고 있다. 실시간 운영체제와 코바(CORBA) 등에 관심이 많으며, 담당 업무인 네트워크 관리 시스템 분야에 대한 지식을 섭렵하고 있다.

역자 서문 

서문 

1장. 리눅스 커널 소개
 
드라이버 제작자의 역할
커널 기능의 구분
디바이스와 모듈의 클래스
보안 관련 논의
버전 번호
라이센스 조건
이 책의 개요

2장. 모듈의 빌드와 실행
모듈 대 응용 프로그램
컴파일과 적재
커널 심볼 테이블
초기화와 셧다운
자원의 사용
자동 설정과 수동 설정
사용자 공간에서의 작업
참조 사항

3장. 문자 드라이버
scull의 설계
주번호와 부번호
파일 조작
file 구조체
열기와 닫기
scull의 메모리 사용
read와 write
새 디바이스 다루기
참조 사항

4장. 디버깅 기법
프린트에 의한 디버깅
큐에 의한 디버깅
관찰에 의한 디버깅
시스템 폴트 디버깅
디버거 사용하기

5장. 향상된 문자 드라이버 연산
ioctl
블록킹 I/O
Select 메쏘드
Poll 메쏘드
비동기 통지
디바이스 찾기
디바이스 파일에서의 접근 제어
참조 사항

6장. 시간의 흐름
커널에서의 시간 간격
현재 시간 알기
실행 지연하기
태스크 큐
커널 타이머
참조 사항

7장. 메모리 획득
kmalloc의 실제 동작
get_free_page와 관련 함수
vmalloc과 관련 함수
지저분한 동작
참조 사항

8장. 하드웨어 관리
I/O 포트 사용하기
병렬 포트 사용하기
디바이스 보드에서의 메모리 사용
텍스트 모드 비디오 버퍼 사용하기
참조 사항

9장. 인터럽트 처리
병렬 포트 준비하기
인터럽트 핸들러 설치하기
핸들러 구현하기
Bottom Halves
인터럽트 공유
인터럽트 관리
인터럽트 구동의 I/O 
경쟁 상태 
IRQ 처리의 버전 의존성
참조 사항

10장. 데이터 타입의 현명한 사용
표준 C 타입 사용
데이터 아이템에 명확한 크기 지정하기
인터페이스 특유의 타입
그 밖의 이식성 문제
참조 사항

11장. Kerneld와 고급 모듈화
요구시 모듈 로드하기
모듈에서의 버전 관리
언로드/로드에 걸친 지속적 저장
참조 사항

12장. 블록 드라이버 적재
드라이버 등록하기
헤더 파일 blk.h
요구 처리
마운팅이 작동하는 방법
ioctl 메쏘드
제거 가능한 디바이스
파티션 가능한 디바이스
인터럽트 구동의 블록 드라이버
참조 사항

13장. Mmap과 DMA
리눅스에서의 메모리 관리
mmap 디바이스 연산
직접 메모리 사용
참조 사항

14장. 네트워크 드라이버
snull을 설계한 방법
커널에 연결하기
device 구조체의 상세
열기와 닫기
패킷 송신
패킷 수신
인터럽트 구동의 연산
소켓 버퍼
주소 분석
로드시 구성
동작시 구성
커스텀 ioctl 명령들
통계 정보
멀티 캐스팅
참조 사항

15장. 주변 장치 버스의 개요
PCI 인터페이스
ISA 되돌아 보기
그 밖의 PC 버스들
sbus
참조 사항

16장. 커널 소스의 실제 배치
커널 부팅하기
부팅 전
init 프로세스
kernel 디렉토리
mm 디렉토리
fs 디렉토리
네트워킹
IPC와 lib 함수들
드라이버들
아키텍처 의존성

찾아보기

지금 여기 나온 책은 kernel 2.2에서의 디바이스 드라이버에 대한 내용을 담고 있는데

원서의 2nd에서는 kernel 2.4에서의 내용을 담고 있습니다..

참고하세요...



임베디드쪽 디바이스 모듈 제작법을 공부하려고 하는데 업체쪽 사람이 이 책을 권유하더군요..

상당히 잘 쓰여진 책이고 국내에 이정도의 책은 구하기 힘들다고 하던데...

읽어보구 많은 도움 되었네요...

최근엔 원서도 구입했습니다... 소장하고 싶더라구요...^^;

굳이 커널 구조를 공부하고 싶지 않더라도 시야가 넓은 프로그래머가 되고 싶다면 한번쯤 봐야될 책이지 않을 까 싶네요...

의자에 앉아 책과 음악을 들으면서 컴퓨터로 커피메이트를

조절해서 커피를 끌이고, TV체널을 바꾸며, 컴퓨터로 욕실의

보일러 온도를 조절하고, 거실의 조명과 어항에 금붕어 밥을

주고... 정말 환상이 아닐수 없다.

그러나 이책을 보면서 그런 환상을 어떻게 이끌어 가야 하나

기본을 배운듯 싶다.

기계 장치를 리눅스에서 어떻게 제어를 하는지

또한 기계 장치를 이용하여 내가 하고자 하는 일을 하기위한

기반의 토대가 무엇이며, 리눅스에서 어떻게 컨트롤해야

하는지 그 기틀과 토대를 마련해 주는 책이다.

많은 사람들이 이런 기초 서적과 심도있는 부분을 연구하여

환상이 아닌 실현으로 이끌어 갔으면 하는 바램이다.

1. 대상 독자층

"리눅스 디바이스 드라이버"는 리눅스에서 동작하는 주변기기를 위한 디바이스 드라이버를 작성하는 개발자, 리눅스를 사용하여 임베디드 장치를 만드는 개발자, 리눅스 커널에 관심이 많은 호사가에게 적합한 개발서이다.



이 책은 심심풀이나 재미로 보기에는 너무 많은 사항을 알고 있어야 하므로 초보자에게는 결코 적합하지 않다. 최소한 x86 하드웨어와 커널과 관련한 기본 지식으로 무장한 상태에서 읽어야 함에 유의하기 바란다. 또한 책 자체만으로 모든 문제를 해결할 수 없는 경우도 있으므로 필요할 때마다 커널 소스 트리를 뒤질 수 있도록 준비해야 한다. 한마디로 중/고급 사용자에게 어울리는 책이다.



2. 주요 내용

"리눅스 디바이스" 드라이버는 제목이 암시하는 바와 같이 리눅스 환경에서 어떻게 디바이스 드라이버를 작성할 수 있는지에 관한 각종 내용을 담고 있다. 하지만 리눅스 커널 컴파일 방법부터 차근차근 나온다고 생각하면 큰 오산이다. 목차를 보면 알겠지만 리눅스 커널을 잠깐 소개하는 듯 하다가 바로 구체적인 디바이스 드라이버 작성법으로 들어가버리므로, 이 책 한 권으로 커널 컴파일에서 세부적인 커널 내부 구조 설명과 디바이스 드라이버 작성에 이르기까지 모든 사항을 해결하려는 욕심은 버려야 한다. 다행히도 커널 내부 구조 설명은 이번에 한빛미디어에서 새로 나온 "리눅스 커널의 이해(Understainding the Linux Kernel 번역판)"을 참조하면 큰 도움을 얻을 수 있을 것이다. 이 책을 읽기 위해 꼭 필요한 리눅스 커널 컴파일 방법은 LDP나 KLDP등에 나와있는 온라인 문서를 참조하기 바란다.



1장. 리눅스 커널 소개

2장. 모듈의 빌드와 실행

3장. 문자 드라이버

4장. 디버깅 기법

5장. 향상된 문자 드라이버 연산

6장. 시간의 흐름

7장. 메모리 획득

8장. 하드웨어 관리

9장. 인터럽트 처리

10장. 데이터 타입의 현명한 사용

11장. Kerneld와 고급 모듈화

12장. 블록 드라이버 적재

13장. Mmap과 DMA

14장. 네트워크 드라이버

15장. 주변 장치 버스의 개요

16장. 커널 소스의 실제 배치



또한 "리눅스 디바이스 드라이버"는 커널 2.2를 다루고 있다는 사실에 주목해야 한다. 하지만 최근 2.4 계열이 급속도로 퍼지기 시작하면서, 2.4와 어울리는 방식으로 디바이스 드라이버를 만들어야 할 필요성이 생기는데, 이럴 경우 유용하게 적용할 수 있는 힌트를 제시하겠다. 바로 오라일리에서 제공하는 온라인 Linux Device Drivers 2nd Edition 페이지(http://www.xml.com/ldd/chapter/book/index.html)를 활용하는 방법이다. 목차를 읽어보고 필요한 부분만 추출해서 참고하는 방식으로 책을 읽으면 별도 돈을 들이지 않고 2.4와 관련한 디바이스 드라이버 작성 기법을 익힐 수 있다. 영어라는 사실에 실망하는 독자들도 많겠지만, 최신의 지식을 익히려면 어쩔 수 없는 상황이라 생각하기 바란다.



3. 내용 평가

이 책의 특징을 한 가지만 제시하라고 하면 "뭔가 자기 힘으로 만들어보려는 성향이 있는 사람만이 재미있게 읽을 수 있다"는 점을 들고 싶다. 일반 리눅스 배포판으로 설치한 환경에서는 심지어 이 책 37페이지네 나오는 예제인 "Hello, world"를 컴파일할 수 조차 없는 자신을 발견할 수 있기 때문이다. 용케 커널을 다시 컴파일해서 버전 체크를 피하는 방법으로 "Hello, world"를 컴파일한 다음에는 출력 결과를 어디서 찾아야할지 막막해진다. 책을 읽어보신 독자들은 동의하겠지만 처음부터 끝까지 이런 황당한 방식으로 내용이 이어진다.



우리나라 사람들은 성질이 너무 급하다. 이러한 추세를 맞추려고 시중에 나와있는 책은 대부분 머리에 생각할 기회를 주는 대신 손이 끊임없이 타이핑하고 마우스를 누르면서 필요한 작업만 열심히 하도록 유도하는 내용으로 가득 차 있다. 결과로 글자 한자도 안 틀리고 어떤 작업을 수행해서 결과를 보면 지식을 습득했다고 착각을 하게 된다. 하지만 디바이스 드라이버 종류가 천차만별이며 새롭게 생겨나는 복잡한 상황에서 과연 이러한 "xyz 따라하기" 입문서 시리이즈가 개발자에게 도움을 줄 수 있을까?



이 책을 지은 필자는 커널 컴파일도 제대로 할 수 없고, /var/log/messages를 살펴서 디바이스 드라이버가 출력한 printk 메시지를 읽을 줄 모르는 개발자들에 초점을 맞추는 대신 진짜로 디바이스 드라이버를 만들고자 하거나 아니면 커널 내부 구조를 파악하기를 원하는 독자를 대상으로 집필한 흔적이 곳곳에 베여있다. 심지어 예제 코드 자체도 모두 조각이 나있어서, 오라일리 ftp 사이트(http://examples.oreilly.com/linuxdrive2/)에서 직접 받아와서 풀어보지 않는 이상 실체를 파악하기 어렵다. 그 대신 이렇게 아낀 지면을 각종 생각할 거리와 경험에서 우러나오는 팁들로 채워놓았다. 이 책을 읽으면 읽을수록 노력하는 자만이 얻을 수 있다는 사실을 깨닫게 된다. 정말 "리눅스 디바이스 드라이버"를 개발하고 싶은가? 그렇다면 이 책과 "리눅스 커널의 이해" 책을 읽고 난 다음 차근차근 리눅스 소스 코드 트리 내부에 존재하는 각종 디바이스 드라이버를 실제로 분석해보기 바란다.



4. 번역 상태

"리눅스 디바이스 드라이버"가 어렵다는 이야기를 주변에서 하도 많이 들어왔기에 도대체 무슨 이유인지를 파악할 필요가 있었다. 크게 두 가지로 나누어서 생각할 수 있다. 하나는 매끈하지 못한 번역이고 나머지 하나는 내용 평가에서 이미 언급했듯이 성질 급한 한국인의 정서에 맞지 않는다는 사실이다. 한글판을 읽을 때 무슨 소리인지 모르는 부분이 여기저기 속출해서 읽는 작업이 아주 괴로웠다고 솔직히 고백하겠다. 불행 중 다행으로 온라인 영문판이 구세주였다고 할까?



지면 낭비할 필요 없이 단도직입적으로 말해서 "Linux Device Drivers 2nd Edition" 영문판을 추천하고 싶다. 책을 구입하거나 앞서 알려준 온라인 책을 인쇄(PDF 포맷도 있으므로)해서 읽기 바란다.



5. 기술적 정확성, 가독성, 편집 상태

솔직히 번역상에 문제가 있어 전반적인 정확성, 가독성이 많이 떨어진다. 똑 같은 문장을 여러 번 읽어서 추측해야 하므로 읽는 독자를 괴롭힐 가능성이 높다. 그나마 편집 상태는 양호하다고 평가한다.



6. 최종 검토 의견

"리눅스 디바이스 드라이버"는 리눅스 상에서 실제로 디바이스 드라이버를 작성하는 진짜 개발자에게 적합한 책이다. 번역상에 문제가 있고, 커널 2.2를 다룬다는 점이 마음에 걸리기는 하지만, 원서 자체만 놓고서는 아주 훌륭하다는 평가를 내리고 싶다. 자매서인 "리눅스 커널의 이해"와 함께 손이 잘 닫는 위치에 놓아두면 개발 시 큰 위안이 될 것이다.

지금 다른 데 적는 것이 없는 듯 해서요.

oreilly.com website에는 2nd 가 나왔는데

혹시 해서 여기 왔더니

전혀 이야기되어 있지 않네요.

현재 kernel 2.4 가 나왔고

지금 여기 나온 책은 kernel 2.2입니다.

뭐 달라진 점만 체크한다면 그냥 봐도 상관없을듯.

책 내용은 아주 좋은 듯하군요. 그러나 번역서를 읽었는데 실망이 무진장 큽니다. 번역판으로 처음 접해서 원서를 구하기가 힘들 것 같았는데, 참 지금 심정이라면 돈 아까운걸 떠나서 원서를 다시 구해 읽고자 하는 마음이 듭니다. 번역 자체가 잘못되었다기 보다는 어구선정에 더 신경을 써 주셔야 할 것 같아서요. 예를 들면 "메쏘드", "폴트"같은 용어들이요. 책을 읽는데 있어서 혼란이 줍니다. 차라리 영어로 적든지 아님 완벽히 한글로 쓰던지, 하여간 책을 번역하신 분을 원서를 보면서 하셨으니 발음만 한글로 옮겨도 그 뜻을 정확히 이해하시겠지만 원서없이 번역본만 보는 사람에게 있어서는 치명적인 오류가 될 수 있다는 것을 알아 주셨음 하네요. 개인적으로 오렐리책을 무척 좋아하는데 앞으로는 번역판은 절대 보지 말아야 할 것 같은 생각을 가지게 됐습니다.

원서가 비싸고, 온라인으로 주문해야 하는 점이 있지만 그래도 원서 볼랍니다. 이 책 내용은 대단히 잘 된것 같은데.. 그리 느낌이 팍팍 오지는 않은 것 같군요. 그럼 앞으로도 좋은 원서를 많이많이 소개해 주세요.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
리눅스 디바이스 드라이버
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
리눅스 디바이스 드라이버
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
리눅스 디바이스 드라이버
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0