Reply 900 of 909, by ElectroSoldier
- Rank
- Oldbie
javispedro1 wrote on Today, 13:14:Well, specially on this forum, you should probably mention Address Windowing Extension, basically like DOS' EMS/XMS for Win32 :P […]
spiroyster wrote on 2026-09-14, 18:57:Windows XP 32-bit limits processes to 2GB unless built with laa (Large Address Aware, which is a compiler flag), in which (as an app) you can access 3GB, no more. If you want/need more within a single process, you have to use file memory mapping, not RAM (which is kinda application version of using a swap file). Swapping, RAM mapping (address translation) etc is all handled by the OS since we have something called protected memory, and have done for a number of decades now.
Well, specially on this forum, you should probably mention Address Windowing Extension, basically like DOS' EMS/XMS for Win32 😜 . it does allow allocating and addressing more than 2^32 from a single process, and it is neither file mapping nor swapping (if anything it is the opposite, as AWE-allocated memory cannot be swapped out!).
The Solutor wrote on Yesterday, 21:11:Those are mostly retrofit technical explanations to justify a nasty commercial practice. Wrong in a number of ways, purposely wrong given Chen is anything but an incompetent.
I do agree, capping client 32-bit Windows at <4GB is purely arbitrary. Exactly the same story as removing 16-bit support from 64-bit windows, or all these CPUs from Windows 11. It is all arbitrary, any technical reasons you can point are mostly irrelevant when such limits can be lifted trivially even by third parties.
E.g. if the argument is 3rd party driver compatibility, then watch how they did it recently with VBS, or how did they it did with PAE/ the NX bit itself in the same time period!
They offer the toggle to users. They have a denylist/allowlist of drivers that are known to be incompatible/compatible.
They could have simply done the same to allow >4GB on client 32-bit Windows.
So it is just a way to push users to the direction they want. Whether this direction is a good thing or not, your mileage may vary.
Now all irrelevant with the death of 32-bit OSes anyway...
Dont really want to get into the core of your argument per say but the removal of the 16bit subsystem from the OS was a hardware requirement from AMD and Intel not something MS decided they wanted to do.
4Gb might look like it was an arbitrary cap but when you know what the problem was 4Gb was the obvious place.
0x00000000 = 0 bytes
0xFFFFFFFF = 4,294,967,295 bytes
As long as physical memory never exceeds 0xFFFFFFFF, every single physical memory address in the computer can fit cleanly into a standard 32bit CPU register (EAX, EBX, etc.) and into a single 32bit hardware register on an expansion card.
An analogy of what happened would be.
Your dogs are taking a dump in your back yard so you clean it up.
Every dog in the neighbourhood is dumping in your back yard so you errect a security fence and change the yard to a garden complete with flower pots and a pagoda.
Now they didnt get the flower pots and pagoda but its pretty clear their design called for one... all you got was a clean yard.
Or
By clamping the maximum physical address to exactly 4Gb 2^32 in the client kernel HAL PAE page tables remained active
The CPU could still use the 64bit page table entries required by the hardware NX bit to enforce DEP against network worms. Every physical address remained below 0xFFFFFFFF
The Windows memory manager guaranteed that it would never hand a device driver a physical DMA buffer with a high bit set so lazy driver code never triggered bugs
A buggy 32bit driver that cast physical address pointers down to standard 32bit integers would never truncate data, because the upper 32bits were always guaranteed to be zero.
The idea of a toggle to users...
Do you remember the tyrade of complaints about UAC in Vista?
Its common now of course people expect to be asked to elevate a process to admin but back then it was the wild west baby!
You are talking about an era in computing I can only equate to the American wild west.
Now it you want to listen to music there is Youtube, Spotify, Amazon, Music CDs and all those old music formats.
Back then the default answer to wanting to listen to the latest album was to load up a Peer2Peer client and steal it!
Its quite odd looking at what happened over the years. We have go from people downloading for free, illegally but free, to people willingly paying for their music.
There are edge cases of people who do still steal it, but they are edge cases now, the vast majority of people use amazon, spotify etc etc.
The younger guys I work with now, they are much much younger than I am, they are all tech savvy etc but they wouldnt know where to start looking to get free music downloads that works every bit as well on their phone.
I remember using IRC to DCC music of other users. then came the Napster and later the emule, kazza P2P networks... later torrent sites like suprnova and then piratebay took that crown. But free music was there. Thats why I say early 2000s computing was the wild west.
The 4Gb limit wasnt just a good place to put the cap, it was out n out required there to stop the problem the driver devs caused by writing drivers that were fundamentally broken. And XP fixed them by not allowing them to do what they want to do with its 4Gb hard cap.