Path: utzoo!attcan!uunet!cs.utexas.edu!rutgers!uwvax!tank!eecae!cps3xx!usenet From: usenet@cps3xx.UUCP (Usenet file owner) Newsgroups: comp.sys.amiga.tech Subject: Re: MEMF_PHYSICAL? Message-ID: <3244@cps3xx.UUCP> Date: 2 Jun 89 00:05:27 GMT References: <8906010252.AA11810@jade.berkeley.edu> <367@xdos.UUCP> Reply-To: porkka@frith.UUCP (Joe Porkka) Followup-To: comp.sys.amiga.tech Distribution: na Organization: Michigan State University Lines: 44 In article <367@xdos.UUCP> doug@xdos.UUCP (Doug Merritt) writes: >against itself. The Amiga simply relocates each copy to a different >piece of allocated memory (patches each process to address correctly >relative to its load point). But once that's done, each must always reside >in that particular piece of physical memory. This puts a severe restriction Nope. It must *think* that it is at the same place in memory. MMUs can make an actuall block of memory at hardware address $cef3d appear to the CPU as if it were acutally at $d3fec. Better yet, with an MMU and some clever software, memory address $cef3d can actaully be stored at block #543212 on your disk. (Note: the actuall numbers given here are not important) This problem is no different than the one-address-space-per-process model. THink of it this way: The 680x0 can address 2^32 bytes. With a UNIX type memory managament system, that works out to be 2^32*#of process (given enough disk space :-) ). On a single address space VM system, you would be strictly limited to 2^32 bytes - for everything. Since most people cannot afford to buy 2^32 bytes worth of semiconductors for their computer, VM was invented. When a the CPU makes a reference to a particular address, the MMU does a table look up, to discover where the information at that address is currently stored. It could be that the byte at that address is actually in memory, but it will probably be at a different actuall address. In this way, the MMU is just a function, like y=f(x). The CPU plugs in 'x' and expects to get what it thinks ought to be at that location. If the info is not in memory, the MMU picks a chuck of memory to swap out. It gets written to disk, the needed block is loaded in is place, and the address mapping function is updated. Simple huh? > >address spaces, or even on systems with a single address space but >each task limited to writing in the memory that belongs to it. > >We can't (cleanly/simply/fully) introduce such a model to a new rev of >the Amiga hw/sw because the system is committed to use of shared memory >for message passing and for modification of system structures. Yes we can. Any program can read any address. The MMU makes sure the right thing gets back to the CPU. The MMU should also *enforce* protected areas, so that even though Program A can peek at Program B, it wont be allow to poke it. > >Because of this it just doesn't make sense to claim that a single address >space model is inherently superior to multiaddress space models. It Bah! > This is an example of a short .signature jap@frith.cl.msu.edu