Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxt!houxm!whuxl!whuxlm!akgua!gatech!ut-sally!pyramid!decwrl!sun!wmb From: wmb@sun.uucp (Mitch Bradley) Newsgroups: net.micro.atari Subject: Re: Unix without an MMU Message-ID: <3120@sun.uucp> Date: Mon, 6-Jan-86 12:55:26 EST Article-I.D.: sun.3120 Posted: Mon Jan 6 12:55:26 1986 Date-Received: Wed, 8-Jan-86 06:12:56 EST References: <12173015456.10.MRC@PANDA> Reply-To: wmb@sun.UUCP (Mitch Bradley) Organization: Sun Microsystems, Inc. Lines: 33 > If you have multiple processes running in a non-memory managed > system, you are restricted to one of the following: > . each process absolute-assembled into a different partition of > memory (ala DEC RSX-11) > . only one process in memory at a time -- each process swapped > out when it blocks or its quantum expires > . all software assembled to perform all memory references > indexed by a base register, which is loaded by the operating > system and which the program must not change (ala old IBM OS) > ...Mark Crispin I know of one other alternative: The binary file can contain a relocation list which identifies locations that need to have a base address added when the program is loaded into memory. When the program is loaded into memory, the load function ("exec" in Unix terminology) relocates these addresses before the program is started. This is exactly what TOS does. The relocation list is stored as a stream of byte offsets to the next longword that has to be fixed up. There is a reserved byte value that skips without relocating, so it is possible to relocate any program with less than 25% file storage space overhead. The maximum overhead would only occur if every single longword had to be relocated. A typical C program requires much less overhead, below 5%. It does take some time to do this, but not very much; the time is not noticeable compared to the disk access time necessary for loading the program. It seems to work pretty well in TOS. Of course, one program can disable another by writing to memory that it doesn't own, but that is a separate issue. Mitch