Notas de la versión de Solaris 10

Información general

Esta sección proporciona información general, como cambios de comportamiento, en el Sistema operativo Solaris 10.

La especificación UNIX única, versión 3 introduce cambios

La especificación UNIX única, versión 3 (SUSv3) proporciona actualizaciones para las siguientes interfaces del sistema operativo POSIX:

Las actualizaciones incluyen los siguientes cambios:

Variable ENV en el intérprete de comandos Korn

La variable de entorno ENV ya no se expande en un intérprete de comandos Korn no interactivo. Este cambio es válido para /bin/ksh y /usr/xpg4/bin/sh.

Compiladores y aplicaciones SUSv3

Las aplicaciones compatibles con SUSv3 y otros estándares deben crearse utilizando las macros de prueba de funciones, compiladores y opciones correctas. Consulte la página de comando man standards(5).

Comando file

Cuando se utiliza con la opción -m, el comando file realiza comparaciones firmadas en los archivos magic definidos por el usuario. Además, en el entorno x86, el comando no cambia enteros multibyte a órdenes big-endian (SPARC) antes de comparar los valores de magic. Consulte las páginas de comando man file(1) y magic(4).

Funciones de impresión

snprintf() y vsnprintf() ahora devuelven el numero de bytes que se formatean cuando el valor de entrada es n=0. Consulte las páginas de comando man snprintf(3C) y vsnprintf(3C).

Editor de texto

El editor comprueba las condiciones adicionales antes de leer los archivos .exrc en $HOME o el directorio actual en el inicio. Consulte las páginas de comando man ex(1) y vi(1).

64-bit SPARC: Funciones de tiempo

Si la entrada time_t es demasiado grande para representarse en tm struct, las siguientes funciones devuelven un puntero nulo y definen errno en EOVERFLOW:

Consulte las páginas de comando man gmtime(3C), gmtime_r(3C), localtime(3C) y localtime_r(3C).

Barras precedentes

SUSv3 permite un carácter de barra (/) en un nombre de ruta únicamente si la ruta especifica un directorio existente o un directorio que se va a crear.

Utilidades en /usr/xpg6/bin y /usr/xpg4/bin

Las utilidades en /usr/xpg6/bin y /usr/xpg4/bin tienen un comportamiento compatible con SUSv3 o XPG4 que entra en conflicto con el comportamiento predeterminado de Solaris. PATH debe configurarse adecuadamente para que un usuario utilice un entorno de línea de comandos que sea compatible con SUSv3. Consulte la página de comando de la utilidad específica para obtener más información.

La compatibilidad de empaquetadores TCP se habilita en sendmail

La utilidad sendmail se ha añadido a la lista de servicios que admiten empaquetadores TCP. La capacidad añadida de la utilidad puede producir que sendmail rechace conexiones en los sistemas Solaris 10 que anteriormente se hayan configurado con servicios muy restrictivos. Utilice el nombre de daemon sendmail para habilitar la utilización de los empaquetadores TCP. Para obtener información acerca de la compatibilidad con empaquetadores TCP, consulte sendmail, versión 8.12, usa empaquetadores TCP de Novedades de Solaris 10. Para obtener información acerca de la configuración de empaquetadores TCP, consulte las páginas de comando man tcpd(1M) y hosts_access(4) contenidas en SUNWtcpd.

x86: Cambio al identificador fdisk de Solaris

En la versión Solaris 10, el identificador fdisk de Solaris se define en 0xbf para facilitar la configuración de los entornos multiarranque que incluyen el sistema operativo Linux. En las versiones anteriores de Solaris, el identificador fdisk de Solaris se había definido en 0x82, el mismo identificador que la partición swap de Linux. El cambio del identificador permite instalar el Sistema operativo Solaris 10 y el sistema operativo Linux sin tener que modificar la partición de intercambio de Linux o volver a instalar el SO Linux.

El SO Solaris continúa reconociendo y admitiendo fdisk con el identificador 0x82. Puede utilizar el comando fdisk para cambiar entre el identificador 0x82 y el identificador 0xbf. Si está utilizando la Modernización automática de Solaris y tiene que utilizar el identificador 0x82, el comando luactivate permite cambiar del identificador 0xbf al identificador 0x82.

Para obtener más información, consulte la página de comando man fdisk(1M).

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.

x86: Solaris admite el bit no execute

Solaris 10 en x86 admite el bit no execute (NX) en los modos de 32 y 64 bits. El bit NX permite implementar completamente las protecciones implicadas al no utilizar PROT_EXEC en las distintas llamadas del sistema de memoria como la función mmap(). Anteriormente en x86, toda la memoria asignada tenía PROT_EXEC definida implícitamente. La compatibilidad de Solaris con bit NX mejora la protección contra virus.

En hardware con capacidad NX, el SO Solaris OS utiliza el bit NX de forma predeterminada siempre que no se especifica PROT_EXEC. Sin embargo, los segmentos de pila utilizan PROT_EXEC de forma predeterminada y no el bit NX. La configuración predeterminada de los segmentos de pila se puede modificar llevando a cabo una de las siguientes acciones:

El administrador del sistema puede deshabilitar todos los usos del bit NX utilizando el comando eeprom para definir enforce-prot-exec en “off”. Esta variable se proporciona como una solución de transición para cualquier sistema con aplicaciones heredadas que no cuenten con PROT_EXEC.