質問です。たとえば下記のようなソースがあったとき、
 int  val = 100;
 int*  p = &val;
 if (fork()== 0) {
   // 子プロセス:
   *p = 50;
   :
   :
 } else if(pid > 0) {
   // 親プロセス:
   :
   :
 }
子プロセスで変数の値を変えても、親プロセスの同じ変数は変わりません。
valは同じアドレスなのに。
これはMMUがあるからプロセス空間を分けられているからだとおもいます。

でも古いUNIXではどうなんでしょうか?
MMUがないころにどうやって上のような問題を解決していたのですか?

またこれに関わるのかも知れませんが、古いUNIXのスワップ処理は
プロセスまるごとDISKに吐き出していたのでしょうか?