Linux Virtual Memory Model
"Kernel use of virtual memory begins very early on in the boot process. head.S contains code to create provisional page tables and get the kernel up and running, however that is beyond this overview.
Every physical page of memory up to 896MB is mapped directly into the kernel space. Memory greater than 896MB (High Mem) is not permanently mapped, but is instead temporarily mapped using kmap and kmap_atomic (see HighMemory).
User Space Virtual Memory:
Every process in linux is able to address 4 gigabytes of linear address space. In a standard kernel config, the first 3 gigabytes (0x00000000 - 0xC0000000) are referred to as 'user space' and represent data, functions and the stack of user processes. The top 1 gigabyte (0xC0000000 - 0xFFFFFFFF) of memory is 'kernel space'. User processes typically do not have access to kernel memory space, and will normally not address this region."
I really don't get It. How can a process address 4 gigs of address space When my pc (or almost any PC) has 512MB
of physical memory? There's a lot of stuff about this I don't grasp. Could anyone enlight me? I'm lost, I really can't understand this virtual memory stuff...