自作 OS で学ぶマイクロカーネルの設計と実装(ジサクオーエスデマナブマイクロカーネルノセッケイトジッソウ)
マイクロカーネルの深淵を知り、骨太なスキルを身に付ける
- 著者:
- 怒田晟也(ヌタセイヤ)
- 出版社:
- 秀和システム
- 出版日:
- 2023年05月18日
- ISBN:
- 9784798068718
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
マイクロカーネル OS は、「美しい設計ではあるものの、遅い実装」というイメージを持たれることがありますが、それは過去の話です。現在では、目立たないところで実用的な OS として使われ、世界を支えています。
本書では、マイクロカーネル OS の概念からその実例まで、機能ごとに分けて説明しています。本書全体としては、基礎知識、マイクロカーネルの解説、その上で動くソフトウェア部分 (ユーザーランド) の解説、そして発展的内容の 4 つのパートから構成されており、それぞれのパート内の章は、概念の解説部分と、その概念をどのように実装しているかを解説した実装部分に分かれています。
各章の実装例として、本書のために筆者が開発したマイクロカーネル OS 「 HinaOS 」を用いて、わかりやすく解説しています。 HinaOS は、エミュレータ上で動かすことを想定した教育目的の OS ですが、 OS の実装を学ぶのに必要となる最低限の機能を備え、ソースコードもシンプルにです。
また、 HinaOS での実装例のほかに、 MINIX3 、 seL4 、 GNU Hurd という 3 つの実用マイクロカーネル OS による実例も解説しています。複数の OS について紹介しているのは、それぞれに特徴があり、それを比較してほしいという理由からです。「マイクロカーネル OS とは、こういうものである」という固定観念を持たず、マイクロカーネルであるからこその柔軟さ、そして設計の自由さを味わってください。 OS はコンピュータの使い方をガラッと変えられる、いわば新しいソフトウェアの世界を創れる土台なのです。
本書を読み終えたら、自分で OS を作ってみてください。 OS の仕組みを理解していても、実装することで新たな発見があるものです。ゼロから OS を作るのではなく、 HinaOS を拡張するのもよいでしょう。 HinaOS には、実装が面倒な基本機能が既に備わっています。このように OS を拡張しやすいのもマイクロカーネルの特徴の 1 つです。
本来、 OS はとても自由なソフトウェアです。特定の CPU にしかない変わった機能を活用した移植性ゼロの OS を作るもよし、極限まで小さくした OS を作るもよし、自由な発想で自分の世界を創り上げることができる最高の題材なのです。
本書を手に、マイクロカーネルの深淵をのぞき込んでみてください。その舞台裏を楽しんでいるうちに、 OS やアーキテクチャにとらわれないコンピュータの深い技術も身に付いているはずです。
技書の森解説
OS を自作するという行為は、コンピュータの最も低いレイヤーを自分の手で組み上げることで、ブートからプロセス管理、メモリ管理、割り込みまでを血肉化する学び方です。本書はその中でもマイクロカーネルという設計思想に焦点を当て、カーネルの責務を最小限に絞り、ファイルシステムやデバイスドライバをユーザ空間のサーバとして分離する構造を実際にコードで構築していきます。
モノリシックカーネル (Linux の方式) と比べて解説書が少ないマイクロカーネルを、設計判断の理由まで踏み込んで扱っている点が本書の独自性です。 IPC (プロセス間通信) がなぜ性能上の課題になるのか、その課題をどう最小化するのかといった議論は、分散システムやコンテナ技術の設計原理とも地続きです。
前提として C 言語でのメモリ操作やアセンブリの基本的な読解力が必要であり、 OS の授業を一度受けた程度の知識があると取り組みやすいです。教科書で読んだ概念を実装に落とす過程で理解が飛躍的に深まるため、 OS の理論を一度学んだうえで「手を動かして確認したい」という段階にある人に強く響く一冊です。
言及 Qiita 記事 (4 件)
この本に興味がある方におすすめ
この本に関連
関連記事
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。
有名プログラマの読書習慣 - 天才たちは何を読んできたのか
リーナス・トーバルズ、まつもとゆきひろ、ビル・ゲイツなど、著名なプログラマたちの読書習慣と愛読書を紹介します。天才たちの読書スタイルから学べることとは。
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
関連用語
アーキテクチャ
システム全体の構造設計。コンポーネントの分割と関係を決める最上位の設計判断
マイクロサービス
1 つの大きなアプリケーションを複数の小さなサービスに分割し、それぞれが独立してデプロイ・スケール可能な状態で協調動作するアーキテクチャパターン
サイドカーパターン
メインコンテナと同じ Pod に補助コンテナを配置し、横断的関心事を分離する設計パターン
システムコール
ユーザー空間のプログラムが OS カーネルの機能を呼び出すインターフェース
サイドカーインジェクション
Kubernetes で Pod にサイドカーコンテナを自動的に注入し、横断的関心事を透過的に追加する仕組み
YAGNI
You Aren't Gonna Need It - 今必要でない機能を先回りして実装しない原則