32-bit address space on 64-bit Linux

This is the author of the answers: With the 64-bit x86_64 kernel, a 32-bit process can use the entire 4GB address space, except for a couple pages (8KB) at the end of the 4GB address space which are managed by the kernel.

What is the purpose of this kernel-driven memory? Should it be in kernel space to prevent accidental damage to the user?

+5
source share
2 answers

Referring to the kernel source: "Kernel pointers have redundant information, so we can use a scheme in which we can return either an error code or a pointer [...] with the same return value."

-1..- 4095 ( 0xfffff000-0xffffffff 32- ) errno . 4KB 0xffffe000-0xffffefff vssoall vdso magic, vdso , , [stack] /proc/*/maps 0xffffdfff , [vdso] 0xffffe000 .

+6

mmap -ed PROT_NONE, , ( ).

+2

All Articles