夢のOS自作にチャレンジできる「1,000行で作るオペレーティングシステム」無料本が公開中

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

今では世界屈指の人気OSとして知られる「Linux」ですが、元々は学生時代のリーナス・トーバルズ氏による個人プロジェクトとして開発が始まりました。

開発者の中にはリーナス氏のように、アプリケーションを動かすための基盤となるOS開発に興味を持っている方は多いと思いますが、とっかかりとして最適な無料のオンラインブック「1,000行で作るオペレーティングシステム」が公開されています。

自作OSで学ぶマイクロカーネルの設計と実装
怒田晟也(著) / 秀和システム(2023-05-18)
価格:¥3,208 / ポイント: 32pt(1%)(記事公開時)
自作OS(HinaOS)と実用OS(MINIX3、GNU Hurd、seL4)のソースコードを紐解き、シンプルでエレガントにOSの機能を実現するマイクロカーネルのさまざまな手法を解説します。※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

『自作OSで学ぶマイクロカーネルの設計と実装』 の著者、怒田晟也氏によるもので、最初の一歩の部分を重点的に解説しているとのこと。3日ほどですむボリュームだとされています。

シンプルなモノリシックカーネル設計で、実装の解説だけでなくカーネルプログラミング特有の難しい部分、特に「カーネルをどうデバッグすれば良いか」をおさえた、初学者向きの内容になっています。

「1000行でOSを作ってみよう」で作成するOSは、コンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装しているのにもかかわらず、コードは1000行未満に押さえられています。

開発環境の構築、RISC-Vの説明、OSの起動、OSの全体像…といった順に説明はすすんでいき、自作OSをどうデバッグすればよいのかなど、挫折しやすい部分の解説も行われています。

最終的には次のようなファイル構成になるとのことです。

├── disk/     - ファイルシステムの中身
├── common.c  - カーネル・ユーザー共通ライブラリ: printf関数やmemset関数など
├── common.h  - カーネル・ユーザー共通ライブラリ: 各種構造体・定数などの定義
├── kernel.c  - カーネル: プロセス管理、システムコール、デバイスドライバ、ファイルシステム
├── kernel.h  - カーネル: 各種構造体・定数などの定義
├── kernel.ld - カーネル: リンカスクリプト (メモリレイアウトの定義)
├── shell.c   - コマンドラインシェル
├── user.c    - ユーザー用ライブラリ: システムコールの呼び出し関数など
├── user.h    - ユーザー用ライブラリ: 各種構造体・定数などの定義
├── user.ld   - ユーザー: リンカスクリプト (メモリレイアウトの定義)
└── run.sh    - ビルドスクリプト

開発環境はqemuで構築することができるため、macOSやLinuxなど幅広い環境で試すことができます。なお英語版も存在し「OS in 1,000 Lines」はHacker Newsでも議論の対象となっていて、「Cool」「Very nice」と高い評価を得ているようです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次