¿Cuánta RAM puede asignar una aplicación en sistemas Linux x86 de 64 bits?

¿Cuánta RAM puede asignar una aplicación en sistemas Linux x86 de 64 bits?

¿Es cierto que una sola aplicación no puede asignar más de 2 GiBs incluso si el sistema tiene GiBs más de memoria libre cuando se utiliza un kernel Linux PAE x86 de 32 bits? ¿Este límite se alivia con los kernels de Linux x86 de 64 bits?

Respuesta1

Un proceso de 32 bits tiene un espacio de direcciones de 32 bits, por definición: "32 bits" significa que las direcciones de memoria en el proceso tienen 32 bits de ancho, y si tiene 2 32 direcciones distintas, puede direccionar como máximo 2 32 bytes ( 4 GB). Un kernel de Linux de 32 bits sólo puede ejecutar procesos de 32 bits. Dependiendo de las opciones de compilación del kernel, cada proceso solo puede asignar 1 GB, 2 GB o 3 GB de memoria (el resto está reservado para el kernel cuando procesa llamadas al sistema). Se trata de una cantidad de memoria virtual, no relacionada con ningún desglose entre RAM, archivos de intercambio y archivos mmapped.

Un kernel de 64 bits puede ejecutar procesos de 64 bits así como procesos de 32 bits. En principio , un proceso de 64 bits puede direccionar hasta 2,64 bytes (16 EB). Sobre elarquitectura x86_64, en parte debido al diseño de x86_64MMUs, actualmente existe una limitación de 128 TB de espacio de direcciones por proceso.

Respuesta2

Los procesos de 32 bits solo pueden asignar hasta 1, 2, 3 o aproximadamente 4 GB, dependiendo de qué división de memoria se eligió cuando se creó el kernel de 32 bits. Los procesos de 32 bits en un kernel de 64 bits pueden asignar alrededor de 4 GB. Los procesos de 64 bits en un kernel x86-64 de 64 bits pueden asignarhasta 128 TiB.

información relacionada