本書では、小さなOSをゼロから少しずつ作っていきます。
OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。
本書では素朴なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。
「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法・能力を習得する必要があります。特に「ゼロから」の自作となると、ブート処理やページングといったデバッグが難しく挫折しやすい部分が冒頭に登場します。そこで本書では「自作OSをどうデバッグすればよいのか」も一緒に学んでいきます。
ただ、デバッグが辛い分、動いた時の感動もひとしおです。ぜひ本書を通じて、OS開発という楽しい世界を体験してみてください。
- 実装例は GitHub からダウンロードできます。
- 本書は CC BY 4.0ライセンス の下で利用できます。実装例と本文中のソースコードは MITライセンス です。
- 前提知識は「C言語を理解していること」と「UNIX系のコマンドラインシェルに慣れていること」です。
- 本書はあくまで『自作OSで学ぶマイクロカーネルの設計と実装』 (愛称: エナガ本) の補足資料です。 エナガ本で既に解説されている部分は本書では省略しています。