ウォンツテック

そでやまのーと

OS作成 - elfローダ編

elfヘッダ(elf header, elf section header, elf program header)を読み込んでヘッダの中身を解析し、メモリ上にロードする単純なelfローダを実装いしました。ユーザプロセスの仮想メモリ位置はLinuxと同じ0x8048000に配置。というのも開発環境がLinuxなのでデフォルトコンパイルすると.textのロード位置が自動的に0x8048000になるため、そのままの位置に置いたほうがわかりやすいからです。
再配置はまだ実装していません。elfに関してはmonaもantosも再配置を実装していませんでした(monaはPEで再配置を実装)。
今回の実装でpaging回りも少し弄ったのですが、そのせいか以前は無かったバグが発生しました。プロセス1,2を交互に実行していると、まれに一般保護例外が発生し、キーボード割り込みでまれにpage faultが発生します。 根が深そうだから所々手直ししながらデバッグしよう。

次は上記バグを直しつつユーザプロセス用のライブラリを書き、システムコールも充実させて簡易シェルへ!
sodex rev.24