Linuxカーネルを読む前にやったこと
「カーネルのコードがよくわからない。Linuxカーネルに関する本を読んでもいまいちしっくりこない。」 から、「読めば理解できそう..!」 になるまでにやったことのまとめ。
はじめに
低レイヤの話がわかるようになりたかった。 カーネルの中身が知りたかった。 とりあえず本を読もうと思い詳解 Linuxカーネル 第3版を読んだが知識がなさ過ぎてよくわからない。 知らない用語だらけで都度調べればなんとなくはわかる気もするが、いまいち頭に入ってこない。 今思うとそもそもCPUの話なのかカーネルの話なのかさえよくわからない状態で読んでいたような気がする。
そんな状態を克服するためにやったことをまとめておく。
学習前
学習前の自分の知識はこんな感じだった。
知っていた
よく知らなかった
補足:
- 大学は情報学部ではなく工学部卒。OSのことはほとんど学んでいなかった。
- 仕事はWebアプリケーション開発がメイン
何をやったか
ここからがメイン。何をしたか、どのような効果があったか。
1. CPUの基礎の学習
学習内容
- CPUの創りかたを読んだ。高校理科程度の知識から簡単なCPUを作れるようになる本。
効果
- 本当に簡単なCPUなら作れるのでは、という気持になった。
- CPUのイメージができるようになりレジスタやアセンブリ周りの話が理解しやすくなった気がする。
- FPGAにも手を出したくなった…が、時間の制約で保留とした
2. コンパイラの作成
学習内容
- ふつうのコンパイラをつくろうと8ccを参考に、Cの文法を勉強しつつ簡単なCコンパイラを書いた。
- ふつうのコンパイラをつくろうはC言語とほぼ同様の言語のコンパイラをJavaで作る本。8ccについてはこちらの記事を。
- そのまま本をトレースしても面白くないのでパーサジェネレータ(yacc,javaCCなど)も使わずPythonで実装した。
- 8ccのリポジトリのログをものすごく参考にした。(ruiuさん、ありがとうございました)
効果
- アセンブリに慣れた。
- スタックの使い方に慣れた。
- Calling Conventionを知った。(後のOS開発の役に立った)
3. OSの学習(1)
学習内容
- 30日でできる! OS自作入門を参考にOSを作成した。Windowsで開発する前提で書かれていたが、全てUbuntuで動くよう修正しながら進めた。そのせいで詰まったがそれがよい学びになった。
- CPUについての理解を深めるため32ビットコンピュータをやさしく語る はじめて読む486 (アスキー書籍)も一緒に読んだ。
- 進めたときのログはこちら
効果
- GDT、システムコール、割り込み…などの用語がOSから見た意味でわかるようになった。
- CPUの機能を知った。
4. OSの学習(2)
学習内容
- MITのOSの授業を進めた。 内容はメモリ管理、ページテーブル、システムコール、ネットワークドライバなどのコードを自分で書いていってOSを作っていくというもの。ほぼ機能のないOSが最終的にはhttpサーバが動くようになる。課題の答えはないがテストコードがあり、それで自分のコードを確認できる。 scheduleに沿ってすすめると、次の課題までにこれを読め、など適切なテキストも与えてくれる。もちろん全部英語。
- 進めたときのログはこちら
効果
まとめ
CPUの本を読んでコンパイラ作ってOSを作ったら、低レイヤの話が以前よりもわかるようになり、詳解 Linuxカーネル 第3版を見ながらLinuxのコードも追えるようになった。
上の内容を全部やると結構時間がかかるので、強くおすすめするわけではありませんが、この辺りを学ぼうとしている人の参考になれば幸いです。
- 作者: 渡波郁
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2003/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 35人 クリック: 445回
- この商品を含むブログ (192件) を見る
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2009/07/24
- メディア: 単行本
- 購入: 25人 クリック: 398回
- この商品を含むブログ (48件) を見る
- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
32ビットコンピュータをやさしく語る はじめて読む486 (アスキー書籍)
- 作者: 蒲地輝尚
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/10/21
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/02/26
- メディア: 大型本
- 購入: 9人 クリック: 269回
- この商品を含むブログ (71件) を見る