Path: utzoo!attcan!uunet!lll-winken!lll-tis!oodis01!uplherc!sp7040!obie!wes From: wes@obie.UUCP (Barnacle Wes) Newsgroups: comp.sys.amiga Subject: Re: Amiga UNIX Summary: Basic MMU operations... Message-ID: <237@obie.UUCP> Date: 27 May 88 20:15:36 GMT References: <211@laic.UUCP> <3663@cbmvax.UUCP> <1872@sugar.UUCP> <134@ssdis.UUCP> <547@wsccs.UUCP> Organization: Great Salt Lake Yacht Club, north branch Lines: 28 In article <134@ssdis.UUCP>, gsarff@ssdis.UUCP (gary sarff) writes: > Real virtual memory would > give each process ITS OWN address space starting at some point (zero say). > "Each process sees a linear address space based at 0..." How does the process > "see" this? Chances are on a busy amiga, it won't even get loaded into the > same place(s) in RAM two times in a row, if a program prints the address of Of course it wouldn't get loaded into RAM at the same place two times in a row - that is what you use virtual memory for! The idea is to put a Memory Management Unit (MMU) between the processor and the physical memory bus. When the processor wants to store/load to/from memory, it requests the location from the MMU. The MMU looks up this VIRTUAL address in a table of PHYSICAL ADDRESSES, and then reads or writes the physical RAM as appropriate. This table lookup is called a TRANSLATION. Usually, there is a table for the system and one table per user process. With this scheme, each process has it's own address space, so each process' memory can start at VIRTUAL address 0. BTW, virtual addresses are all you'd ever see in user mode. -- /|\ Barnacle Wes @ Great Salt Lake Yacht Club, north branch / | \ @ J/22 #49, _d_J_i_n_n_i /__|__\ ___|____ "If I could just be sick, I'd be fine." ( / -- Joe Housely, owner of _E_p_i_d_e_m_i_c -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~