무엇이 리눅스를 작동시키는지, 왜 리눅스가 그렇게 효율적인지 완벽하게 이해하려면 운영체제의 핵심인 리눅스 커널 그 자체부터 확실하게 파고들어야 한다. 리눅스 운영체제의 경우, 커널이 곧 리눅스라고 해도 과언이 아니다. 커널이야말로 "리눅스"라는 용어를 적용할 수 있는 유일한 소프트웨어라 해도 될 정도로 커널은 리퀘스트나 I/O 동작의 모든 사항에 관여해 프로그램의 프로세싱 시간이나 순서를 결정하기 때문이다. 이렇듯, 시스템 전체의 복잡한 메모리 관리를 담당하고 있기 때문에 리눅스 커널과 리눅스 효율성은 아주 밀접한 상관관계를 가지고 있다고 볼 수 있다.
초판의 저자인 다이엘 보베이와 마르코 체사티가 다시 집필을 맡은 이번 개정판은 커널에서 사용되는 각종 프로그래밍 트릭, 알고리즘, 가장 중요한 데이터 구조 등을 통해 커널의 세계를 잘 안내해주고 있다. 피상적인 특징 이외에도 저자들은 머신 내에서 실제적으로 어떤 일들이 벌어지고 있는지 알고 싶어하는 독자들에게 이와 관련된 귀중한 정보를 잘 알려주고 있다. 저자들은 코드의 관련 세그먼트를 라인별로 분해하여 하나하나 설명하고 있을 뿐만 아니라 리눅스가 왜 그런 방식으로 작업을 처리하는지에 대한 이론적인 기반에 대해서도 자세히 설명하고 있다. 바로 이런 점이 이 책의 진면목이라 할 수 있다.
이번에 출간된 개정판은 커널 버전 2.2에서 2.4로 완벽하게 업데이트 되었다. 이 두 커널 버전의 업그레이드에는 약간의 차이가 있는데 가상 메모리 시스템이 완전히 새로워졌고, 멀티프로세서 시스템 지원이 향상되었으며, 하드웨어 디바이스의 클래스가 완전히 새롭게 추가되었다.
이 책의 저자인 보베이와 체사티는 다음과 같은 설명을 덧붙였다. "커널 2.2는 58MB 정도의 디스크 공간을 차지했으나 2.4는 약 144MB 정도의 디스크 공간을 차지한다. 버전 2.4에 속한 코드를 모두 나열하면 주석을 하나도 달지 않는다고 하더라도 이 책의 40권 이상에 해당하는 분량이 될 것이다." 열거된 모든 코드의 수정사항을 하나하나 살펴보면서 저자들은 새로워진 특징들 중에서 눈여겨 보아야 할 항목에 대해서는 자세한 설명을 덧붙였다. 이 책이 다루고 있는 사항을 크게 살펴보자면 다음과 같다.
- 파일 버퍼링, 프로세스 스와핑, DMA(Direct Memory Access)와 같은 메모리 관리
- 가상 파일시스템, Ext2와 Ext3 파일시스템
- 프로세스 생성과 스케줄링
- 시그널, 인터럽트, 디바이스 드라이버의 핵심 인터페이스
- 타이밍
- 커널 내부 동기화
- 프로세스 간 통신(IPC, Interprocess Communication)
- 프로그램 실행
『리눅스 커널의 이해』 초판은 독자들에게 리눅스 내부 작동원리에 대해 설명한 책이지만 그저 단순하게 기본 개론만 설명한 책으로 보아서는 안된다. 독자들은 이 책을 통해 어떤 상태에서 리눅스가 최고의 성능을 보이는지, 훌륭한 시스템이라면 아주 다양한 환경에서 메모리 관리, 파일 엑세스, 프로세스 스케줄링 과정동안 커널이 어떻게 문제를 해결하는지에 대해 배울 수 있기 때문이다.
「Linux Journal」 편집자 선정 2003년 베스트 리눅스 북 선정
「Linux Journal」에서는 리눅스 시장에서 두각을 나타낸 제품을 개발했거나 뛰어난 성과를 거둔 각 부분의 품목에 대해 리눅스 전문가들이 모여 베스트 오브 베스트를 선정한다. 「Linux Journal」 2003년 8월호에 실린 베스트는 다음과 같다.
베스트 서버 어플라이언스(하드웨어): Sputnik AP 120
베스트 보안 도구(하드웨어 또는 소프트웨어): Netfilter/iptables
베스트 서버: Newisys 2100
베스트 워크스테이션: Dell Precision 650n
베스트 웹 브라우저 또는 클라이언트: Mozilla 1.4
베스트 개발 도구: Perl 5.8.0
베스트 북: Understanding the Linux Kernel, 2nd Edition
베스트 웹 사이트: Linux Weekly News
올해의 상품: SGI Altix 3000
이 책의 초판에 대한 찬사는 다음과 같다.
정말 좋은 책이다. 저자들은 현재 가장 많이 쓰이고 있는 거대한 코드 집합을 하나하나 풀어헤쳐 정리해놓았다. 앞으로도 계속해서 달라진 내용을 업데이트하는 식으로 개정판을 만들어 낸다면 지금도 그렇지만 개정판이 나왔을 때에도 리눅스를 철저하게 설명하는 지침서로 손색이 없을 것이다. ─ 2001년 1월 slashdot.com에서 존 레게(John Regehr)
이 책을 독파하고 나면, 코드 속의 중요한 데이터 구조와 그렇지 않은 데이터 구조를 구별할 수 있는 자신만의 방법을 습득할 수 있을 것이다. 한마디로 말해, 진정한 리눅스 해커가 될 수 있단 말이다. ─ 2001년 1월 소프트웨어 월드
리눅스에서 작업하는 거의 모든 C/C++ 프로그래머들에게 도움이 되는 커널에 대한 설명을 아주 뛰어나게 하고 있는 책이다. 이제 막 커널에 대해 접근해보고자 하는 프로그래머라면 크고 작은 내부 컴포넌트와 리눅스 커널 처리에 대한 실무 가이드북이 있었으면 하는 바람이 있었을 것이다. 천만 다행으로 이 책은 이러한 독자들의 바람을 충족시켜줄 뿐만 아니라 그 이상의 가치를 가지고 있다. 이 책에 수록된 모든 내용은 제대로 검증된 것이며, 리눅스에서 작업하는 프로그래머들이라면 반드시 한번은 꼭 읽어보아야 할 필독서이다. ─ 2000년 12월 internet.com의 루 그린조
리눅스로 이제 막 프로그래밍을 시작한 초보 단계에 있다면 리눅스 커널에 대해 좀더 자세히 알고 싶을 것이다. 바로 그 시기에 도달한 사람들을 위한 책이 바로 이 책이다. ─ 2001년 2월 Sheffield 리눅스 사용자 그룹의 리차드 아이보손
아주 읽기 쉽게 되어 있는 것은 물론이고 이 책이 다루고 있는 깊이에 감동 받았다. 특히, 어느 정도 리눅스를 깊이 파고들지 않았다면 건드리기 어려운 부분에 대한 언급이 있다는 것이 인상깊었다. 지금까지 나온 책 중에서 리눅스 커널 내부를 제대로 설명한 최고의 책이라 해도 과언이 아니다. 리눅스 커널의 고전이 될 책임에 틀림없으리란 확신이 들며 모든 독자들에게 강력히 추천하는 바이다. ─ 2001년 2월 Developers Review
커널에 익숙하지 않은 사람들을 위해 커널 내부에 대한 실무적인 내용을 이해하기 쉽게 소개한 책으로 특히 C에 자신있는 프로그래머들에게 적극 추천하는 바이다. ─ 2001년 2월 www.kuro5hin.org