GNU/Linux >> Tutoriales Linux >  >> Linux

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

La siguiente imagen muestra cómo se divide un espacio de direcciones virtuales de proceso de 32 bits:

Pero, ¿cómo se divide un espacio de direcciones virtuales de proceso de 64 bits?

Respuesta aceptada:

x86

El mapa de memoria virtual x86 de 64 bits divide el espacio de direcciones en dos:la sección inferior (con el bit superior establecido en 0) es el espacio del usuario, la sección superior (con el bit superior establecido en 1) es el espacio del kernel. (Tenga en cuenta que x86-64 define direcciones "canónicas", "mitad inferior" y "mitad superior", con una cantidad de bits efectivamente limitada a 48 o 56; consulte Wikipedia para obtener más detalles).

El mapa completo está documentado en detalle en el kernel; actualmente parece

con direcciones virtuales de 48 bits. (La variante de 56 bits tiene la misma estructura, con 64 PiB de espacio de direcciones utilizable a cada lado de un agujero de 16 K PiB). 
(Tenga en cuenta que 16 KPiB =16MTiB =2 bytes).

A diferencia del caso de 32 bits, el mapa de memoria de "64 bits" es un reflejo directo de las limitaciones del hardware.

BRAZO

ARM de 64 bits tiene una distinción de dirección similar en el hardware:los dieciséis bits superiores son 0 para el espacio del usuario, 1 para el espacio del núcleo. Linux usa 39, 42 o 48 bits para las direcciones virtuales, según el número de niveles de la tabla de páginas y el tamaño de la página. Con ARMv8.2-LVA, se agregan otros cuatro bits, lo que da como resultado direcciones virtuales de 52 bits.

Esto también está documentado en detalle en el núcleo.


Linux
  1. Cómo matar un proceso zombie en Linux

  2. Cómo instalar vtop en Linux

  3. Cómo agregar espacio de intercambio en Linux

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

  5. ¿Cómo acceder a direcciones físicas desde el espacio de usuario en Linux?

Cómo instalar MX linux en virtual Box

Cómo MATAR un proceso en Linux

Cómo cambiar la dirección IP en Linux

Cómo obtener su dirección IP en Linux

Cómo verificar el espacio de intercambio en Linux

Cómo encontrar la dirección IP en Linux

    Dirección de inicio Compensación Dirección final Tamaño Descripción del área de máquina virtual
    0000_0000_0000_0000 0000_7fff_ffff_ffff  128 TiB memoria virtual de espacio de usuario
    0000_8000_0000_0000 +128 TiB ffff_7fff_ffff_ffff ~16 millones de TiB no canónico
    ffff_8000_0000_0000 -128 TiB ffff_ffff_ffff_ffff  128 TiB memoria virtual del espacio del núcleo