訪問者5000人突破記念。バージョン0.3.0におけるブートシーケンスについて 解説しています。
10月17日にダウンロードしたMONAのfirstboot.asmの解析です。firstboot自体は 以前と変わりありませんがこの解析ではサブルーチンも含めて全て解析しています。
secondboot.asmを解析しています。firstboot.asmから呼び出されて このコードに実行が移ります。このコードは2004年3月のころに比べてだいぶ変わっています。 上の解析結果に加えてVBE周りのデータを得るところまで解析しています。
kernel.cppを解析しています。secondboot.asmからcstart.cppを経て カーネルのコードに移っています。
GDTUtil.cppを解析しています。このコードはkernel.cppから呼び出されて グローバルデスクリプタテーブルを再設定しています。
IDTUtil.cppを解析しています。このコードはkernel.cppから呼び出されて 割り込みデスクリプタテーブルを再設定しています。
kernel.cppでプロセスとスレッドを起動している部分から始まってその後の 処理がどのように実行されていくかを検証しています。ihandler, coreと 併せて読むことをお勧めします。
ihandler.asmとihandler.cppを解析しています。といっても現段階では タイマー割り込みの部分しか解析していません。
core.asmを解析しています。これもタイマーとスケジューラに関するところしか 解析していません。
A20問題について語っています。
ページングを管理するPageManagerの解析を行っています。この辺はもう少しくわしく 解析する必要があると思います。
カーネルが使用するメモリを管理しています。mallocやnewはこのクラスを通じて メモリ管理を行っています。また,この文書には書いていませんがMemoryMamager2は K & Rに書いてあるmallocプログラムに準拠しています。ぜひ解析してみてください。
フロッピーディスクコントローラーに関する解析結果を挙げています。まだ解析の 途中です。
FATファイルシステムへのアクセスに関するプログラムの解析です。ファイルを開いて 読み込む部分までしか解析しておらず、ディレクトリの読み込みに関してはまだまだです。 テキスト版もあります。 テキスト版
インテルのFATファイルシステムに関する説明書のディレクトリに関する部分を 訳したものです。勝手に載せていいのかなあ?元のファイルは これ
VBEでフレームバッファーの先頭アドレスを得てそこに描画するまでの 過程をまとめています。すっきりとした内容なのか、薄い内容なのか微妙ですが・・・
サーバーをロードするLoaderクラスについて説明しています。 このクラスの処理でカーネルはプロセスを作成し、プロセスのメモリ空間に プログラムをロードします。カーネルがユーザープロセスのメモリ空間に アクセスするためには必須とされている共有メモリについても解説しています。
サーバープログラムのMakefileの解析とサーバープログラムのMonaMainが実行される までの処理を追う予定です。また、staticオブジェクトのコンストラクタの実行に 関しても言及する予定です。
MONAにおけるメモリ管理について簡単に説明します。というか簡単すぎ・・・。
もう少し立ち入った形でメモリ管理について説明しています。というか、 殆どIntelガイドの引用になっているような・・・。それでも PageManager.cppの動きは詳しく書いたつもりです。えっ?上のPageManager解析が あるから要らないって?
ユーザープロセスがどのようにして子プロセスを生・実行しているのかを ソースコードを追って説明しています。共有メモリについてはまた詳しく説明 する予定なので今しばらくお待ちください。
戻る