Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ucbvax!UREGINA1.BITNET!JPARR From: JPARR@UREGINA1.BITNET.UUCP Newsgroups: comp.sys.amiga Subject: Ami - MINIX problem for gurus Message-ID: <8711180347.AA10717@jade.berkeley.edu> Date: Tue, 17-Nov-87 22:31:15 EST Article-I.D.: jade.8711180347.AA10717 Posted: Tue Nov 17 22:31:15 1987 Date-Received: Fri, 20-Nov-87 22:02:32 EST Sender: daemon@ucbvax.BERKELEY.EDU Lines: 23 Hi all: I ran across a technical difficulty when trying to port MINIX to the Amiga. How the heck can you do a fork? The problem is this. When a process is first loaded in from disk, it is nicely relocateable up until the time it runs. Once it runs, however, any pointers that it uses will be absolute addresses. When copying the parent over to the child, all pointers will still point to the parents data area. Amiga DOS must run up against similar problems, what does it do? Right now I can think of only two solutions. The first is to have a "running" area in memory. Then whenever a process was scheduled, its image would have to be copied into this area. When finished, it would be recopied back to its own area. Obviously, this is not the best solution, although it would work. (maybe?) The second solution would be to remove the ability to fork altogether and have a single fork_exec call to spawn new processes. As soon as I do this, MINIX is no longer very much like MINIX, so this isn't really too ideal either. Suggestions? (I guess that this means we will have to conceed that Intel did something right . . . .) Thanx, JP