Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!cbatt!gatech!amdcad!bandy From: bandy@amdcad.UUCP Newsgroups: comp.sys.atari.st Subject: Multitasking discussion Message-ID: <14836@amdcad.UUCP> Date: Wed, 18-Feb-87 18:15:17 EST Article-I.D.: amdcad.14836 Posted: Wed Feb 18 18:15:17 1987 Date-Received: Fri, 20-Feb-87 01:05:20 EST Followup-To: comp.sys.atari.st,comp.os.minix Organization: AMDCAD, Sunnyvale, CA Lines: 31 Keywords: minix, amiga's os Well, as you may know, Andy Tanenbaum has mentioned a number of times that a friend of his is working on a port of minix to the ST. Well, I was curious as to which method was being used (planned on being used? I don't know how far along that port is), so I dropped a note off to him and found out that when processes are loaded, they are relocated on the fly -- apparently the same method that the Amiga folks use. When a process forks, the child is "swapped" to somewhere in memory (wherever there is enough room). When the scheduler starts the child, it swaps out the parent (to somewhere else in memory), swaps the child to where the parent is and starts running the child -- this way all the text and data references are okay. In most cases, the child will exec so the new process being loaded in can go anywhere and the parent process can go back to where it belongs. This all should happen within one scheduler tick, so you won't have to do more than four copies of the parent's process image if you're careful // however, if you're really careful, you could get away with two copies (for the fork/exec case) -- copy the parent, run the child (where the parent was), when the child execs, copy the parent back to where it belongs You might be able to get away with not copying the parent back *just shuffle the pointers), but with no read-only pages (no mmu), you have no guarantees that the child hasn't scribbled all over the data or text pages). Yes, I know, this sounds gross, but it isn't too bad -- after all, if you do want your machine to go faster, you can wait until one of the home-computer manufacturers comes out with a cheap machine with an MMU and then run Minix on it. -- Andrew Scott Beals, {lll-crg,decwrl,allegra}!amdcad!bandy +1 408 749 3683