All Articles

『ゼロからのOS自作入門』を読みました【感想・難しいと感じる方にオススメの事前準備】

2021 年 3 月に発売された『ゼロからのOS自作入門』(通称: みかん本) を一周読んだので、その感想と、難しいと感じる方にオススメの事前準備をまとめました。

感想

2 ヶ月ほど前に発売されたこちらの書籍、発売されてから Twitter などでとても頻繁に見かけて気になっており、興味のある内容ということもあって購入に至りました。

実装するほどの時間がとれず、実装せずに読み進めたのですが、読み物としても非常に楽しめました。

実装までイメージできる、というか実装できる

後で紹介するように、OS の仕組みについて概念を解説する読みやすい書籍はいくつかありますが、具体的にどう実装して実現されているのかをイメージできるものはなかなかありません。

この書籍は、OS の重要な概念について、それがどういうもので、なぜ必要なのかなど、とても分かりやすく解説しつつ、具体的な実装についても手厚く解説されています。

といってもコードばかりの書籍という訳でもなく、言葉での解説とコードでの解説が程よい割合です。

とにかく読みやすい

何より、説明が非常に平易で読みやすいです。

OS の作り方を教科書的にまとめているのではなく、ストーリーを展開しながら進めていくので、なぜこんなことをしようとしているのかも分かりやすいです。

全体としては 700 ページを超える分厚い本ですが、1 章 1 章は短めということもあり、分厚さのわりには心が折れにくいと思います。

また、こういう機能はロマンがあるから実装してみる、といった遊び心のある展開も個人的に結構好きでした。

OS を学びたい方にとてもオススメ

全体として、OS といっても他のプログラムと同じで、誰かが考えた工夫の積み重ねのうえでできているんだなということが実感できました。

OS の重要な概念について、なんとなく知っているけど実装まではイマイチ想像できない、といった方に非常にオススメです。

今回私は実装せずに読み進めたため、実装上の細かいテクニックまでは味わえなかったのですが、実際に実装すると楽しめそうなテクニックもたくさん紹介されています。

そこは時間ができたときの楽しみにとっておこうと思います。

もし事前準備をするなら

書籍の最初には対象読者として「簡単なプログラムを書いたことがある人」と書かれていますが、パラパラ見てみて難しいと感じる方もいらっしゃると思います。

そんな方のために、もしも事前準備をするなら前提として何を勉強しておくと良さそうか、自分のオススメをまとめます。

大きくは

  • C 言語の基礎
  • CPU の仕組みの概要
  • OS の基礎知識

の 3 つです。

C 言語の基礎

この本で作成される MikanOS のコードは、ほぼ C++ (一部アセンブリ言語) で書かれています。

C 言語の基礎知識として、ポインタや malloc による動的メモリ確保、関数ポインタくらいを理解していると読み進めやすいです。

(読むだけでなく実装する際は、C++ の知識もあるとスムーズだと思います)

後で紹介する『ふつうのLinuxプログラミング』という書籍もそうですが、C 言語の知識はいわゆる低レイヤを勉強するうえで非常に役立つので、基本だけでも学んでおくのがオススメです。

勉強方法としては、適当な入門書を手にとってみてもいいと思いますし、C 言語入門サイトの「苦しんで覚えるC言語」などで学ぶのも良いかもしれません。

CPU の仕組みの概要

OS を実装するので当たり前ではありますが、CPU を意識する箇所が非常にたくさんあります。

例えば、アセンブリ言語のコードがしばしば登場したり、レジスタを意識する箇所がとても多いです。

そのため、CPU の仕組みも概要程度でも知っておくと読みやすくなると思います。

定番ではありますが、書籍『CPUの創りかた』はとても分かりやすくてオススメです。

こちらは私は未読ですが、みかん本の著者の方が書いている『自作エミュレータで学ぶx86アーキテクチャ-コンピュータが動く仕組みを徹底理解!』もとても良さそうです。

保護機能や割り込み、タスク機能など、OS を実現するための CPU の実践的な機能については、『32ビットコンピュータをやさしく語る はじめて読む486』の解説が分かりやすいです。

その他、CPU について学ぶための書籍は こちら の記事にまとめています。

OS の基礎知識

事前準備のオススメの最後は、OS の基礎知識です。

コマンドを使った基本操作ができるうえで、OS の仕組みについても多少勉強しておくと良いかもしれません。

例えば

  • ユーザモードとカーネルモード
  • システムコール
  • コンテキストスイッチ
  • 仮想アドレス
  • ファイルシステム

などの概念を理解しておくと、読み進めるのがスムーズになります。

具体的な勉強方法としては、

の 2 冊を読むのが非常にオススメです。

前提としてこのくらいの知識があると、みかん本で登場する概念を理解するのにつまづく箇所はかなり少なくなると思います。

おわりに

以上、『ゼロからのOS自作入門』(通称: みかん本) の感想と、ハードルが高いと感じる方にオススメの事前準備をまとめました。

とにかく素晴らしい本だったので、迷っている方は是非購入してみてください。

分厚い本なだけあって、読んだ後の達成感も大きいです。

この本に続いて『詳解 Linuxカーネル 第3版』も読みました。感想を こちら の記事にまとめているので、是非参照ください。