Yup. Thats the line.
The maximum physical address allowed on your processor is 32 bits (physical). That is 4G. BUT, some addresses must be reserved for I/O, and that subtracts from the physical memory you can address. There is a minimum of 1MB for the hole, and then the memory for the video (reachable by the CPU, but mapped out because the video is using it). The remainder gets divided into system and user space. I belive the current mapping reserved 1G for the kernel to use for mapping I/O buffers and access to the user mode process. That leaves a maximum of something in the range of 2.5-2.9G for user processes.
As a comparison, my system (x86-64) has:
Code:
address sizes : 38 bits physical, 48 bits virtual
The physical range I can reach are 264G. My motherboard can't go anywhere near that (only 12G). This means I have address bits to spare, and can completely map the physical memory I have, and not worry about loosing any for the I/O hole, or even that consumed by the kernel.
Note the 48 bit virtual address. That is the largest process I can have (of course, most of that would have to be swapped out).