You would mmap() parts of the file into N different address spaces and wire them down there to get them all in memory. Then use mmap() in the two process to map the parts you need to access at any given time. However, the PCI-X card comment concerns me. Quinn previously asked if you were wiring because you wanted to do I/O into/out-of the memory and you said no. But here you talk about I/O. On the current G5 systems, there is a limit on the amount of memory that can be prepared for I/O at any given time (so that mappings can be done from the PCI bus address space to main system memory address). So, you will NOT be able to access that memory from PCI-X without doing something special for each I/O. --Jim On Nov 14, 2003, at 8:21 PM, Miller, Larry wrote: It is not clear to me that mmap(2) can let a process get a pointer to a block of physical memory which has been previously wired and contains data that has been loaded oby a PCI-X card. It would be good if after suitable initialization, a file descriptor could refer to say a 7 GB file that is mapped entirely into pages in physical memory. The PCI-X card could load the data into those pages. And then a process on each of the two processord could access whatever part of it they wanted using mmap. Is this possible??? Larry -----Original Message----- From: Jim Magee [mailto:jmagee@apple.com] Sent: Friday, November 14, 2003 4:17 PM To: Miller, Larry Cc: '''darwin-kernel@lists.apple.com' ' ' Subject: Re: Can a task on each of 2 processors share 7 GB of physical m emory mmap(2)? On Nov 13, 2003, at 11:22 PM, Miller, Larry wrote: Jim, What would be an efficient remapping technique so a given task can quickly get a window into a desired part of the physical memory? Larry -----Original Message----- From: Jim Magee To: Miller, Larry Cc: ''darwin-kernel@lists.apple.com' ' Sent: 11/13/2003 5:37 PM Subject: Re: Can a task on each of 2 processors share 7 GB of physical m emory On Nov 13, 2003, at 11:58 AM, Miller, Larry wrote: By wired, I mean the data that I put in the memory remains at a fixed place in physical memory - it is not paged out. This would probably be equivalent to a fixed mapping from VM to physical memory. Then you probably could simultaneously wire 7GB out of 8GB physical as you request. I heard that OS-X Panther was in some ways a 64-bit OS. In other words, I thought tasks could execute 64-bit addressing load and store machine instructions. Maybe I am mistaken. Also, I maybe mistakenly thought that you could compile a C/C++ program in a way such that you could have 64-bit pointers that are dereferenced. There are lots of things that define a 64-bit support. Using 64-bit addresses to access >4GB of mapped virtual memory in a single task is only one (maybe two - depends upon how you count) such feature (which happens to be absent in Panther/Darwin 7.x). The ability to access 4GB of physical of physical memory in the first place is also one. An additional feature is the ability to access and use 64-bit wide registers in critical functions (and have the kernel preserve that state correctly on interrupts/signals, etc...). These last two ARE in Darwin 7.x. If these things are not available, does anyone one have an idea of when they will become available in the future? As always, we can't make any statements about future Mac OS X plans here or elsewhere. But from a technology point of view, it is down-right inevitable that 64-bit address space support will make it into Darwin - eventually. In the meantime, using multiple address spaces to wire the memory down in, and (re)mapping techniques to gain access to some percentage of the memory at any given time, should work. For most applications, this should be acceptable (performance-wise). It's the cost of getting stuff in and out of physical memory that is the real bottleneck. At first reading, this seems to fit well with the "up to 256MB chunk" model of memory allocation you suggested earlier. --Jim _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored. _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored. _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored. _______________________________________________ darwin-kernel mailing list | darwin-kernel@lists.apple.com Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-kernel Do not post admin requests to the list. They will be ignored.