Path: utzoo!utgpu!water!watmath!clyde!att!pacbell!ames!pasteur!ucbvax!decwrl!sun!pitstop!sundc!seismo!uunet!portal!cup.portal.com!doug-merritt
From: doug-merritt@cup.portal.com
Newsgroups: comp.sys.amiga
Subject: Re: Amiga UNIX
Message-ID: <6761@cup.portal.com>
Date: 22 Jun 88 14:33:33 GMT
References: <211@laic.UUCP> <3663@cbmvax.UUCP> <1872@sugar.UUCP> <134@ssdis
Organization: The Portal System (TM)
Lines: 32
XPortal-User-Id: 1.1001.4407

Erik Johannes writes:
>For a 68k system, one must
>have an MMU or a 68020 (68030) which has a built in MMU.

Nominally, yes. The other way to do it is via software support. It
is quite feasible to construct compilers/assemblers/linkers etc
which force all data storage to be in a separate memory area than
text, and which uses base-register addressing to get at that data.

You can then do the same sort of thing as on an 80286...just reset
the register used for base addressing and you've got yourself a new
data space.

But AmigaDOS facilities use a lot of absolute pointers within the users'
"address space", so making fork() work for regular AmigaDOS processes
would be very difficult, to say the least.

But if you ran Minix instead, then you could get fork to work. The
one thing that would still be missing is that a program could still
conceivably accidentally set a "segment register" incorrectly and
start zapping other "address spaces". This could be minimized by careful
compiler code generation, but presumably *could* happen anyway. Whereas
on the 286, the MMU will not allow you to poke around in the wrong
segments.

So on 68K systems, you *can* implement fork(). You just have to do it
with the right OS, and you don't get MMU protection.
	Doug
--
      Doug Merritt        ucbvax!sun.com!cup.portal.com!doug-merritt
                      or  ucbvax!eris!doug (doug@eris.berkeley.edu)
                      or  ucbvax!unisoft!certes!doug