ウォンツテック

そでやまのーと

OS作成 - ページング&プロセス編

sodex rev.22
プロセスの生成に成功。execveシステムコールを作成し、ファイルシステム上のファイルをext3_readでプロセス用物理メモリにロードし、ページングでそれをリニアアドレス0x0〜部分と関連付けました。まだopenしたファイルのデータとプロセスの関係性がいい加減な所はありますが。
肝心のpriviledge levelの変更(0→3)はまだ行われてません(汁。
ただ、やり方は大体把握しました。スケジューラ用の割り込み(PICタイマー)が発生した時、ユーザプロセスにiretdする前にスタックの中身(cs, eip, eflags)をpopして捨てて、新しいcs, eip, eflagsを仕込めばその後はそのcsで稼動すると思われます。
鬼門だったプロセス生成(のほんの一部)を何とか書けたので簡易シェル生成への道が開けました。残りの鬼門はelf loaderですね。これはファイルシステム作成のノリでいけるとは思いますが時間が掛かりそうです。(こないだ買った

Linkers & Loaders
Linkers & LoadersJohn R. Levine 榊原 一矢 ポジティブエッジ

オーム社 2001-09
売り上げランキング : 32476

おすすめ平均 star
stardllのしくみがわかる!
starパッケージソフト開発者の必読書

Amazonで詳しく見る
by G-Tools
を読み込む予定です)
下の画は「ptest」「ptest2」実行ファイル二つを読み込んでスケジューラで交互に実行している所です。