"Xalinai" wrote in message
But WindowsNT contained a thing called HAL (Hardware Abstraction Layer) to overcome processor specific design issues and more.
This worked fine for other things (bigendian and littleendian differences between MIPS and Intel architecture) so memory limits are a design decision - like the decision to load system processes memory at the highest adresses first and user processes lowest addresses first. They could have used the existing MMU in the MIPS systems for process specific memory access rights but there was nothing similar in the Intel system available at that time so decision was made to implement access rights by process address location.
Well according to the R4000 processor manual I have there is no choice in the matter. User mode is 2G and supervisor mode is 2GB. In fact the first .5GB or supervisor mode address space is non paged memory and uncached memory. The next .5GB is non paged memory but can be cached. The final 1GB of supervisor mode address space is normal paged and cached memory.
Of course the IA-32 processor had no hardwired limits like the MIPS processor, but MS apparently decided to keep things consistent and designed the system memory maps the same for all Win32 systems (NT based at least). For example, all of the system DLLs are loaded a known addresses at the top of the user address space. The non pages pool is in a certain address range. etc... Of course even this does not stop anything and MS has allowed certain versions of the server variant of NT to provide 3GB of address space to processes. Unfortunately MS has not let the
consumer versions of NT have a 3GB user mode address space. You cannot have 4GB of address space because NT is fundamentally designed such that kernel mode code has direct addressibility to user mode memory. For example Linux can be built such that the "kernel" swaps address space when it is called so it takes no address space away from the process. Of course this incurs some additional overhead. Typically Linux operates with a 3GB user address space.
I am well aware of the HAL but it has no ability to overcome a hardwired processor. Basically least common denominator choices are made and you then move forward from there without looking back. The HAL does abstract concepts like "setup an interrupt vector" which varies by processor. This is basically the things that the HAL abstracts. Also Windows is fundamentally little endian, and always runs in that mode.
And now, almost ten years later, there are restrictions in a current Windows version that come from a platform that isn't supported for more than 5 years and two major versions.
That is because 2GB user address space is not an issue in the marketplace. It is were the consumer version of NT would have lifted the 2GB barrier as it has been on the server version. 2GB is a common problem for large database servers.
Norman