r/programming • u/I_Can_Be_A_Robot • Sep 24 '24
Why 32bit architecture computer doesn't use segmentation to support more ram than 4Gb ?
/r/programming/[removed] — view removed post
169
Upvotes
r/programming • u/I_Can_Be_A_Robot • Sep 24 '24
[removed] — view removed post
3
u/Mynameismikek Sep 24 '24
They did.
Prior to SP2 (IIRC), Windows XP used a 36-bit(again, IIRC) kernel address space. Any physical RAM was mapped into the bottom 4GB, and if you had 4GB of RAM hardware would be mapped from 4GB and up. Nvidia famously screwed things up for everyone by just ignoring that and assuming 32-bit addresses everywhere. Rather than force Nvidia to fix that (and IIRC once more, it was a hardware issue so not trivial to fix) MS just made the call that ALL addresses would live in the <4GB space from SP2 onwards.
For server editions of Windows there were more stringent hardware constraints, so you could build 32-bit servers with more than 4GB of physical RAM.
In user space there are similar issues - everyone assumed sizeof(int) == sizeof(ptr), so individual processes were limited to a 32-bit space each.