Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!sdd.hp.com!elroy.jpl.nasa.gov!decwrl!mcnc!borg!oscar!tell From: tell@oscar.cs.unc.edu (Stephen Tell) Newsgroups: comp.sys.amiga.programmer Subject: Re: Virtual Memory Program? Message-ID: <2155@borg.cs.unc.edu> Date: 8 Mar 91 03:36:53 GMT References: <%1+-SC%@irie.ais.org> <1991Feb20.175103.24611@jato.jpl.nasa.gov> <1986@public.BTR.COM> Sender: news@cs.unc.edu Organization: University of North Carolina, Chapel Hill Lines: 48 In article <1986@public.BTR.COM> valentin@public.BTR.COM (Valentin Pepelea) writes: >In article <1991Feb20.175103.24611@jato.jpl.nasa.gov> >jdickson@jato.Jpl.Nasa.Gov (Jeff Dickson) writes: >> >> To support a virtual memory application (more like a virtual disk), >>is it safe to assume that the application will only use AmigaDOS to access >>the file's contents? Without an MMU I don't see any other way. Comments? > >Obviously, DMAing into virtual memory is not possible without the full >support and knowledge of the operating system. But then, I don't know >of any operating system offering the possibility of DMAing into virtual >memory. No wonder considering the futility of such an exercise. > >Valentin Internet: valentin@btr.com >-- And also, in , efeustel@prime.com (Ed Feustel) writes: >In order to DMA into virtual memory, the dma must use virtual addresses or >the OS must supply a properly translated virtual address for each page. >In Prime Computer's proprietary system, the I/O has access to the translation >table and DMA goes to virtual memory. The Sun-3 and Sun-4 machines also do this. All DMA accesses, whether originating from VMEbus or on-board devices, to memory on the CPU board goes through the MMU. A device uses an address way down at the bottom of VMEbus address space. Hardware on the cpu board maps this up to the top of virtual address space, called somthing like "dma virtual space". Just before an I/O transaction, the driver calls routines to allocate and map a dma virtual page to the appropriate physical page (which may also be accessed at another virtual address, say from within a process or the kernal) On the other hand, DMA accesses from VMEbus devices to ordinary VMEbus memory (or to another VMEbus device - we've done this!) do not. This is straying from the point, but it does show that just about any architecture you can think of, and some you can't, has been implemented somewhere. Of course, the hardware and software has to be designed from the ground up to deal with it. Just for the record, I'd also like to be able to say Foo *bar = AllocMem(sizeof(Foo), MEMF_VIRTUAL);. Steve -------------------------------------------------------------------- Steve Tell tell@cs.unc.edu H: +1 919 968 1792 #5L Estes Park apts CS Grad Student, UNC Chapel Hill. W: +1 919 962 1845 Carrboro NC 27510