LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

allocating +1GB of memory with one array

RE; the MSB of addressing.

I dropped out of the OS details when Windows was in its infancy. The following may no longer apply.

The MSB of the address used to be used to determine if the address in question is a OS call or a non.

OS calls let you get at protected resources like memory address and translation logic etc.

Have you ever seen the error message "access violation" ?

presenting an address that has the MSB set while not operating in kernel (or whatever they call it now) mode was one way of producing this error.

So going over 2G is not only an OS but also a hardware issue.

Ben
Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 11 of 12
(643 Views)


@shoneill wrote:
Well considering that a 32-bit integer can address a maximum of 4 GBytes, the limit is going to be an OS one at some time or another. Windows 64-bit is around the corner, so maybe there'll be an easy solution soon.

On a side note, why is 2 GB the limit? Does Windows reserve one bit of the address space for something else?


Windows at least in the 9x version and as far as I know also in the NT kernel unless specially tuned, reserves the upper 2GB for system usage (kernel, system DLLs and such and allows an application to use the other 2GB at max. Even 32bit Linux has a similar architecture eventhough you can compile the kernel such that it allows 3GB for applications and 1GB for the system. Of course 64bit Linux is already there and working fine on hardware which supports it.



PS This kind of reminds me of an old Intel TX-motherboard chipset (BX? I can't quite remember) which could hold something like 2 GB, but could only actually address 512 MB of it. That was so silly, it was cool.



Most probably it would have been possible to use more RAM but the machine would have been crawling after that. The problem was with these systems that to save a few gates the chachable address lines were limited (the chipset was considered low cost and only meant to support low cost computers where nobody ever should even think about aproaching the unbelievable amount of 512MB RAM) so any memory above that limit was non chachable and whatever happened to get in there would slow down the system so much that it would have been actually slower than with less memory and the possibly necessary memory being swapped out.

Rolf Kalbermatter
Rolf Kalbermatter  My Blog
DEMO, Electronic and Mechanical Support department, room 36.LB00.390
Message 12 of 12
(852 Views)