ずいぶん遅れましたが、プロセスマネージャとメモリマネージャ間のイン
ターフェイスの案です。
まずメモリーのモデルとして以下の様に定義します。
◯BTRON プロセスのメモリイメージ(1プロセス内で2タスク動かした状態。
0000 0000+−−−−−−−−−−−−−−+
| 未使用領域 |
0040 0000+−−−−−−−−−−−−−−+−−−−
| 実行コード領域 | *1
+−−−−−−−−−−−−−−+−−−−
| データ領域(静的) | *2
+−−−−−−−−−−−−−−+−−−−
| ヒープ・スタック領域 |
| +−−−−−−−−−−−−+
| | ヒープ領域 |
| +−−↓−−−−−−−−−+
| | |
| | 未使用領域 |
| | |
| +−−↑−−−−−−−−−+
| | スタック保護領域 | *3
| +−−−−−−−−−−−−+
| |スタック保護領域(task-2)|
| +−−−−−−−−−−−−+
| | スタック保護領域 |
| +−−−−−−−−−−−−+
| |スタック保護領域(task-1)|
| +−−−−−−−−−−−−+
| | スタック保護領域 |
4000 0000+−+−−−−−−−−−−−−+−−−−
| 共用領域 |
8000 0000+−−−−−−−−−−−−−−+
| カーネル等 |
+−−−−−−−−−−−−−−+
◯機能概要
プロセスマネージャからメモリマネージャへの要求として、プロセス空間の
作成・破棄とタスク用スタック獲得・解放。メモリマネージャからプロセスマ
ネージャへの要求として、リージョンへのロード要求を定義します。
1. プロセスマネージャからメモリマネージャへの要求
(正しくはBTRONプロセスのLOWLIB内よりメモリマネージャへの要求)
1.1 プロセス空間の作成
プロセス起動時に、プロセスの初期化コードよりメモリマネージャへ*1〜
*3までの領域を指定し管理を依頼する。
また、*1,*2に対しリージョンの生成を依頼する。
1.2 プロセス空間の破棄
プロセス終了時に、プロセスの後処理コードよりメモリマネージャへ全リー
ジョンの開放管理の終了を依頼する。
1.3 タスク用スタック獲得
タスク起動時に、タスクが特権レベルを3へ移行するまでにスタック領域の
獲得を依頼する。
スタック領域はヒープ・スタック領域より切りだして獲得をする。
1.4 タスク用スタック解放
タスク終了時に、タスクの後処理コードよりタスク用のスタック領域のの解
放を依頼する。
2. メモリマネージャからプ鴻Zスマネージャへの要求
2.1 リージョンへのロード要求
*1,*2の領域についてアクセスが有ったとき、ファイル上等に存在する
コード・初期データを該当の領域へ設定すよう依頼する。
詳細へ続く