14.3.10

Estándares

En 1973 el código fuente de Unix se reescribía en el recién creado lenguaje C. Esto suponía no tener que preocuparse de las peculiaridades del procesador de la máquina subyacente por lo que se hacía muy sencillo modificar el sistema operativo o portarlo a otras arquitecturas. Como consecuencia, el desarrollo de Unix se divide en varias ramas que se comienzan a alejar en poco tiempo. AT&T introducía su Unix System 3, la universidad de Berkeley desarrollaba el BSD v4 y algunos vendedores como Interactive Systems, Microsoft o Human Computer Resources distribuían versiones adaptadas a ordenadores más modestos. Surgió entonces la necesidad de crear unas pautas generales que permitieran que los distintos sabores de Unix que habían surgido fuesen compatibles entre sí. Es lo que más tarde se conocerá como el estándar POSIX.

Una organización llamada originalmente /usr/group decidió, en 1980, ponerse manos a la obra y formar un comité para redactar un documento que especificase claramente la interfaz entre el sistema operativo y el programador. Para hacer la tarea más fluida se decidió limitar a 40 el número de personas que formaran el comité y se estableció que las decisiones fueran aprobadas por al menos 2/3 de los participantes. También se fijaron dos puntos fundamentales a tener en cuenta en todo el desarrollo del documento:

Logo del IEEE1- Que el documento resultante fuese independiente de cualquier versión de Unix ya desarrollada, permitiendo así que futuras empresas pudiesen crear aplicaciones o incluso sistemas operativos en base a las especificaciones, sin tener que comprar los productos de un solo distribuidor.

2- Que el proceso se centrase en la definición clara y no ambigua de la interfaz entre el sistema operativo y el usuario, dejando aparte temas como la administración, las comunicaciones o las shell del sistema.

El proceso no fue fácil ni corto. Cada decisión debía meditarse seriamente considerando lo que ya existía y lo que debería o no existir, sin centrarse en las versionas más extendidas y sin dejar de lado las menos importantes. Se tardó cuatro años en redactar un borrador del documento. Dicho borrador fue enviado al comité de estándares del IEEE quien puso a trabajar en el asunto a su Comité Técnico de Sistemas operativos: el TCOS-SS. En abril de 1986 el IEEE hizo pública la versión de prueba del estándar a fin de conocer las opiniones de las diversas empresas y profesionales del sector. Dos años más tarde, en agosto de 1988, se publicó la primera versión definitiva: el IEEE 1003.1-1988, más comúnmente conocida como POSIX.1, que quedó ratificada dos años más tarde, al estandarizarse también el lenguaje de programación C.

Aun así, un solo documento no era suficiente por lo que el IEEE siguió con su tarea. En 1990 ya había 10 proyectos aprobados y unas 300 personas participaban en jornadas intensivas de una semana, una vez al mes. Se empezó a trabajar en la estandarización de los comandos y utilidades del sistema operativo (POSIX.2) para seguir con metodologías de testeo (POSIX.3), aplicaciones en tiempo real (POSIX.4), las interfaces entre el sistema operativo y los lenguajes ADA (POSIX.5) y FORTRAN 77 (POSIX.9), súper computación (POSIX.10), etc.

Debe quedar claro que el estándar solo define la interfaz, en ningún caso la implementación y que está pensado para ser utilizado tanto por desarrolladores de aplicaciones como por programadores que implementen sistemas operativos. POSIX es por tanto una colección de documentos que definen claramente una interfaz estándar entre el sistema operativo y sus aplicaciones a nivel de código fuente. En otras palabras, POSIX define los servicios que debe proveer un sistema, definiendo de forma exacta los prototipos de las funciones de biblioteca y llamadas al sistema, los tipos de las variables utilizadas, las cabeceras, los códigos de retorno de las funciones, su comportamiento concurrente, etc. Además, tambien especifica otros aspectos como por ejemplo la estructura general del sistema de ficheros, consideraciones sobre el set de caracteres usado, sobre las expresiones regulares, las variables del entorno, la interacción con el terminal o las secuencias de escape.

En la actualidad, la rama POSIX más importante es sin duda la POSIX.1x, basada en el popular lenguaje C. A continuación se resumen de forma general las pautas definidas en el documento.

No hay comentarios:

Publicar un comentario