Familia de estándares IEEE para compatibilidad entre sistemas operativos
La Interfaz de Sistema Operativo Portátil ( POSIX ; [1] familia de estándares especificados por la IEEE Computer Society mantener la compatibilidad entre sistemas operativos . 1] interfaces de programación de aplicaciones (API) de sistema y de usuario , junto con shells de línea de comandos e interfaces de utilidades, para la compatibilidad de software (portabilidad) con variantes de Unix y otros sistemas operativos. [1] [2] POSIX también es una marca registrada de IEEE. [1] POSIX está destinado a ser utilizado tanto por desarrolladores de aplicaciones como de sistemas. [3]
Nombre
Originalmente, el nombre "POSIX" hacía referencia al estándar IEEE Std 1003.1-1988, publicado en 1988. La familia de estándares POSIX se designa formalmente como IEEE 1003 y el número de estándar ISO/IEC es ISO / IEC 9945.
Los estándares surgieron de un proyecto que comenzó en 1984 y que se basó en el trabajo de la actividad relacionada en la asociación /usr/group . [4] Richard Stallman sugirió el nombre POSIX al IEEE [5] [6] en lugar del antiguo IEEE-IX . [7] El comité lo consideró más fácil de pronunciar y recordar, por lo que lo adoptó. [ cita requerida ]
Descripción general
Unix fue seleccionado como la base para una interfaz de sistema estándar en parte porque era "neutral respecto del fabricante". Sin embargo, existían varias versiones principales de Unix, por lo que era necesario desarrollar un sistema con un denominador común. Las especificaciones POSIX para sistemas operativos tipo Unix consistían originalmente en un único documento para la interfaz de programación básica , pero con el tiempo crecieron hasta 19 documentos separados (POSIX.1, POSIX.2, etc.). [8] La línea de comandos de usuario estandarizada y la interfaz de scripts se basaban en el shell UNIX System V. [9] Muchos programas, servicios y utilidades a nivel de usuario (incluidos awk , echo , ed ) también se estandarizaron, junto con los servicios a nivel de programa requeridos (incluidos E/S básicos : file , terminal y network ). POSIX también define una API de biblioteca de subprocesos estándar que es compatible con la mayoría de los sistemas operativos modernos. En 2008, la mayoría de las partes de POSIX se combinaron en un único estándar (IEEE Std 1003.1-2008 , también conocido como POSIX.1-2008).
A partir de 2014 [actualizar], la documentación POSIX se divide en dos partes:
- POSIX.1, edición 2013: Definiciones básicas de POSIX, interfaces del sistema y comandos y utilidades (que incluyen POSIX.1, extensiones para POSIX.1, servicios en tiempo real, interfaz de subprocesos, extensiones en tiempo real, interfaz de seguridad, acceso a archivos de red y comunicaciones de proceso a proceso de red, extensiones de portabilidad de usuario, correcciones y extensiones, utilidades de protección y control y utilidades del sistema por lotes. Esta es POSIX 1003.1-2008 con la corrección técnica 1).
- Pruebas de conformidad con POSIX: un conjunto de pruebas para POSIX acompaña al estándar: VSX-PCTS o el conjunto de pruebas de conformidad con POSIX VSX . [10]
El desarrollo del estándar POSIX se lleva a cabo en el Grupo Austin (un grupo de trabajo conjunto entre el IEEE, The Open Group y el ISO/IEC JTC 1/SC 22 /WG 15).
Versiones
Piezas anteriores a 1997
Antes de 1997, POSIX comprendía varios estándares:
- POSIX.1 : Servicios básicos (incorpora el estándar ANSI C ) (IEEE Std 1003.1-1988)
- POSIX.1b : extensiones en tiempo real (IEEE Std 1003.1b-1993, que luego apareció como librt, la biblioteca de extensiones en tiempo real) [11]
- POSIX.1c : extensiones de subprocesos (IEEE Std 1003.1c-1995)
- Creación, control y limpieza de subprocesos
- Programación de subprocesos
- Sincronización de subprocesos
- Manejo de señales
- POSIX.2 : Shell y utilidades (norma IEEE 1003.2-1992)
Versiones posteriores a 1997
Después de 1997, el Grupo Austin desarrolló las revisiones de POSIX. Las especificaciones se conocen con el nombre de Single UNIX Specification (Especificación única de UNIX) , antes de convertirse en un estándar POSIX cuando fue aprobado formalmente por la ISO.
POSIX.1-2001 (con dos TC)
POSIX.1-2001 (o IEEE Std 1003.1-2001) equivale a la Especificación Única UNIX, versión 3 menos X/Open Curses . [12]
Esta norma constaba de:
- las Definiciones Básicas, Número 6,
- Interfaces y encabezados del sistema, número 6,
- Los comandos y utilidades, número 6.
La norma IEEE Std 1003.1-2004 supuso una actualización menor de POSIX.1-2001. Incorporó dos actualizaciones menores o erratas conocidas como Corrigenda Técnica (TC). [13] Su contenido está disponible en la web. [14]
POSIX.1-2008 (con dos TC)
Especificaciones básicas, número 7 (o IEEE Std 1003.1-2008 , edición 2016). [15]
Esta norma consta de:
- Definiciones básicas, número 7,
- Interfaces y encabezados del sistema, número 7,
- Los comandos y utilidades, número 7,
- El volumen de Justificación.
POSIX.1-2017
IEEE Std 1003.1-2017 (Revisión de IEEE Std 1003.1-2008) - IEEE Standard for Information Technology—Portable Operating System Interface (POSIX(R)) Base Specification, Issue 7 está disponible en The Open Group o IEEE. Es técnicamente idéntico a POSIX.1-2008 con las correcciones técnicas 1 y 2 aplicadas. Su contenido está disponible en la web. [16]
POSIX.1-2024
La norma IEEE Std 1003.1-2024 - IEEE Standard for Information Technology—Portable Operating System Interface (POSIX(R)) Base Specification, Issue 8 se publicó el 14 de junio de 2024. [15] Su contenido está disponible en la web. [17]
Controversias
Bloques de 512 y 1024 bytes
POSIX exige tamaños de bloque predeterminados de 512 bytes para las utilidades df y du , lo que refleja el tamaño típico de los bloques en los discos. Cuando Richard Stallman y el equipo de GNU estaban implementando POSIX para el sistema operativo GNU , se opusieron a esto con el argumento de que la mayoría de la gente piensa en términos de bloques de 1024 bytes (o 1 KiB ). La variable de entorno POSIX_ME_HARDER se introdujo para permitir al usuario forzar el comportamiento conforme a los estándares. [18] El nombre de la variable se cambió más tarde a POSIXLY_CORRECT . [19] Esta variable ahora también se utiliza para una serie de otras peculiaridades de comportamiento.
Sistemas operativos orientados a POSIX
Dependiendo del grado de cumplimiento de los estándares, se pueden clasificar los sistemas operativos como total o parcialmente compatibles con POSIX.
Certificación POSIX
Las versiones actuales de los siguientes sistemas operativos han sido certificadas para cumplir con uno o más de los diversos estándares POSIX. Esto significa que pasaron las pruebas de conformidad automatizadas [20] y que su certificación no ha expirado y el sistema operativo no ha sido descontinuado. [21] [22]
Anteriormente certificado POSIX
Algunas versiones de los siguientes sistemas operativos han sido certificadas para cumplir con uno o más de los diversos estándares POSIX, lo que significa que han pasado las pruebas de conformidad automatizadas. La certificación ha expirado y algunos de los sistemas operativos han sido descontinuados. [21]
Mayormente compatible con POSIX
Los siguientes no están certificados como compatibles con POSIX pero cumplen en gran parte:
POSIX para Microsoft Windows
- Cygwin proporciona un entorno de ejecución y desarrollo en gran medida compatible con POSIX para Microsoft Windows .
- MinGW , una bifurcación de Cygwin, proporciona un entorno de desarrollo menos compatible con POSIX y admite aplicaciones programadas en C compatibles a través de Msvcrt , la antigua biblioteca de ejecución de Visual C de Microsoft .
- libunistd, una biblioteca de desarrollo compatible en gran medida con POSIX creada originalmente para generar el código fuente C/ C++ basado en Linux de CinePaint tal como está en Microsoft Visual Studio . Una implementación liviana que tiene archivos de encabezado compatibles con POSIX que asignan API POSIX para llamar a sus contrapartes API de Windows. [45]
- Subsistema POSIX de Microsoft , un subsistema opcional de Windows incluido en los sistemas operativos basados en Windows NT hasta Windows 2000. Admitía POSIX.1 tal como estaba en la revisión de 1990, sin subprocesos ni sockets .
- Interix , originalmente OpenNT de Softway Systems, Inc., es una actualización y reemplazo del subsistema POSIX de Microsoft que fue adquirido por Microsoft en 1999. Inicialmente se comercializó como un producto complementario independiente y luego se incluyó como un componente en Windows Services for UNIX (SFU) y finalmente se incorporó como un componente en Windows Server 2003 R2 y versiones posteriores del sistema operativo Windows bajo el nombre de "Subsistema para aplicaciones basadas en UNIX" (SUA); luego quedó obsoleto en 2012 (Windows 8) [46] y se eliminó en 2013 (2012 R2, 8.1). Permite la compatibilidad total con POSIX para ciertos productos de Microsoft Windows . [ cita requerida ]
- El Subsistema de Windows para Linux , también conocido como WSL, es una capa de compatibilidad para ejecutar archivos binarios ejecutables de Linux de forma nativa en Windows 10 y 11 utilizando una imagen de Linux como Ubuntu, Debian u OpenSUSE, entre otros, y actúa como una actualización y reemplazo de los Servicios de Windows para UNIX. Fue lanzado en versión beta en abril de 2016. La primera distribución disponible fue Ubuntu.
- UWIN de AT&T Research implementa una capa POSIX sobre las API de Win32.
- MKS Toolkit , creado originalmente para MS-DOS, es un paquete de software producido y mantenido por MKS Inc. que proporciona un entorno similar a Unix para la creación de scripts, la conectividad y la portabilidad de software Unix y Linux a sistemas Microsoft Windows de 32 y 64 bits . Un subconjunto de este se incluyó en la primera versión de Windows Services for UNIX (SFU) en 1998. [47] [48]
- La biblioteca de tiempo de ejecución de Windows C y la API de sockets de Windows implementan funciones de API POSIX comúnmente utilizadas para acceso a archivos, tiempo, entorno y sockets, [49] aunque el soporte sigue siendo en gran medida incompleto y no totalmente interoperable con implementaciones compatibles con POSIX. [50] [51] [ discutir ]
POSIX para OS/2
Entornos mayoritariamente compatibles con POSIX para OS/2 :
- emx+gcc : compatible en gran medida con POSIX
POSIX para DOS
Los entornos parcialmente compatibles con POSIX para DOS incluyen:
- emx+gcc : compatible en gran medida con POSIX
- DJGPP : parcialmente compatible con POSIX
- Núcleo multitarea DR-DOS a través de EMM386 /MULTI : está disponible una extensión de API de interfaz de subprocesos POSIX
Compatible a través de la capa de compatibilidad
Los siguientes no están certificados oficialmente como compatibles con POSIX, pero cumplen en gran medida con los estándares al implementar soporte POSIX a través de algún tipo de característica de compatibilidad (generalmente bibliotecas de traducción o una capa sobre el núcleo). Sin estas características, generalmente no cumplen con los estándares.
- AmigaOS (a través de la biblioteca ixemul o vbcc _PosixLib [52] )
- eCos – POSIX es parte de la distribución estándar y lo utilizan muchas aplicaciones. La sección 'enlaces externos' a continuación tiene más información.
- IBM i (a través de la capa de compatibilidad PASE ) [53]
- MorphOS (a través de la biblioteca ixemul incorporada)
- OpenVMS (a través del paquete POSIX opcional) [54]
- Plan 9 de Bell Labs APE: entorno ANSI/POSIX [55]
- RIOT (a través del módulo POSIX opcional)
- Sistema operativo Symbian con PIPS (PIPS es POSIX en Symbian)
- VAXELN (soporte parcial de 1003.1 y 1003.4 a través de la biblioteca de tiempo de ejecución POSIX VAXELN) [56]
- Kernel de Windows NT al utilizar Microsoft SFU 3.5 o SUA
Véase también
Referencias
- ^ abcd «Preguntas frecuentes sobre POSIX.1». The Open Group. 13 de junio de 2020. Consultado el 20 de febrero de 2023 .
- ^ "IEEE 1003.1-2024". Asociación de Normas IEEE .
- ^ "Introducción". Especificaciones básicas de The Open Group, edición número 7, 2018. Consultado el 22 de julio de 2021 .
- ^ "JimIsaak - Impacto de POSIX". sites.google.com . Consultado el 15 de septiembre de 2022 .
- ^ "Información básica sobre la norma IEEE Std 1003.1". Notas al pie.
- ^ "El origen del nombre POSIX". stallman.org . Consultado el 26 de septiembre de 2024 .
- ^ Stoughton, Nicholas. "Una actualización sobre los estándares". ;login: .
- ^ Estado de PASC (incluido POSIX) (informe). IEEE Computer Society . 4 de diciembre de 2003. Consultado el 26 de septiembre de 2024 .
- ^ "Lenguaje de comandos de Shell - Especificaciones básicas de Open Group, número 7, edición de 2013" . Consultado el 28 de abril de 2020 .
- ^ "Suites de prueba VSX-PCTS2003". The Open Group.
- ^ "librt(3LIB)". docs.oracle.com . man pages section 3: Library Interfaces and Headers. Oracle Corporation. 4 de agosto de 1998 . Consultado el 18 de febrero de 2016 .
librt, libposix4- biblioteca de extensiones en tiempo real POSIX.1b [...] librt es el nombre preferido para esta biblioteca. El nombre libposix4 se mantiene por compatibilidad con versiones anteriores y se debe evitar. Las funciones de esta biblioteca proporcionan la mayoría de las interfaces especificadas por la extensión en tiempo real POSIX.1b.
- ^ "La especificación única UNIX versión 3: descripción general". unix.org .
- ^ "IEEE Std 1003.1" (edición de 2004). Unix.org . Consultado el 26 de julio de 2009 .
- ^ "Base Specification, Issue 6" (edición de 2004). The Open Group . Consultado el 20 de julio de 2024 ..
- ^ ab "The Austin Common Standards Revision Group". The Open Group . Consultado el 20 de julio de 2024 .
- ^ "Base Specification, Issue 7, 2018 Edition" (edición de 2018). The Open Group . Consultado el 20 de julio de 2024 .
- ^ "Especificaciones básicas, número 8" (edición de 2024). The Open Group..
- ^ Stallman, Richard (28 de agosto de 1991). "La democracia triunfa en las unidades de disco". Grupo de noticias : gnu.announce. Usenet: [email protected] – vía Google Groups.
- ^ "Estándares de codificación GNU". GNU.
- ^ "POSIX Certified by IEEE and The Open Group - Program Guide". Sección 2, Cómo lograr la certificación . Consultado el 26 de septiembre de 2024 .
- ^ ab "POSIX Certified by IEEE and The Open Group - Program Guide". Sección 4, Renovaciones y actualizaciones de productos certificados . Consultado el 26 de septiembre de 2024 .
- ^ "Productos certificados por empresa". The Open Group. sf . Consultado el 22 de enero de 2022 .
- ^ ab "IBM". The Open Group . Consultado el 23 de enero de 2022 .
- ^ "Hewlett-Packard". The Open Group . Consultado el 26 de enero de 2014 .
- ^ ab "Registro de certificación POSIX". The Open Group . Consultado el 22 de agosto de 2024 .
- ^ "The Open Brand - Registro de productos certificados". Registro de productos de marca abierta . The Open Group . Consultado el 20 de mayo de 2015 .
- ^ "Apple Inc". Registro de productos de marca abierta . The Open Group . Consultado el 20 de mayo de 2015 .
- ^ "SCO OpenServer Release 5". The Open Group. 3 de mayo de 1995. Consultado el 24 de diciembre de 2021 .
- ^ "UnixWare ® 7.1.3 y versiones posteriores". The Open Group. 16 de mayo de 2003. Consultado el 24 de diciembre de 2021 .
- ^ "Huawei Technology Co., Ltd". The Open Group . Consultado el 26 de mayo de 2017 .
- ^ "Inspur Co., Ltd". The Open Group . Consultado el 26 de mayo de 2017 .
- ^ "Silicon Graphics, Inc". The Open Group . Consultado el 26 de enero de 2014 .
- ^ "The Open Brand - Registro de productos certificados". Open Group . 23 de julio de 2003. Archivado desde el original el 2 de agosto de 2003 . Consultado el 23 de enero de 2022 .
- ^ "QNX obtiene nueva certificación POSIX" (Nota de prensa). QNX. 8 de abril de 2008. Consultado el 16 de enero de 2016 .
- ^ "Oracle Corporation". The Open Group. Archivado desde el original el 12 de julio de 2017. Consultado el 26 de enero de 2014 .
- ^ "Hewlett-Packard". The Open Group. Archivado desde el original el 9 de julio de 2014. Consultado el 26 de enero de 2014 .
- ^ "Huawei LiteOS / LiteOS". Gitee . Huawei . Consultado el 23 de mayo de 2024 .
- ^ Schweikhardt, Jens. "Cumplimiento de la utilidad POSIX 2001 de FreeBSD". FreeBSD.
- ^ Mark Halper (7 de noviembre de 1994). "Las ventas de la HP 3000 sorprenden al mercado". Computerworld . Vol. 28, núm. 4. IDG Enterprise.
- ^ Solter, Nicolás A.; Jelinek, Jerry; Minero, David (21 de marzo de 2011). Biblia OpenSolaris. John Wiley e hijos. ISBN 9781118080313.
- ^ Lamie, Bill; Taubinger, Rafael (15 de junio de 2023). "RTOS con API pthreads POSIX estándar: un complemento para Linux embebido". Embedded.com . Consultado el 13 de septiembre de 2023 .
- ^ "OpenVOS POSIX.1: Guía de conformidad". Status Technologies . Consultado el 26 de noviembre de 2021 .
- ^ Documento de conformidad con ULTRIX POSIX (PDF) . Digital. Junio de 1990 . Consultado el 13 de diciembre de 2021 .
- ^ "Soporte POSIX". Documentación de Zephyr . Consultado el 7 de marzo de 2023 .
- ^ Rowe, Robin (8 de septiembre de 2022). "libunistd". Github . Consultado el 18 de febrero de 2023 .
Si desea crear un código C++ de base de código única para ejecutarlo en Windows, Linux y MacOS, necesita esto para Windows
- ^ "Características eliminadas o en desuso en Windows Server 2012". Microsoft Docs . 31 de agosto de 2016.
- ^ "Paquete adicional de Windows NT Services para UNIX". Microsoft . Archivado desde el original el 8 de mayo de 1999.
- ^ "MKS resuelve los desafíos de interoperabilidad empresarial" (nota de prensa). Archivado desde el original el 28 de abril de 1999.
- ^ "Funciones CRT obsoletas". Microsoft Docs . 15 de octubre de 2009 . Consultado el 23 de julio de 2022 .
- ^ "Portar aplicaciones de socket a Winsock". Microsoft Docs . 7 de enero de 2021 . Consultado el 23 de julio de 2022 .
- ^ "Artículos de preguntas frecuentes del programador Winsock: compatibilidad de sockets BSD". Warren Young. 31 de agosto de 2015. Consultado el 8 de octubre de 2015 .
- ^ "Aminet - dev/C/Vbcc_PosixLib.lha".
- ^ "Programación IBM PASE para i" (PDF) . ibm.com . IBM. 2013 . Consultado el 25 de noviembre de 2021 .
- ^ "Lista de productos validados conforme a la norma FIPS 151-2". Perennial Test Lab . Consultado el 14 de agosto de 2022 .
- ^ "APE — Entorno ANSI/POSIX". Documentos del Plan 9. Bell Labs. Archivado desde el original el 1 de junio de 2017.
- ^ Resumen técnico de productos en tiempo real, quinta edición (PDF) . Digital Equipment Corporation . Diciembre de 1992 . Consultado el 8 de diciembre de 2021 .
- ^ "Capítulo 29 - Compatibilidad con POSIX". Kit de recursos para estaciones de trabajo MS Windows NT . Microsoft. Archivado desde el original el 15 de enero de 2008.
Enlaces externos
Wikimedia Commons tiene medios relacionados con POSIX .
- "Especificaciones básicas de The Open Group, número 8, edición 2024, IEEE Std 1003.1™-2024". The Open Group/IEEE.
- "Página de inicio de la certificación POSIX". The Open Group/IEEE.