いきなりコードは書かない。AIに「OS自作の地図」を描かせる2日目。
【AIによるこの記事の3行まとめと解説】
OS自作という未知の挑戦にあたり、いきなり難しいプログラムを書き始めるのではなく、まずはAIに「全体の地図(進め方の手順)」を作ってもらいます。 「どこを最初のゴールにするか」「どの順番で作れば失敗しないか」をAIに質問し、無理のない小さな目標(画面に何かを出す等)を設定します,。 AIの提案をそのまま鵜呑みにするのではなく、自分のやりたいこととすり合わせていく、本格的な開発前のワクワクする「作戦会議」の記録です。
あらすじ
突然思い出したOS自作本の記憶。本もコードもなくしてしまったけど、AIとやってみることにするのだった。
いきなり実装しない理由
自作OSへの挑戦を始めます!
普通ならここで「まずはエディタを開いてコードを書こう!」となるところですが、如何せんきちんとした内容はほとんど覚えていません。
ガイドラインもありません。
なので、まずはどう進めるのが良いか、AIに相談するところから着手です。
AIに投げた「3つの問い」
迷子にならないための地図を作るべく、AIに以下の問いを投げかけました。
何を最小構成(ゴール)にすべきか?
どの順番で進めると破綻しにくいか?
ブート(起動)、カーネル(中核)、出力(画面表示)、割り込み(入力など)は、どう繋がっていくのか?
ただコードを出させるのではなく、「考え方」と「進め方」の設計を求めたわけです。
AIから得られた大枠(地図の原案)
AIからの回答を要約すると以下の通りです。
目的設定(到達点を小さく): 「本物の汎用OS」を目指すのではなく、まずはブートして画面に何か出し、キーボードやタイマーを少し触るくらいまでを最初のゴールにする。「デスクトップっぽい」はその次の段階として置く。
実行環境を固定する: 対象CPU(例としてx86の32bit保護モードかx86-64のロングモード)、エミュレータ(QEMU)、ツールチェイン(GAS+GCC+LD)をブレさせない。
ブートの入口確保: 「電源投入後、自分のコードの最初の命令が動く」まで。ここがOSの“第0歩”。
カーネル骨格と出力: アセンブリでのスタック設定や割り込み準備を経て、C言語の kernel_main 的な入口へ。VGAテキストモードかシリアルへの出力がないと デバッグが地獄になる 。
「OSらしさ」の核: 割り込み処理(タイマー、キーボード)や、簡単なメモリ管理(まずは物理メモリのbitmap程度で十分)。
「デスクトップっぽい」へ(余力で): グラフィックモードやマウス、簡易ウィンドウ風の描画など。
▼ AIが提示した「最低限つくるもの」
自作MBRブートローダ(+ディスクイメージ) : カーネルへ制御を渡す
カーネル入口+スタック+基本割り込み基盤 : C とハードの橋渡し
画面またはシリアルへのログ : デバッグと達成感
タイマー/キーボードなど最低限のデバイス : 「動いてる感」
(発展)メモリ管理・マルチタスク・描画 : 「OSっぽさ」の増幅
AIの回答は「正解」ではなく「たたき台」
AIの回答は絶対の正解ではありません。あくまで私の経験や記憶を引き出し、議論するための「たたき台」です。
大枠の地図が手に入りました。
次回は、このAIの提案を私の経験や制約に合わせて揉み込み、開発を進めるための「大前提」をカチッと確定させていきたいと思います!
次回、何をやって何をやらないのか大枠を決める。
公開中の全記事はこちら!
記事作成のお供に!お役立ちツール!
コピペするだけ!簡単「タイトル+URL一撃コピー(note特化型)」|へろん
コピペするだけ!簡単「AI記事から**を消す(note特化型)」|へろん
その他、こんなことやってみてます!
気に入ったらスキ、フォローよろしくお願いします!
note外から見にきてくださったかたも、もしよければハートマーク押して頂けたら励みになります😊
