lol, i knew someone would come up with the 64bit processor suggestion
i
only wish i could go 64bit as it would be the answer to all my problems.
unfortunately due to the strict security requirements this is a route i can
not take, sadly.
I do know how to use memory mapped files, but i just think Its just really
annoying that i cant use utilise the MapViewOfFileEx and specify the base
address that i can reused time and time again which i know has been
allocated and reserved…
basically i am dealing with large streams of compressed imagery of 20GB’s
which needs to be decompressed, the decompressed data is currently stored to
a 3GB cyclic buffer using a memory mapped file… and this file lives on an
extremely fast raid with transfer speeds of 400MB/s.
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of
xxxxx@3Dlabs.com
Sent: 10 June 2004 14:11
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Memory Mapped IO
Silly suggestion time: How about using an Athlon64/Opteron system and
Windows XP for 64-bit extended systems, where you can EASILY have more than
4GB of address space. In fact, even a 32-bit app will work just fine there,
because it’s given almost all of the 4GB of address space to play with in
user mode, only a tiny little bit is reserved by the kernel.
Another option might be to try the /3GB switch on the boot.ini line, and
compile your app to “know about large memory” [pass /LARGEADDRESSAWARE to
the linker]. Then you have another 1GB to play with.
I’m sure lots of other list members will come up with less silly
suggestions, but you never know…
–
Mats
-----Original Message-----
From: James Dunning [mailto:xxxxx@generaldynamics.uk.com]
Sent: Thursday, June 10, 2004 1:37 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Memory Mapped IO
I have just noticed that when a process starts and loads all the necessary
dll’s required for the process, the virtual address space in user-mode
between 0x10000 - 07FFFFFFF is fragmented and in some case can even cause
problems when you require to allocate a large chunk of contiguous memory.
I don’t want to rebase all the system dll’s unless there is a windows system
option or boot option which can force all dll’s to load at the top end of
memory.
I have a requirement where I need to be able to process extremely large data
files which can be in excess of 20GB’s however I need to be able to map at
least 512 Megabytes of the file into memory. Obviously I need to unmap and
remap 512MB at various positions within the file.
To do this I need to guarantee that I can remap 512MB once I have unmapped
it, without other threads in the process fragmenting the previous mapped
virtual address space!
I thought I could achieve this by performing
LPVOID pBaseAddress = VirtualAlloc(NULL, 0x20000000 MEM_RESERVE
PAGE_READWRITE)
Then passing the base address to MapViewOfFileEx but I cant seem to get it
to work.
Is there a way to guarantee that 512MB can be mapped once the previous
section has been unmapped? Ideally I would like to reserve a chunk of memory
for mapping my file then the process initially starts up.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@3dlabs.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
General Dynamics United Kingdom Limited
Registered in England and Wales No. 1911653
Registered Office: 100 New Bridge Street, London, EC4V 6JA
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as:
xxxxx@generaldynamics.uk.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
General Dynamics United Kingdom Limited
Registered in England and Wales No. 1911653
Registered Office: 100 New Bridge Street, London, EC4V 6JA