Familia de estándares IEEE para compatibilidad entre sistemas operativos
La interfaz sistema operativo portátil POSIX ; IPA familia de especificados por la Society para mantener la compatibilidad entre operativos . [1] POSIX define las interfaces de programación de aplicaciones (API) tanto del sistema como del usuario , junto con shells de línea de comandos e interfaces de utilidades, para la compatibilidad del software (portabilidad) con variantes de Unix y otros sistemas operativos. [1] [2] POSIX también es una marca comercial de IEEE. [1] POSIX está destinado a ser utilizado tanto por desarrolladores de aplicaciones como de sistemas. [3]
Nombre
Originalmente, el nombre "POSIX" se refería a 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 basándose en el trabajo de actividades relacionadas en la asociación /usr/group . [4] Richard Stallman sugirió el nombre POSIX al IEEE [5] en lugar del antiguo IEEE-IX . [6] El comité lo encontró más fácil de pronunciar y recordar, y por lo tanto lo adoptó. [ cita necesaria ]
Descripción general
Se seleccionó Unix como base para una interfaz de sistema estándar, en parte porque era "neutral respecto al fabricante". Sin embargo, existían varias versiones importantes de Unix, por lo que era necesario desarrollar un sistema de denominador común. Las especificaciones POSIX para sistemas operativos tipo Unix originalmente consistían en un solo documento para la interfaz de programación central , pero eventualmente crecieron a 19 documentos separados (POSIX.1, POSIX.2, etc.). [7] La línea de comandos de usuario estandarizada y la interfaz de secuencias de comandos se basaron en el shell UNIX System V. [8] También se estandarizaron muchos programas, servicios y utilidades a nivel de usuario (incluidos awk , echo , ed ), junto con los servicios requeridos a nivel de programa (incluidas E/S básicas : archivos , terminales y redes ). 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 red de proceso a proceso, Extensiones de portabilidad de usuario, Correcciones y extensiones, Utilidades de protección y control y Utilidades del sistema por lotes. Este es POSIX 1003.1-2008 con Corrigendum técnico 1.)
- Pruebas de conformidad POSIX: un conjunto de pruebas para POSIX acompaña al estándar: VSX-PCTS o VSX POSIX Conformance Test Suite . [9]
El desarrollo del estándar POSIX se lleva a cabo en el Grupo Austin (un grupo de trabajo conjunto entre IEEE, The Open Group e ISO/IEC JTC 1/SC 22 /WG 15).
Versiones
Piezas anteriores a 1997
Antes de 1997, POSIX constaba de varios estándares:
- POSIX.1 : Servicios principales (incorpora el estándar ANSI C ) (IEEE Std 1003.1-1988)
- POSIX.1b : Extensiones en tiempo real (IEEE Std 1003.1b-1993, que luego aparece como librt, la biblioteca de extensiones en tiempo real) [10]
- POSIX.1c : Extensiones de subprocesos (IEEE Std 1003.1c-1995)
- Creación, control y limpieza de subprocesos
- Programación de subprocesos
- Sincronización de hilos
- Manejo de señales
- POSIX.2 : Shell y servicios públicos (IEEE Std 1003.2-1992)
Versiones posteriores a 1997
Después de 1997, el Grupo Austin desarrolló las revisiones POSIX. Las especificaciones se conocen con el nombre de Especificación única UNIX , antes de convertirse en un estándar POSIX cuando la ISO las aprueba formalmente.
POSIX.1-2001 (con dos TC)
POSIX.1-2001 (o IEEE Std 1003.1-2001) equivale a la especificación única de UNIX, versión 3 menos X/Open Curses . [11]
Esta norma consistió en:
- las Definiciones Base, Número 6,
- las interfaces y encabezados del sistema, número 6,
- los Comandos y Utilidades, Número 6.
IEEE Std 1003.1-2004 implicó una actualización menor de POSIX.1-2001. Incorporó dos actualizaciones menores o erratas denominadas Corrigenda Técnica (CT). [12] Sus contenidos están disponibles en la web. [13]
POSIX.1-2008 (con dos CT)
Especificaciones básicas, edición 7 (o IEEE Std 1003.1-2008 , edición 2016). [14]
Esta norma consta de:
- las Definiciones Básicas, Número 7,
- las 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): estándar IEEE para tecnología de la información: especificaciones básicas de interfaz de sistema operativo portátil (POSIX(R)), edición 7, está disponible en The Open Group o IEEE. Es técnicamente idéntico a POSIX.1-2008 con los Corrigenda Técnicos 1 y 2 aplicados. Su contenido está disponible en la web. [15]
POSIX.1-2024
IEEE Std 1003.1-2024 - Estándar IEEE para tecnología de la información: especificaciones básicas de interfaz de sistema operativo portátil (POSIX (R)), número 8, se publicó el 14 de junio de 2024. [14] Su contenido está disponible en la web. [16]
Controversias
Bloques de 512 frente a 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 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 compatible con los estándares. [17] El nombre de la variable se cambió posteriormente a POSIXLY_CORRECT . [18] Esta variable ahora también se utiliza para 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.
Certificado POSIX
Se ha certificado que las versiones actuales de los siguientes sistemas operativos cumplen con uno o más de los diversos estándares POSIX. Esto significa que pasaron las pruebas de conformidad automatizadas [19] y su certificación no ha caducado y el sistema operativo no ha sido descontinuado. [20] [21]
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. Esto significa que pasaron las pruebas de conformidad automatizadas. La certificación ha caducado y algunos de los sistemas operativos han sido descontinuados. [20]
Mayormente compatible con POSIX
Los siguientes no están certificados como compatibles con POSIX pero cumplen en gran medida:
POSIX para Microsoft Windows
- Cygwin proporciona un entorno de desarrollo y tiempo de ejecución ampliamente 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 tiempo de ejecución Visual C de Microsoft .
- libunistd, una biblioteca de desarrollo en gran medida compatible con POSIX creada originalmente para compilar 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. [44]
- Subsistema Microsoft POSIX , un subsistema opcional de Windows incluido en los sistemas operativos basados en Windows NT hasta Windows 2000. Soportaba 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 Microsoft POSIX que fue comprado por Microsoft en 1999. Inicialmente se comercializó como un producto complementario independiente y luego se incluyó como un componente en Windows. Servicios para UNIX (SFU) y finalmente incorporados como componente en Windows Server 2003 R2 y versiones posteriores del sistema operativo Windows con el nombre "Subsistema para aplicaciones basadas en UNIX" (SUA); Posteriormente quedó obsoleto en 2012 (Windows 8) [45] y se eliminó en 2013 (2012 R2, 8.1). Permite el cumplimiento total de POSIX para ciertos productos de Microsoft Windows . [ cita necesaria ]
- El Subsistema de Windows para Linux , también conocido como WSL, es una capa de compatibilidad para ejecutar ejecutables binarios de Linux de forma nativa en Windows 10 y 11 utilizando una imagen de Linux como Ubuntu, Debian u OpenSUSE, entre otros, actuando 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 encima de 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 secuencias de comandos, conectividad y portabilidad de software Unix y Linux a sistemas Microsoft Windows de 32 y 64 bits . Un subconjunto se incluyó en la primera versión de Servicios de Windows para UNIX (SFU) en 1998. [46] [47]
- Windows C Runtime Library y Windows Sockets API implementan funciones API POSIX comúnmente utilizadas para acceso a archivos, tiempo, entorno y sockets, [48] aunque el soporte sigue siendo en gran medida incompleto y no totalmente interoperable con implementaciones compatibles con POSIX. [49] [50] [ discutir ]
POSIX para OS/2
Entornos principalmente compatibles con POSIX para OS/2 :
- emx+gcc – ampliamente compatible con POSIX
POSIX para DOS
Los entornos parcialmente compatibles con POSIX para DOS incluyen:
- emx+gcc – ampliamente compatible con POSIX
- DJGPP – parcialmente compatible con POSIX
- Núcleo multitarea DR-DOS a través de EMM386 /MULTI : está disponible una extensión API de interfaz de subprocesos POSIX
Cumple a través de la capa de compatibilidad
Los siguientes no están certificados oficialmente como compatibles con POSIX, pero se ajustan en gran medida a 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 encima del kernel). Sin estas características, normalmente no cumplen con las normas.
- AmigaOS (a través de la biblioteca ixemul o vbcc _PosixLib [51] )
- 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 ) [52]
- MorphOS (a través de la biblioteca ixemul incorporada)
- OpenVMS (a través del paquete POSIX opcional) [53]
- Plan 9 de Bell Labs APE - Entorno ANSI/POSIX [54]
- 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 VAXELN POSIX) [55]
- Kernel de Windows NT cuando se utiliza Microsoft SFU 3.5 o SUA
Ver también
Referencias
- ^ abcd "Preguntas frecuentes sobre POSIX.1". El grupo abierto. 13 de junio de 2020 . Consultado el 20 de febrero de 2023 .
- ^ "P1003.1 - Estándar para tecnología de la información - Especificaciones básicas de la interfaz del sistema operativo portátil (POSIX (TM)), edición 8". Asociación de Estándares IEEE .
- ^ "Introducción". Especificaciones básicas de Open Group Número 7, edición de 2018 . Consultado el 22 de julio de 2021 .
- ^ "JimIsaak - Impacto POSIX". sitios.google.com . Consultado el 15 de septiembre de 2022 .
- ^ "Antecedentes sobre IEEE Std 1003.1". Notas a pie de página.
- ^ Stoughton, Nicolás. "Una actualización sobre los estándares". ;acceso: .
- ^ Estado de PASC (incluido POSIX) (Reporte). Sociedad de Computación IEEE . 4 de diciembre de 2003 . Consultado el 1 de marzo de 2015 .
- ^ "Lenguaje de comandos de Shell: especificaciones básicas de Open Group, edición 7, edición de 2013" . Consultado el 28 de abril de 2020 .
- ^ "Suites de pruebas VSX-PCTS2003". El grupo abierto.
- ^ "libre(3LIB)". docs.oracle.com . Sección 3 de las páginas de manual: Interfaces y encabezados de biblioteca. Corporación Oráculo. 4 de agosto de 1998 . Consultado el 18 de febrero de 2016 .
librt, libposix4- Biblioteca POSIX.1b Realtime Extensions [...] librt es el nombre preferido para esta biblioteca. El nombre libposix4 se mantiene por compatibilidad con versiones anteriores y debe evitarse. Las funciones de esta biblioteca proporcionan la mayoría de las interfaces especificadas por POSIX.1b Realtime Extension.
- ^ "La especificación única de 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 .
- ^ "Especificaciones básicas, número 6" (edición de 2004). El grupo abierto . Consultado el 20 de julio de 2024 ..
- ^ ab "Grupo de revisión de estándares comunes de Austin". El grupo abierto . Consultado el 20 de julio de 2024 .
- ^ "Especificaciones básicas, número 7, edición de 2018" (edición de 2018). El grupo abierto . Consultado el 20 de julio de 2024 .
- ^ "Especificaciones básicas, número 8" (edición de 2024). El grupo abierto..
- ^ Stallman, Richard (28 de agosto de 1991). "La democracia triunfa en las unidades de disco". Grupo de noticias : gnu.announce. Usenet: [email protected] – a través de Grupos de Google.
- ^ "Estándares de codificación GNU". ÑU.
- ^ "POSIX certificado por IEEE y The Open Group - Guía del programa". Sección 2, Cómo lograr la certificación . Consultado el 22 de enero de 2022 .
- ^ ab "POSIX certificado por IEEE y The Open Group - Guía del programa". Sección 4, Renovaciones y actualizaciones de productos certificados . Consultado el 22 de enero de 2022 .
- ^ "Productos certificados por empresa". El grupo abierto. y nd . Consultado el 22 de enero de 2022 .
- ^ ab "IBM". El grupo abierto . Consultado el 23 de enero de 2022 .
- ^ "Hewlett-Packard". El grupo abierto . Consultado el 26 de enero de 2014 .
- ^ ab "Registro de certificación POSIX". IEEE . Archivado desde el original el 25 de enero de 2023 . Consultado el 23 de enero de 2022 .
- ^ "The Open Brand - Registro de productos certificados". Registro de Productos de Marca Abierta . El grupo abierto . Consultado el 20 de mayo de 2015 .
- ^ "Apple Inc". Registro de Productos de Marca Abierta . El grupo abierto . Consultado el 20 de mayo de 2015 .
- ^ "SCO OpenServer versión 5". El grupo abierto. 3 de mayo de 1995 . Consultado el 24 de diciembre de 2021 .
- ^ "UnixWare ® 7.1.3 y posteriores". El grupo abierto. 16 de mayo de 2003 . Consultado el 24 de diciembre de 2021 .
- ^ "Tecnología Co., Ltd de Huawei". El grupo abierto . Consultado el 26 de mayo de 2017 .
- ^ "Inspur Co., Ltd". El grupo abierto . Consultado el 26 de mayo de 2017 .
- ^ "Silicon Graphics, Inc". El grupo abierto . Consultado el 26 de enero de 2014 .
- ^ "The Open Brand - Registro de productos certificados". Grupo Abierto . 23 de julio de 2003. Archivado desde el original el 2 de agosto de 2003 . Consultado el 23 de enero de 2022 .
- ^ "QNX logra una nueva certificación POSIX" (Presione soltar). QNX. 8 de abril de 2008 . Consultado el 16 de enero de 2016 .
- ^ "Corporación Oracle". El grupo abierto. Archivado desde el original el 12 de julio de 2017 . Consultado el 26 de enero de 2014 .
- ^ "Hewlett-Packard". El grupo abierto. Archivado desde el original el 9 de julio de 2014 . Consultado el 26 de enero de 2014 .
- ^ "Huawei LiteOS/LiteOS". Casa rural . Huawei . Consultado el 23 de mayo de 2024 .
- ^ Schweikhardt, Jens. "Cumplimiento de la utilidad FreeBSD POSIX 2001". FreeBSD.
- ^ Mark Halper (7 de noviembre de 1994). "Las ventas de HP 3000 toman el mercado por sorpresa". Mundo informático . vol. 28, núm. 4. Empresa IDG.
- ^ 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 integrado". Embedded.com . Consultado el 13 de septiembre de 2023 .
- ^ "OpenVOS POSIX.1: Guía de conformidad". Tecnologías de estado . Consultado el 26 de noviembre de 2021 .
- ^ Documento de conformidad de 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). "libunista". Github . Consultado el 18 de febrero de 2023 .
Si desea crear código C++ de base de código único para ejecutarlo en Windows, Linux y MacOS, lo necesita para Windows.
- ^ "Funciones eliminadas o obsoletas en Windows Server 2012". Documentos de Microsoft . 31 de agosto de 2016.
- ^ "Paquete complementario de servicios de Windows NT para UNIX". Microsoft . Archivado desde el original el 8 de mayo de 1999.
- ^ "MKS resuelve los desafíos de interoperabilidad empresarial" (Presione soltar). Archivado desde el original el 28 de abril de 1999.
- ^ "Funciones CRT obsoletas". Documentos de Microsoft . 15 de octubre de 2009 . Consultado el 23 de julio de 2022 .
- ^ "Transferencia de aplicaciones de socket a Winsock". Documentos de Microsoft . 7 de enero de 2021 . Consultado el 23 de julio de 2022 .
- ^ "Artículos de preguntas frecuentes del programador de Winsock: compatibilidad de sockets BSD". Warren joven. 31 de agosto de 2015 . Consultado el 8 de octubre de 2015 .
- ^ "Aminet-dev/C/Vbcc_PosixLib.lha".
- ^ "Programación de IBM PASE para i" (PDF) . ibm.com . IBM. 2013 . Consultado el 25 de noviembre de 2021 .
- ^ "Lista de productos validados de conformidad con FIPS 151-2". Laboratorio de pruebas perenne . Consultado el 14 de agosto de 2022 .
- ^ "APE - Entorno ANSI/POSIX". Plan 9 documentos . Laboratorios Bell. Archivado desde el original el 1 de junio de 2017.
- ^ Resumen técnico de productos en tiempo real, quinta edición (PDF) . Corporación de equipos digitales . Diciembre de 1992 . Consultado el 8 de diciembre de 2021 .
- ^ "Capítulo 29 - Compatibilidad 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 Open Group, edición 7, edición de 2018, IEEE Std 1003.1 ™ -2017". El Grupo Abierto/IEEE.
- "Inicio de Certificación POSIX". El Grupo Abierto/IEEE.