Notas de la versión de Solaris 10

x86: Aplicación de límites de asignación de memoria en sistemas x86

Las aplicaciones de Solaris asignan memoria utilizando funciones como malloc (), brk() o mmap(). La cantidad de memoria máxima que una aplicación puede asignar está vinculada al tamaño del espacio de dirección virtual del usuario. El texto del programa, la pila, los datos y las bibliotecas contenidos en el espacio de dirección virtual del usuario pueden reducir aún más el tamaño máximo de asignación de memoria.

Entorno informático de 32 bits

En un entorno informático de 32 bits, el espacio de dirección virtual de 32 bits se comparte entre el usuario y el núcleo. Por tanto, el tamaño del espacio de dirección virtual del usuario es 4 Gbytes menos el tamaño del espacio de dirección virtual del núcleo. La configuración del tamaño del espacio de dirección virtual del núcleo depende de la memoria física. A medida que el tamaño de la memoria física aumenta, el espacio de dirección de usuario disminuye. Para los sistemas con 8 Gbytes de memoria, el tamaño del espacio de dirección de usuario es aproximadamente de 3 Gbytes.

Si los límites de asignación de memoria son insuficientes para una aplicación, existen dos opciones:

Entorno informático de 64 bits

En el entorno informático de 64 bits, el espacio de dirección virtual para aplicaciones de 32 bits es completamente para el usuario. Por tanto, una aplicación de 32 bits puede asignar los 4 Gbytes completos menos el espacio de dirección de usuario necesario para texto, pila y bibliotecas.

En algunos procesadores AMD de 64 bits antiguos, el límite de asignación de memoria se puede reducir aún más en un 1 Gbyte. Para determinar si el procesador está afectado, realice los siguientes pasos:

  1. Ejecute el comando pmap $$ desde cualquier intérprete de comandos de 32 bits.

  2. En el mapa de procesos, compruebe si se muestran las direcciones superiores o iguales a 0xC0000000. Si estas direcciones no existen, el SO Solaris cuenta con aplicaciones de 32 bits limitadas a los 3 Gbytes inferiores del rango de direcciones virtuales de 4 Gbytes.

Una aplicación de 64 bits puede asignar 250 Tbytes de memoria en función de la aplicación que esté utilizando.