1,000行でオペレーティングシステムを実装する
(operating-system-in-1000-lines.vercel.app)- この本は、小さなオペレーティングシステムをゼロから段階的に構築する方法を説明する
- オペレーティングシステム(OS)やカーネル開発という言葉に気後れするかもしれないが、OSの基本機能(特にカーネル)は驚くほどシンプル
- Linuxも当初は8,413行のコードから始まり、今日のLinuxカーネルは非常に大規模になったが、趣味プロジェクトのような小さなコードベースから出発した
はじめに
- 基本的なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書き処理をC言語で実装していく
- これらすべてが1,000行のコードで可能
- OSを自作するうえで最も難しい部分はデバッグ
printfデバッグを実装するまではそれすら使えず、アプリケーション開発では必要なかったさまざまなデバッグ技法やスキルを学ぶ必要がある- 特に「ゼロから」始めると、ブートプロセスやページングのような難所に出会う
- でも心配はいらない! OSのデバッグ方法も学べる
- デバッグが難しいほど、成功したときの満足感は大きい
- OS開発の魅力的な世界に飛び込もう!
その他の情報
- 実装例はGitHubからダウンロード可能。
- この本はCC BY 4.0ライセンスで提供され、実装例とソースコードはMITライセンスで公開されている
- C言語とUNIX系環境に慣れていて、
gcc hello.c && ./a.outを実行できるなら準備完了 - この本は、もともと日本語で書かれた『マイクロカーネルの設計と実装』の付録として作成された
- 楽しいOSハッキングを!
本の目次
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
14件のコメント
OSというものはいつも本でしか触れてこなかったのですが、実際のコードで見られるのがいいですね。
良い資料を共有していただき、ありがとうございます。
良い資料をありがとうございます!!!!!!!!
この話は本当にうらやましいですね。日本は専門書がとても多く、しかもしっかり出版されている気がします。やはり人口の問題なのでしょうか?
翻訳される本を見ると、技術的にかなり深いところまで語る本はないようですが、たださまざまな分野の本が出ているようではあります。やはり市場がもっと大きいから、そうなのだと思います。
良い資料をありがとうございます。
一度作ってみるか、理解できるレベルまで達すると、 後でLinuxシステムがどのように動いているのかが見えて、Linuxを扱うときに役立ちます
2000年代初頭までは、このように個人が小さなカーネルを作ってみるのが流行っていて、私もやってみましたし、そのおかげで数年間 Linux カーネル開発に携わることができました。国内でもオペレーティングシステムを作る本がたくさん出ていたので、よく探せばもっと詳しく説明している本を見つけられるはずです。
関連分野へ転職するのでなければ、単なる趣味としてやるのも悪くはありませんが、私なら最近は AI や k8s 関連の勉強会を勧めます。今でもたまに KLDP のようなところにカーネル開発者になりたいという書き込みが上がりますが、コメントを見ると、どれも海外に行けという話ばかりです。
国内にはカーネルレベルに投資する会社がないから、そういうことなんでしょうね……?(笑)
必要がないからやらないのか、できないのかはよくわかりませんが、ないことは確かです。
良い資料をありがとうございます。
こういう本こそ、武侠小説でいうところの武功秘伝書みたいなものなんでしょうね?(笑)
とても興味深いですね。いつか一度システムプログラミングを勉強してみたいと思っていたのですが、最初の入り口として OS の動作についてプログラミングの観点から理解できそうだという期待が持てますね!
Hacker News の意見
著者は週末にオペレーティングシステムを自作できるように本を書いており、CではなくRustやZigのような好きなプログラミング言語を使える
"hobby" オペレーティングシステムプログラミングの経験から、GDBのデバッグ設定はできるだけ早く追加するのがよい
RISC-V向けの小さなオペレーティングシステムを作るのは素晴らしいと思う
Rust愛好家にとっては、phil-oppのガイドは楽しい練習になるかもしれない
RISC-Vの勉強を始めたところで、読んでいる本で提供されているエミュレーターはQEMUより簡単で、奇妙なライセンスを持っている
xv6-riscvと比較するのは興味深そう
低レベルの議論はいつも興味深い
オペレーティングシステム作成で最も厄介なのはデバッグ
2つのプロジェクトが言及されている
良い資料なので、週末に読むために保存しておいた
Nimでカーネルを……
面白そうですね。