OSの仕組みそのものに興味を持った人であれば、あるいは職業プログラマーであれば、OSの設計には「マイクロカーネル」と「モノリシックカーネル」という手法があり、Windowsを始めとする一般的なOSはモノリシックカーネルをベースに作られていることは知っているでしょう。そして、マイクロカーネルは「美しい設計ではあるものの、実装が難しく、実用的なパフォーマンスが出ない」と思っているかもしれません。しかし、本書で実例として取り上げているMINIX3、seL4、Machは、すでにさまざまなところで使われており、世界を支えている実用的なマイクロカーネルOSです。また、本書のために筆者が作成した学習用マイクロカーネルOS「HinaOS」はシンプルでわかりやすい実装ではありますが、マイクロカーネルを学ぶ上では十分な機能を備えており、最初の一歩として最適です。
本書では、マイクロカーネルOSの機能ごとに分けてソースコードを解説していますが、自作OSであるHinaOSだけを取り上げて「OSの作り方」を解説しているわけでもなく、実用OSの1つだけを取り上げて詳解しているわけでもありません。それは、「マイクロカーネルOSとは、こういうものである」という固定観念を持たず、それぞれのOSの考え方や書き方を比較してほしいという著者の考えによるものです。各OSの設計思想と実装を知ると、「なぜWindowsはこのような設計になっているのか」「なぜLinuxはあの手法を採用しなかったのか」など、作る側の考え方を理解できるようになります。そうすると、OSというソフトウェアがぐんとおもしろく見えてきます。
ただし、本書は「OSの作り方」を解説しているものではないので、本書を読んでもOSをゼロから作れるようにはなれません。とはいえ、OS開発に必要な知識の解説をしているため、副読本として、あるいは「とっかかり」としては十分に役に立つでしょう。
本書をきっかけに、マイクロカーネルのみならず、オペレーティングシステムという世界の自由さ、そしておもしろさを知っていただければ幸いです。そして、自分でマイクロカーネルOSを作ってみたいと思ったら、ゼロから構築するもよし、HinaOSをベースに拡張していくのもよいでしょう。いずれにせよ、そのときには各OSを比較して検討したことが役に立つはずです。
なお、本書のカバーで使われているのはエナガのイラストです。産まれてからすぐのエナガの雛は、親からエサをもらうために一列にギューッと体を寄せ合って、通称「エナガ団子」を作ることが知られています。本書のために著者が開発したマイクロカーネルOSの名前が「HinaOS」であることから、「小さなヒナが固まってエナガ団子を作る」=「小さなカーネルが集まってOSの機能を作る」となぞらえて、エナガ団子をモチーフに選びました。本書のことは、ぜひ「エナガ本」と呼んでください。エナガのイラストは、本書の中でも数カ所に登場しています。
■書籍概要
書名 自作OSで学ぶマイクロカーネルの設計と実装
著者 怒田晟也
定価 3,960円(税込)
発売日 2023年5月18日
Amazon https://www.amazon.co.jp/dp/4798068713/
楽天ブックス https://books.rakuten.co.jp/rb/17474603/
■目次
Part 1 基礎知識
Chapter 1 本書について
Chapter 2 マイクロカーネル入門
Chapter 3 教育用マイクロカーネルOS「HinaOS」入門
Chapter 4 RISC-V 入門
Part 2 カーネル
Chapter 5 プロセスとスレッド
Chapter 6 メモリ管理
Chapter 7 割り込み・例外
Chapter 8 メッセージパッシング
Chapter 9 システムコール
Part 3 ユーザーランド
Chapter 10 ユーザーランド
Chapter 11 API(Application Programming Interface)
Chapter 12 デバイスドライバ
Chapter 13 ファイルシステム
Chapter 14 ネットワーク(TCP/IP)
Part 4 発展的話題
Chapter 15 マルチプロセッサ対応
Chapter 16 仮想化とエミュレーション
Chapter 17 信頼性とセキュリティ
Chapter 18 ソフトウェアによるプロセス隔離
Chapter 19 ブート処理
Appendix 付録
Appendix 1 HinaOS開発環境の構築
Appendix 2 HinaOSのデバッグ
Appendix 3 参考文献