B-Free メンバの方々こんにちは。
11/13 のミーティングに来られなかった方のために、現在の B-Free の進捗状
況について報告します。
(なお、内容は 11/13 に行ったミーティングの資料と同じものです)
B-Free 進捗状況
===============
Last updated: 1994/11/14
1 中心核の現状
1.1 システムコールインタフェースの実装
トラップによってITRON システムコールを呼び出すためのインタフェースを作
成しました。
インタラプトベクタの値は 64 を使っています。
ITRON 仕様書の値とは異なっているので注意が必要です。また、今のところユー
ザモードからシステムコールを呼び出すときには、タスク切り換えは行わない
ことを前提にしています。
システムコールの処理は同じタスクのコンテキストでのカーネルモードが行い
ます(UN*X などと同じ方式)。
カーネルモードでシステムコールを呼び出すために call_syscall という関
数を作成しました。
一応カーネルモードでシステムコールを呼び出せることは確認しましたが、ま
だ十分なテストはしていません。
1.2 「ITRON 構築マニュアル」
ITRON を使用するためのマニュアルを作成中です。
周辺核を作成したときに ITRON ( = 中心核) をどのように使うかを説明する
ことを主な目的にしています。
主な内容は次のものを予定しています。
ITRON の make 方法
周辺核とのリンク方法
立ち上げ方法
ライブラリ関数(システムコール + 便利な関数) についての説明
今のペースだと 約 100 ページ前後のマニュアルになりそうです。
(ライブラリ関数についての説明が 80 ページ位あります)
ITRON 自体の中身については、また別のドキュメントにする予定です
"The Design and Implementaion of the micro kernel for B-free
Operating System" とか ;-P)
この中に載る(予定)の便利な関数についても作成中です。
(周辺核を呼び出す処理を簡略化するための関数などを考えています)
12 月のミーティングには revw version ができることを目指しています。
1.3 その他
仮想記憶インタフェース
以前配布した仮想記憶インタフェースについてのドキュメントを修正しまし
た。
修正した内容は以下のとおりです。
vcre_reg 「機能」の説明と「返り値」の説明の位置を交換した。
vdel_reg エラーに E_OBJ を追加。
vmap_reg 引数(マップするサイズ)についての説明を変更した。
それと、マップできないときのエラー処理についての説明を変更した。
修正した内容は「ITRON 構築マニュアル」に反映します(その前に ITRON に
組み込まなくちゃ)。
2 boot プログラムの改良
2.1 概要
これまでブートは、ひとつの実行ファイルをロードするだけでしたが、
(別個に作成した)複数の実行ファイルをロードするための機能追加を行いまし
た。
2.2 処理
今までのブートは、次のような処理を行っていました。
(1) ハードウェアの IPL が FD からブートプログラム (1st/2nd)
をロード。
(2) ブートプログラムは各種の初期化を行う。
(3) FD 入れ換え/ブートプログラムにboot コマンドの入力。
(4) FD の最初のブロックを読み取り(実行ファイルのヘッダの読み
取り)。
(5) ヘッダの内容を使って実行プログラム(ITRON)をメモリにロード。
(6) ITRONのエントリアドレスにジャンプ
ここの、bootコマンドを入力してからITRONをメモリにロードするまでの処理
が新しいブートでは変更になります。
新しいブートでは、bootコマンドを入力してから次のような処理を行います。
(4) FD の最初のブロックを読み取り(最初のブロックには、FDに入っている
モジュールの数および各モジュールのサイズなどの情報が入る)。
(5) 1番目から n 番目のモジュールを読み取り、メモリにロードす
る。
(6) モジュール情報(仮想メモリアドレスなど)を所定の領域に設定。
(7) 1番目のモジュール(ITRON)のエントリアドレスにジャンプ
今回のブートプログラムの変更に伴い、OS の作成方法がひとつ増えることに
なります。
新しい作成方法では、ITRON および周辺核をコンパイルし実行ファイルを作成
したあと、それらのモジュールをひとつにまとめる作業が必要になります。
なお、従来の方法でもブート可能なようにするつもりです。
2.3 現在の進捗
今のところ、ブートプログラムの変更をしている最中です。
また、各モジュールをまとめるときに、モジュール情報としてどのようなもの
が適当かを考えているところです。
今のところ考えているモジュール情報としては、次のものがあります。
モジュールサイズ
ディスク上でのサイズ
仮想アドレス
実(物理)アドレス
エントリアドレス
タイプ(カーネル or ユーザ)
では。
-----
内藤隆一 (ggc00661@niftyserve.or.jp)