En los estados de autor this respuesta: 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.
espacio de proceso de 32 bits de direcciones en Linux de 64 bits
¿Cuál es el propósito de esta memoria del núcleo gestionados? ¿No debería estar en el espacio del kernel para evitar daños accidentales por parte del usuario?
'-4095 .. -1' es' 0xfffff001 .. 0xffffffff'. '0xfffff000' es' -4096', no '-4095', por lo que es un valor de retorno válido sin errores de mmap. ([mmaping esa página no funciona en realidad] (https://stackoverflow.com/questions/47712502/why-cant-i-mapmapmap-fixed-the-highest-virtual-page-in-a-32-bit- linux-process-o), pero no estoy seguro de que ese sea el motivo, a menos que haya un VMA oculto que reserve la página superior para que el kernel no tenga que preocuparse de que el espacio de usuario los pase como 'leer' o algo así. .) –