Why does a 32-bit OS support 4 GB of RAM

memoryoperating-systemvirtual-address-space

Just reading some notes in a purdue lecture about OSs, and it says:

A program sees memory as an array of
bytes that goes from address 0 to 2^32-1 (0 to
4GB-1)

Why 4 GB?

Best Solution

Because 32 bits are able to represent numbers up to 232 − 1 = 4294967295 = 4 GiB − 1 and therefore address up to 232 individual bytes which would be 4 GiB then.

There are ways to circumvent that, though. For example using PAE even a 32-bit operating system can support more memory. Historically this has most commonly been used on servers, though. Also, the non-server Windows SKUs don't support it. By now all that is moot, though, given that 64-bit CPUs, OSes and driver support are commonplace.