The mapping of virtual addresses to physical addresses is pretty arbitrary (with a granularity of 4k on x86). On a machine with less than 1GB RAM, userspace virtual memory with addresses above 1 GB are simply mapped to physical addresses < 1 GB if they are mapped to RAM at all.
It's not actually 3 GB of addressable RAM that is given to each process (which is where you may be getting confused). Rather, each process has 3 GB of address space to work with. Some of the data in that address space will probably be stored in physical RAM. Some of the data in that address space will probably be stored on disk and not in physical RAM. And what portion of physical RAM each 4k chunk of virtual memory corresponds to (if any) is pretty arbitrary in that 3 GB for processes.
I feel it is a mistake to consider the 3GB address spaces given to processes as RAM. The 3GB address spaces are abstractions that differ significantly from RAM, and from the physical address space abstraction. The 896 MB portion of the kernel address space can reasonably be considered RAM (or rather whatever portion is mapped to RAM for systems under 1 GB). This, I suspect, is very helpful. The virtual and physical addresses differ, but the mapping between the two is simple. But for systems > 1GB RAM, there is not enough kernel virtual address to map to all the RAM, and so some of the RAM needs to be treated specially.
I'm not sure I understand you
I'm not sure I understand your concern.
The mapping of virtual addresses to physical addresses is pretty arbitrary (with a granularity of 4k on x86). On a machine with less than 1GB RAM, userspace virtual memory with addresses above 1 GB are simply mapped to physical addresses < 1 GB if they are mapped to RAM at all.
It's not actually 3 GB of addressable RAM that is given to each process (which is where you may be getting confused). Rather, each process has 3 GB of address space to work with. Some of the data in that address space will probably be stored in physical RAM. Some of the data in that address space will probably be stored on disk and not in physical RAM. And what portion of physical RAM each 4k chunk of virtual memory corresponds to (if any) is pretty arbitrary in that 3 GB for processes.
I feel it is a mistake to consider the 3GB address spaces given to processes as RAM. The 3GB address spaces are abstractions that differ significantly from RAM, and from the physical address space abstraction. The 896 MB portion of the kernel address space can reasonably be considered RAM (or rather whatever portion is mapped to RAM for systems under 1 GB). This, I suspect, is very helpful. The virtual and physical addresses differ, but the mapping between the two is simple. But for systems > 1GB RAM, there is not enough kernel virtual address to map to all the RAM, and so some of the RAM needs to be treated specially.