Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!ut-sally!utah-cs!utah-gr!stride!bruce From: bruce@stride.UUCP Newsgroups: comp.arch,comp.unix.wizards,comp.os.misc Subject: Re: "fork" with no MMU (was Re: Shared libraries (Was: ...) Message-ID: <691@stride.Stride.COM> Date: Fri, 30-Oct-87 14:58:58 EST Article-I.D.: stride.691 Posted: Fri Oct 30 14:58:58 1987 Date-Received: Sun, 1-Nov-87 09:56:32 EST References: <8714@utzoo.UUCP> <286@usl> <73@usl-pc.UUCP> <881@sugar.UUCP> <31162@sun.uucp> <895@sugar.UUCP> Reply-To: bruce@stride.stride.com.UUCP (Bruce Robertson) Organization: Stride Micro, Reno, NV Lines: 19 Xref: utgpu comp.arch:2591 comp.unix.wizards:4869 comp.os.misc:303 The Idris operating system works reasonably well without an MMU, including the "fork" system call. It uses a combination of memory and swap space, implemented as a "swap cache". The parent process is logically swapped out, but if it is small enough it is actually swapped to the swap cache. I don't remember if Idris does, but you could probably avoid swapping the text segment with this method. This scheme works fairly well, AS LONG AS the child does the usual thing and execs another process quickly. This other process is loaded elsewhere in memory, allowing the parent to come back into memory. It totally fails for things like "tip" and "cu", as written. The Idris version of cu actually has the child process exec another program to handle the incoming stream of characters. -- Bruce Robertson bruce@stride.Stride.COM cbosgd!utah-cs!utah-gr!stride!bruce