トップページ

MONA-0.3.0--ブートプロセス

MONAのバージョンが0.3.0になり、付属アプリケーションの分割、など MONAを取り巻く環境も変わってきました。それに伴ってMONAのブートプロセスも 少し変わってきました。この文書ではMONA-0.3.0におけるブートプロセスに ついて述べていきます。

MONA-0.3.0のブートプロセスでMONA-0.2.0と大きく異なる点は、 次の2点です。

まず、CD-ROMブートへの対応ですが、 通常のCD-ROMブートであれば、CDへのアクセスはBIOSファンクションコールを 用いて、フロッピーディスクへアクセスするときと全く同様に アクセスできます。つまり、フロッピーディスクでのブートプログラムが そのまま使える、というわけです。この仕組みをEl-Toritoといいます。

MONA-0.3.0でのもうひとつの変更点は、マイクロカーネルを より意識して、ディスクドライバをカーネルから独立させることです。 この作業にはブートプログラムの大幅な変更を伴っており、 プログラムの変更点の大部分はこのためになされたものです。

フロッピーかCDかに関わらず、ブート時のリアルモードでのディスクアクセスは、 BIOSファンクションコールを用いることで行うことが出来、専用のドライバプログラムは 必要ありません。 しかし、リアルモードからプロテクトモードに移行すると BIOSファンクションコールを用いることが出来ず、CD-ROMへの ディスクアクセスは自前でドライバを記述して行うことになります。 バージョン0.2.0までのMONAはディスクドライバはカーネルの中に含まれていました。 これは、ブートプログラムがリアルモードでの動作中にカーネルのファイルだけを メモリに読み込み、リアルモードに移ったあと、カーネルに制御を移したためです。 このようなシーケンスでは、カーネルが実行しているときに、新たにディスクドライバを ディスクから読み出す、という芸当は出来ません。したがって、カーネルの内部に ドライバプログラムを持つ、ということに成るわけです。

ディスクドライバをカーネルから独立させるためにはどうすればいいのでしょうか。 方法は色々ありますが、MONA-0.3.0では カーネルとドライバファイルを別々に読み込む という方法をとりました。 そして、カーネルが動作すると、既に読み込んであったドライバプログラムを プロセスとして実行する、という方法をとっています。尚、カーネルと一緒に 読み込まれるプログラムはドライバファイルのほかにも、プロセス管理プログラムや、 標準的なサービスプログラムを監視するプログラムも含まれています。

MONA-0.2.0ではカーネルをロードするプログラムは、secondboot.asmが担当 していました。MONA-0.3.0ではこのプログラムで、カーネルのほかにディスク ドライバやプロセス管理プログラムなどを読み出すことになります。 バージョン0.3.0でのsecondboot.asmは MONA-0.2.0の時と比べて処理が複雑になることと、先進的な試みということで、 C# による実装 を行っています。具体的には、C#でプログラムを書いて、 それをアセンブリ言語に変換することになります。これがいわゆる、 「MONA.NET」というやつです。これがリリース版に出てくるかどうかは わかりませんが。

以上、簡単でしたがMONA-0.3.0におけるブートプログラムの変更点について 解説しました。

トップページ
inserted by FC2 system