51 ポイント 投稿者 GN⁺ 2025-03-22 | 1件のコメント | WhatsAppで共有
  • x86オペレーティングシステムを自分で開発する方法についての実践的なガイド
  • 技術的な詳細を提供しつつ、コード例やサンプルを通じて過度に多くの情報を公開しすぎないように構成
  • オペレーティングシステムの理論や、特定のオペレーティングシステムの動作方式については説明しない
  • 序盤の章では詳細かつ具体的に説明し、コード作成にすばやく慣れられるようにしている
  • 後半の章では概念と要件を概説し、実装と設計は読者自身が行うよう促す
  • オペレーティングシステム理論の学習が必要なら、Andrew TanenbaumModern Operating Systems を推奨

主な章の内容

  • 序盤の章
    • 2〜3章: 開発環境の設定と仮想マシンでのOSカーネル起動 → C言語でのコード作成を開始
    • 4章: 画面出力とシリアルポート出力
    • 5章: セグメンテーション
    • 6章: 割り込みと入力処理
  • 機能的なカーネル開発後の工程
    • 7章: ユーザーモードアプリケーション対応の準備
    • 8〜9章: ページングによる仮想メモリ設定
    • 10章: メモリ割り当て
    • 11章: ユーザーアプリケーションの実行
  • 高度なトピック
    • 12章: ファイルシステム
    • 13章: システムコール
    • 14章: マルチタスキング

本の背景と開発過程

  • この本とOSカーネルは、スウェーデンの Royal Institute of Technology の上級個別課程を通じて開発された
  • 著者たちは以前にOS理論の授業を履修していたが、実際のカーネル開発経験は不足していた
  • 理論を実際に実装し、より深く理解するために新しい課程を開設し、この本を執筆した
  • x86アーキテクチャは長年にわたり最も広く使われてきたハードウェアアーキテクチャであり、膨大な参考資料とエミュレータが存在する
  • ハードウェアの詳細に関する文書は複雑で、理解しにくいことが多かった

開発方式

  • 約6週間、フルタイムで作業
  • 小さな段階ごとに実装し、各段階で手動テストを実施 → バグの原因を把握しやすい
  • ペアプログラミング(pair programming) によって大部分のコードを作成 → バグ削減効果を期待

対象読者

  • 次のような背景知識を持つ読者に適している:
    • UNIX/Linux およびシステムプログラミングに慣れている
    • C言語に慣れている
    • コンピュータシステムや16進表記法などについて理解がある
  • 初心者も学習ツールとして利用できるが、難易度は高い

1件のコメント

 
GN⁺ 2025-03-22
Hacker Newsのコメント
  • osdevが大好き。最終目標は分からないけれど、作りたいものを作れるのが本当に素晴らしい

    • 基本的なx86割り込みとシステムコールを動かしたとき、すべてが理解できた
    • システムコールを始めると、世界が自分のものになる
    • 趣味でOSをいじってみることを強く勧める
    • Rustを学ぶ機会として使ったが、期待以上のものを得られた
    • 今ではRustにもある程度慣れ、たいていの人より多くのダブルフォルトやトリプルフォルトを投げられる
  • 多くの人が自分の好きな代替案を勧めているが、私は今でもProject Oberonの大ファンだ

    • 2025年のコンピューティングには向いていないかもしれないが、メモリ安全なシステム言語で書かれた小さなグラフィカルOSだ
    • OS開発について学べる十分なコンテンツがある
    • Project Oberonウェブサイト
  • この本には、osdevチュートリアルにありがちな典型的な欠点がある

    • x86の詳細についての説明は多いが、osdevそのものについてはほとんどない
    • x86の詳細はosdevではない
    • 基本的なOSが扱うべきものの、ごく小さな一部分にすぎない
  • 私のお気に入りのOS本はOperating Systems: Three Easy Piecesだ

    • 開発というよりは、どう動くかについての内容が多い
    • HTMLとPDF形式で無料公開されており、紙の本も販売されている
    • OSTEPウェブサイト
  • ありがとう! このテーマに関する素晴らしい資料のように見える

    • 10代のときに作った「OS」のソースコードをまだ持っていればよかった
    • MBRブートローダーの作成、保護モードへの切り替え、画面への文字表示、キーボード入力まで実装した
    • 面白い挑戦を探しているなら強く勧める
  • このコメントは2000年代へのノスタルジーを呼び起こす

    • planet-source-code.comというウェブサイトが開発者コミュニティで人気だった
    • メンバーが書いた何百ものミニOSがあった
    • ほとんどはC/C++とアセンブリでブートローダーが書かれ、Mingw32でコンパイルされ、普通のフロッピーディスクから起動していた
  • 本は良い。GitHubのissueを見ておくとよい

    • 修正が必要な箇所がある
    • 最後のコミットは10年前だ
  • 日本のOS開発本2冊が英訳されればいいのにと思う

    • グラフィカル環境でウィンドウを動かすところまで案内してくれる
    • そのうち1冊は30日チャレンジだ
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • "30-days Homemade OS"を英語に翻訳しようとする試みはあったが、あまり先まで進まなかった
    • os-in-30-days GitHub
    • 英語でここまで踏み込む本や記事は知らない
    • Fusionはグラフィカル環境の章がまだ未完成だ
    • Fusion OSウェブサイト
  • 小さな赤いOS本のマニュアルはどこにあるのだろう

  • OS開発について言えば、ゲームは学習を楽しくしてくれる

    • コンピュータの歴史を旅しながらOSを教えるゲームを作りたかった
    • プレイヤーはプロセススケジューラや割り込みハンドラの役割を担うことになる
    • 非常に限られたRAMを持つ単一CPUシステムから始まり、SMPシステムへ成長し、今日のマルチシステム分散コンピューティングプラットフォームに到達できる