
Mastering Embedded Linux Programming
By :

To recap, Linux configures the memory management unit of the CPU to present a virtual address space to a running program that begins at zero and ends at the highest address, 0xffffffff
on a 32-bit processor. That address space is divided into pages of 4 KiB (there are rare examples of systems using other page sizes).
Linux divides this virtual address space into an area for applications, called user space, and an area for the kernel, called kernel space. The split between the two is set by a kernel configuration parameter named PAGE_OFFSET
. In a typical 32-bit embedded system, PAGE_OFFSET
is 0xc0000000
, giving the lower three GiB to user space and the top one GiB to kernel space. The user address space is allocated per process, so that each process runs in a sandbox, separated from the others. The kernel address space is the same for all processes: there is only one kernel.
Pages in this virtual address space are mapped to physical addresses by the memory management...