GNU/Linux >> Tutoriales Linux >  >> Linux

Espacio de direcciones del proceso de 32 bits en Linux de 64 bits

Citando la fuente del kernel:"Los punteros del kernel tienen información redundante, por lo que podemos usar un esquema en el que podemos devolver un código de error o un [...] puntero con el mismo valor de retorno.

Los valores -1..-4095 (asignación a 0xfffff000–0xffffffff en modo de 32 bits) están reservados para valores errno a nivel de kernel. Los otros 4 KB de 0xffffe000–0xffffefff se mantienen libres para la página mágica vsyscall vdso, pero dado que la página vdso es reubicable desde muchas lunas, esta área permanece potencialmente despoblada, es decir, el [stack] entrada en /proc/*/maps termina en 0xffffdfff siempre, independientemente de si [vdso] está asignado en 0xffffe000 o en otro lugar.


Parte de la memoria del kernel puede estar dentro del espacio de direcciones del espacio de usuario de la aplicación, y ser algo así como mmap-ed con PROT_NONE . Entonces se usaría algo de espacio de direcciones, pero sin que el programa pudiera acceder a él (por lo que no es posible que se dañe).


Linux
  1. ¿Cómo asignar un búfer del kernel de Linux al espacio del usuario?

  2. ¿Qué es mejor int 0x80 o syscall en código de 32 bits en Linux?

  3. ¿Por qué el núcleo se asigna al mismo espacio de direcciones que los procesos?

  4. Encontrar bibliotecas de 32 bits en Linux de 64 bits

  5. ¿Cómo determinar si un archivo binario de Linux es de 32 bits o de 64 bits?

¿Linux es un sistema operativo o un kernel?

Núcleo de Linux vs. Núcleo de Mac

Cómo encontrar la dirección IP en Linux

Linux:¿cómo se divide un espacio de direcciones virtuales de proceso de 64 bits en Linux?

Cómo saber si la versión de Linux es de 32 bits o de 64 bits

¿Cómo verificar que el sistema Linux sea de 32 bits o de 64 bits?