[kernel-ml 27] TASK&STACK

藤永清和 (NBA01614@niftyserve.or.jp)
Tue, 06 Jun 1995 00:17:00 +0900

 kernel-mlのみなさん、藤永です。

 真鍋さんと同じく、わたしも「局所変数」を他のタスクと共有できなくてよいと考
えています。
 隆一さんが言われる、再帰呼び出しや再入の問題とタスク間での共有とはまったく
異なる話ではありませんか?

下記のプログラムで、proc1とproc2では、proc2がアクセスするのは意味のないデ
ータでしょう。

int *share_data;

main()
{
proc1();
proc2();
}

proc1 ()
{
int data[2];

data[0] = 1;
data[1] = 2;
share_data = data;
}

proc2 ()
{
printf ("data[0] = %d\n", share_data[0]);
printf ("data[1] = %d\n", share_data[1]);
}

 「タスク間でスタックの中身を共有できない」という仕様にしましょう。ただ、禁
止=検出(エラーチェック)は不可能かな?

 [プロセスの生成とメモリ]
 プロセスを生成するときには、新しい論理空間を割り当てます。(管理情報作成)
  プロセス管理がオブジェクトファイルをオープンする。
  タスク生成もプロセス管理? (TCB作成)
 タスクにリージョン割り当て。
 もし、すでに動いているプログラムであれば、コードリージョンを共有する。
 新規のプログラムなら、コード部に実メモリを割り当てて、ロードする。

 TCBに、リージョン情報と、自タスクが属するプロセス情報(IDなど)が必要
ですね。