Throughout this chapter, terms such as kernel space and user space will refer to their virtual address space. On Linux systems, each process owns a virtual address space. It is a kind of memory sandbox during the life of the process. That address space is 4 GB in size on 32-bit systems (even on a system with physical memory less than 4 GB). For each process, that 4 GB address space is split into two parts:
- User space virtual addresses
- Kernel space virtual addresses
The way the split is done depends on a special kernel configuration option, CONFIG_PAGE_OFFSET, which defines where the kernel addresses section starts in a process address space. The common value is 0xC0000000 by default on 32-bit systems, but this may be changed, as is the case for i.MX6 family processors from NXP, which use 0x80000000. In the whole...