12/03/07 23:11:48.47 .net
質問です。たとえば下記のようなソースがあったとき、
int val = 100;
int* p = &val;
if (fork()== 0) {
// 子プロセス:
*p = 50;
:
:
} else if(pid > 0) {
// 親プロセス:
:
:
}
子プロセスで変数の値を変えても、親プロセスの同じ変数は変わりません。
valは同じアドレスなのに。
これはMMUがあるからプロセス空間を分けられているからだとおもいます。
でも古いUNIXではどうなんでしょうか?
MMUがないころにどうやって上のような問題を解決していたのですか?
またこれに関わるのかも知れませんが、古いUNIXのスワップ処理は
プロセスまるごとDISKに吐き出していたのでしょうか?