Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!crdgw1!crdos1!davidsen From: davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) Newsgroups: comp.arch Subject: Re: IBM PC prehistory Message-ID: <2019@crdos1.crd.ge.COM> Date: 16 Jan 90 13:48:56 GMT References: <7413@drilex.UUCP> <380@bambam.UUCP> Reply-To: davidsen@crdos1.crd.ge.com (bill davidsen) Organization: GE Corp R&D Center, Schenectady NY Lines: 31 In article <380@bambam.UUCP> bpendlet@bambam.UUCP (Bob Pendleton) writes: | The back patching operation can be pretty quick, but it does slow down | program loading and you pay for table space in the disk copy of the | program. The point is that you can relocate programs at load time with | no runtime penalty, no weird coding style for relocatability, and no | MMU. This is a good point, but it doesn't solve the basic problem of no MMU, which is protecting processes from one another. Without an MMU the segmented archetecture, at least in small mode, is better. A well behaved compiler will never generate anything which modifies the segment registers, and a program will stay within it's own memory, even if it gets a pointer messed up. Note that this (a) doesn't protect against deliberate bad behavior, just against a program getting a pointer hosed, and (b) limits the addressable memory to one segment (two for separate i and d space). One example of this is PC/ix (SysIII) running on an XT. Running development on a production machine was never a problem, but it would not stand up to hackers with access to assembler, of course. BTW: I think CP/M used something very similar to a relocating loader to build the system for a given size. There was a bitmap of addresses which needed to be relocated. I remember (vaguely) doing two absolute assemblies and running a bitmap generator to "diff" the two and write the map so you could relocate later. Much easier with a relocating assembler, of course. -- bill davidsen (davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen) "Stupidity, like virtue, is its own reward" -me