El software está escrito por numerosos desarrolladores con diversos orígenes. Los algoritmos generales están disponibles bajo una licencia gratuita o se han publicado científicamente, y también podrían estar disponibles de forma gratuita con fines de estudio. Esto da como resultado diferentes implementaciones y versiones de software que se ajustan a una variedad de necesidades. Es necesaria una estandarización de interfaces y formatos de datos para que estas diferentes implementaciones sean intercambiables y modulares.
En resumen, Posix [1] hace exactamente eso para los sistemas de unix y unix (ver el artículo de Zak H [4] para obtener una historia más detallada sobre este tema). Define las interfaces de intercambio, los mecanismos de llamadas y transferido los datos para el software, pero deja la implementación interna al desarrollador o mantenedor del software. El objetivo es unificar todas las bifurcaciones de Unix y sistemas similares a unix de tal manera que diferentes implementaciones de software pueden interactuar entre sí. La principal ventaja de POSIX es tener una documentación vinculante para estos componentes (interfaces, mecanismos y datos) disponibles en forma escrita.
Un sistema operativo que sigue el estándar POSIX en su totalidad se clasifica como compatible con POSIX. En este artículo, explicamos qué representa Posix, determinar si Linux pertenece a esta categoría y enumere qué componentes de Linux deben excluirse de esta clasificación.
¿Qué representa el término POSIX??
Posix es una abreviatura de la interfaz del sistema operativo portátil. Como se explicó brevemente anteriormente, Posix es el nombre de una colección de estándares que se requieren para mantener la compatibilidad entre los sistemas operativos. Como se indica en [1], “[IT] define la interfaz de programación de aplicaciones (API), junto con las capas de línea de comandos e interfaces de utilidad, para la compatibilidad del software con variantes de UNIX y otros sistemas operativos."La primera versión de Posix se publicó en 1988. Desde entonces, POSIX ha sido expandido y actualizado continuamente por el Grupo de Revisión de Estándares Comunes de Austin (también conocido simplemente como el Grupo Austin) [7].
A partir de 2021, el estándar POSIX contiene las siguientes partes:
El estándar se revisa regularmente para reflejar cambios y mejoras técnicas. A veces puede pasar varios años antes de que se publique una nueva versión y se incorporen los cambios. Esto puede ser desventajoso, pero es comprensible dado el alcance del estándar.
En los últimos años, se han agregado extensiones al procesamiento en tiempo real. La versión actual fue lanzada a principios de 2018 [3]. Los autores de Sibylfs [5] también han publicado muchas anotaciones en el estándar POSIX para determinar la lógica y las interacciones de orden superior.
¿Qué significa ser compatible con Posix??
El término "POSIX-Compatir" significa que un sistema operativo cumple con todos los criterios de Posix. Un sistema operativo puede ejecutar programas UNIX de forma nativa, o una aplicación puede portarse desde el sistema UNIX a otro sistema. La portación de una aplicación de UNIX al sistema operativo de destino es fácil, o al menos más fácil, que si no admite POSIX. Para estar en el lado seguro, un sistema operativo debería haber logrado con éxito la certificación POSIX [2]. Este paso se logra (a un costo) al pasar una prueba de certificación automatizada. La suite de prueba correspondiente se puede encontrar aquí [11].
A partir de 2021, la lista de sistemas operativos certificados por POSIX contiene AIX de IBM, HP-UX de HP, Irix de SGI, Euleros [6] de Huawei, Mac OS X de Apple (desde 10.5 Leopard), Solaris y Qnx Neutrino de Oracle, Inspur's K-Ux [11] y la integridad del sistema operativo en tiempo real del software Green Hills [15]. Actualmente no está claro si las versiones más nuevas de los tres sucesores de Solaris, OpenSolaris, Illumos y OpenIndiana, también se clasifican como totalmente compatibles con POSIX, también. Estos sistemas operativos cumplieron con POSIX hasta Posix 2001.
Otros sistemas operativos que se consideran principalmente (pero no completamente) que cumplen con POSIX incluyen Android, Beos, FreeBSD, Haiku, Linux (ver más abajo) y VMware ESXi. Para Microsoft Windows, Cygwin proporciona un entorno de desarrollo y tiempo de ejecución que cumple con POSIX en gran medida.
¿Está compatible con Linux Posix??
El término "Linux" se refiere a todo el sistema operativo Linux, independientemente del sabor, como Debian GNU/Linux, Redhat Linux, Linux Mint, Ubuntu Linux, Fedora y CentOS, por ejemplo,. Para ser precisos, Linux es solo el nombre del kernel que es el componente central de este sistema operativo libre.
Como Linus Torvalds describió en el libro "Solo para la diversión" [8], para desarrollar el núcleo de Linux, solicitó una copia del estándar Posix. Esto lo ayudó a implementar los mismos mecanismos que se utilizan en sistemas de unix comerciales. Además, esto le permitió vincular el núcleo de Linux con las herramientas GNU que siguieron principalmente el mismo enfoque. Para ser justos, el software en un sistema de Linux se contribuye de una variedad de fuentes que respetan el estándar POSIX, pero que a veces también implementan sus propios conceptos. Al mismo tiempo, sin embargo, esto también muestra la diversidad que constituye a Linux como un sistema operativo.
Un ejemplo de esto es la forma en que se escriben los argumentos de la línea de comandos. Argumentos con dos guiones (E.gramo., "-Help") son convenciones de GNU, mientras que los comandos POSIX nunca usan argumentos de dos anillos, sino solo un solo (e.gramo., "-ayuda"). Desde el principio, Linux fue diseñado con GNU en mente, y es por eso que los comandos contienen estilo GNU
argumentos. Para lograr el cumplimiento de POSIX, se han agregado argumentos de estilo POSIX paso a paso. Aún así, la decisión final es tomada por el desarrollador. A partir de hoy, la mayoría de los comandos aceptan argumentos cortos y largos, o incluso argumentos sin puestos, como el comando "encontrar", por ejemplo. Para ser justos, no hay consistencia entre los comandos en un sistema, y esto puede ser un problema cuando tiene la intención de usar el mismo comando en un sistema basado en UNIX diferente, particularmente cuando se cambia entre Linux, OS X y Solaris.
Por ahora, Linux no tiene certificación de Posix debido a los altos costos, excepto las dos distribuciones comerciales de Linux Inspur K-Ux [12] y Huawei Euleros [6]. En cambio, Linux es visto como en su mayoría compatible con Posix.
Esta evaluación se debe al hecho de que las principales distribuciones de Linux siguen la base estándar de Linux (LSB) en lugar de Posix [9]. LSB tiene como objetivo "minimizar las diferencias entre las distribuciones individuales de Linux" [14]. Esto se refiere a la estructura del sistema de software, incluido el estándar de jerarquía del sistema de archivos (FHS) utilizado en el núcleo de Linux. LSB se basa en la especificación POSIX, la especificación UNIX única (SUS) [10] y varios otros estándares abiertos, pero también los extiende en ciertas áreas.
Las distribuciones de Linux con sede en LSB incluyen Redhat Linux, Debian GNU/Linux (2002-2015) y Ubuntu (hasta 2015), por nombrar algunos.
Desarrollar con Posix en mente
Para comprender POSIX con mayor detalle, recomendamos obtener una copia del estándar POSIX y leerla en su totalidad. Puede obtener el libro del sitio web de Open Group. Esto requiere una tarifa de registro, pero le brinda acceso completo a este valioso recurso. Los estándares ayudan ya que le permiten desarrollar software de tal manera que se comporte de la misma manera en todas las plataformas UNIX.
Enlaces y referencias
Gracias
El autor desea agradecer a Axel Beckert y Veit Schiele por su ayuda y consejo mientras prepara este artículo.