11 jun 2010

Introducción II: Estándares de UNIX (POSIX, X/Open, OSF, SUS...)

Como hemos visto, el sistema operativo UNIX empieza en un tronco común pero acaba siendo un árbol con múltiples ramas. Esto, para desarrollar aplicaciones portables, complicaba mucho las cosas. Surgió en los años 90 una iniciativa de estandarización para que las distintas variantes de UNIX fueran compatibles entre sí a la hora de desarrollar programas sobre ellas.

De esa época surgen varias siglas como POSIX vs SPEC1170, SVIDIII, X/Open, etc.

De todos los estándares, uno de los más conocidos es POSIX (Portable Operating System Interface) abanderado por el organismo internacional IEEE. POSIX responde a cuestiones como la creación de procesos, la gestión del espacio virtual de direcciones, threads, señales. Es decir, una serie de conocimientos que afectan a quienes trabajan "a bajo nivel" con el sistema operativo.

El esfuerzo de estandarización actual de UNIX está centralizado por el consorcio The Open Group, propietario de la marca "UNIX ®", con una iniciativa llamada "Single UNIX Specification". que intenta estandarizar llamadas al sistema, comandos, etc.

Las especificaciones de UNIX tienen las siguientes versiones:
  • UNIX 95
  • UNIX 98
  • SUS 3 (UNIX 03)
El grado de cumplimiento con esas especificaciones de los sistemas operativos más conocidos:
  • AIX
AIX 5L V5.3 + AIX 6.1 -> UNIX 03
AIX 5L V5.2 FCS -> UNIX 98
  • Solaris
Solaris 10 -> UNIX 03 compliant on 32-bit and 64-bit x86 and SPARC systems.
Solaris 8 and 9 -> UNIX 98 on 32-bit
  • HP/UX
HP-UX 11i V3 Release B.11.31 -> UNIX 03
Anteriores -> UNIX 95.

Los entornos de tipo Linux, BSD no están certificados en esta especificación, porque la certificación cuesta dinero.

Incluimos una tabla del tipo de detalles que estandariza POSIX.

POSIX.1
Servicios (incluido Standard ANSI C)
POSIX.1b
Real-time extensions
POSIX.1c
Threads extensions
  • Control y creación de procesos
  • Señales
  • Excepciones de coma flotante
  • Violaciones de segmentación
  • Instrucciones ilegales.
  • Errores de Bus
  • Temporizadores
  • Operaciones en ficheros y directorios
  • "Pipes"
  • Librería C (Standard C)
  • Interfaz de puertos I/O
  • Scheduling de prioridades
  • Señales de tiempo real
  • Timers
  • Semáforos
  • Colas de mensajes
  • Memoria compartida
  • I/O síncrono y asíncrono
  • Bloqueos de memoria
  • Creación, control y limpieza de threads
  • Scheduling de threads
  • Sincronización de threads
  • Manejo de señales

No hay comentarios:

Publicar un comentario