オライリーの『詳解 Linuxカーネル 第3版』を一周読んだので、
- 書籍の概要
- 読んでみた感想
- 事前に読んでおくべき本
- この本を読んだ先はどうなっているか
を書いていきます。
書籍の概要
『詳解 Linuxカーネル 第3版』は、Linux の解説書として、いわゆる低レイヤを学ぶためのおすすめ書籍によく挙げられます。
合計 1024 ページという分厚さであり、ある程度の前提知識も求められる、少しハードルが高い本です。
内容としては、
- プロセス
- メモリ管理
- ファイルシステム
といった Linux の重要な要素について、関係する概念や、構造体の具体的な構成、ソースコード内の関数の処理などが手厚く書かれています。
解説はボトムアップ的に構成されており、ハードウェア依存の内容に始まり、ハードウェアに全く依存しない内容で締め括られます。
第 3 版は Linux 2.6 が対象で、2021 年 7 月時点の Linux 5.13 と比べると異なる点も多いとは思いますが、それでも、Linux 重要な概念やソースコードの読み方を学ぶのには良い書籍です。
(あまりにバージョンが違うこともあり、第 4 版が出ることはないだろうと思います…)
なお、ネットワーク関係は全く解説されていないので、そこは別の方法で勉強することになります。
読んでみた感想
読み終えての気持ちとしては、やはりこのくらいの本になると何より読み終えた達成感が大きいです。
そしてもちろんですが、読む前と比べて、Linux への理解が非常に深まりました。
このくらいの本になるとよくある話ではありますが、一周でしっかり理解するのはかなり厳しいです。
今回の私の読み方としては、今まで知らなかった概念を理解することを中心とし、関数の内部の処理の流れなどの細かい点は読み流しました。
特にメモリ管理に関する部分は非常に手厚く、かなり苦しかったです。
今回の私のような少し簡易的な読み方でも非常に勉強になりますし、処理の流れも雰囲気が分かり、Linux カーネルのソースコードをちらちら見るくらいはできるようになりました。
事前に読んでおくべき本
さて、この本を読むにあたって、事前に読むのにおすすめの本を書いておきます。
まず、Linux の入門書を 1 冊読んだくらいの段階で挑戦するのは厳しいです。
Linux の仕組みをざっくり理解するため、以下の 2 冊は読んでおいた方がいいです。
※ さらに前提として、C 言語の基礎知識が必要です。
また、CPU の基礎知識として、以下の 2 冊がおすすめです。
特に『はじめて読む486』は CPU の保護機能なども解説されており、OS について学ぶ際の前提知識を得るのにぴったりです。
そして、『ゼロからのOS自作入門』には目を通しておきたいです。
『詳解 Linuxカーネル』の解説は少し込み入っているので、事前にこの本を読み、小さな OS の作り方を学んでおくことをおすすめします。
ここまで来れば、『詳解 Linuxカーネル』に手をつけるには十分です。
なお、書籍ではありませんが、『詳解 Linuxカーネル』を読む際は、Linux の物理端末が手元にあると色々試せるのでおすすめです。
この本を読んだ先はどうなっているか
さて、この本を読むまでは、これを読み終える頃には「リナックスチョットデキル」とまでは言えなくても、「Linux 最低限分からなくはない」くらいは言えるようになるのかと思っていました。
しかし、実際に読んでみたところ、これは Linux をしっかり理解する上では、まだまだ入り口なんだなと思うようになりました。
書籍の中で登場する概念について調べると、詳しい方の書いた記事や、知らない要素などが大量に見つかるのです。
考えてみれば当然ではあるのですが、書籍になっている時点で最新の情報ではないですし、OSS はソースコードを読んでこそだとも思います。
この本を読むことで、Linux カーネルのソースコードをちらちら見ることができるくらいにはなり、ここから Linux をもっと知っていきたいなという気持ちになりました。
おわりに
最後に、『詳解 Linuxカーネル』の最終章「プログラムの実行」の最後の部分が感動的だったので、敬意を込めて引用させていただきます。
プログラムの実行というものは、カーネル設計の多くの側面に関連する複雑な作業です。プロセスという概念、メモリ管理、システムコール、ファイルシステムなどの設計が絡み合っています。プログラムの実行はまさに、Linux がどれほどすばらしい作品であるかを気付かせてくれる(本書の最後にふさわしい)トピックと言えるでしょう!