POSIX
La interfaz de sistema operativo portátil (POSIX) es una familia de estándares especificados por la IEEE Computer Society para mantener la compatibilidad entre sistemas operativos. POSIX define las interfaces de programación de aplicaciones (API) a nivel de sistema y de usuario, junto con los shells de línea de comandos y las interfaces de utilidades, para la compatibilidad del software (portabilidad) con variantes de Unix y otros sistemas operativos. POSIX también es una marca comercial de IEEE. POSIX está destinado a ser utilizado por desarrolladores de aplicaciones y sistemas.
Nombre
Originalmente, el nombre "POSIX" hace referencia 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 la actividad relacionada en la asociación /usr/group. Richard Stallman sugirió el nombre POSIX (pronunciado como pahz-icks, como en positivo, no como poh-six) al IEEE en lugar del antiguo IEEE-IX. El comité lo encontró más fácilmente pronunciable y memorable, y por lo tanto lo adoptó.
Resumen
Se seleccionó Unix como base para una interfaz de sistema estándar en parte porque era "independiente del fabricante". Sin embargo, existían varias versiones principales de Unix, por lo que era necesario desarrollar un sistema de denominador común. Las especificaciones POSIX para sistemas operativos similares a Unix originalmente consistían en un solo documento para la interfaz de programación central, pero eventualmente creció a 19 documentos separados (POSIX.1, POSIX.2, etc.). La línea de comandos de usuario estandarizada y la interfaz de secuencias de comandos se basaron en el shell UNIX System V. Muchos programas, servicios y utilidades de nivel de usuario (incluidos awk, echo, ed) también se estandarizaron, junto con los servicios de nivel de programa requeridos (incluidas E/S básicas: archivo, terminal y red). 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, la documentación de POSIX se divide en dos partes:
- POSIX.1, 2013 Edición: POSIX Definiciones de base, interfaces de sistema, y comandos y utilidades (que incluyen POSIX.1, extensiones para POSIX.1, servicios en tiempo real, hilos Interfaz, 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, protección y control Utilities y sistema de batería. Este es POSIX 1003.1-2008 con Corrección Técnica 1.)
- POSIX Pruebas de Conformance: Una suite de prueba para POSIX acompaña el estándar: VSX-PCTS o el VSX POSIX Conformance Test Suite.
El desarrollo del estándar POSIX se lleva a cabo en Austin Group (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 comprendía varios estándares:
- POSIX.1: Servicios básicos (incorporates Standard ANSI C) (IEEE Std 1003.1-1988)
- Creación y control de procesos
- Signales
- Excepciones de puntos flotantes
- Segmentación / Violaciones de memoria
- Instrucciones ilegales
- Errores de autobús
- Timers
- Operaciones de archivo y directorio
- Pipas
- C Library (Standard C)
- Interfaz y control de puertos I/O
- Los desencadenantes del proceso
- POSIX.1b: Extensiones en tiempo real (IEEE Std 1003.1b-1993, más tarde apareciendo como librt - la biblioteca de extensiones en tiempo real)
- Programa de prioridades
- Signales en tiempo real
- Ropa y Timers
- Semaphores
- Mensaje Pasando
- Memoria compartida
- Asincrónico y sincronizado I/O
- Interfaz de bloqueo de memoria
- POSIX.1c: Extensiones de panes (IEEE Std 1003.1c-1995)
- Creación, control y limpieza de hilos
- Thread Scheduling
- Sincronización del pan
- Manejo de señalización
- POSIX.2: Shell and Utilities (IEEE Std 1003.2-1992)
- Comando Interpreter
- Programas de Utilidad
Versiones posteriores a 1997
Después de 1997, Austin Group desarrolló las revisiones de POSIX. Las especificaciones se conocen con el nombre de Single UNIX Specification, antes de que se conviertan en un estándar POSIX cuando sean formalmente aprobadas por la ISO.
POSIX.1-2001 (con dos TC)
POSIX.1-2001 (o IEEE Std 1003.1-2001) equivale a la Especificación UNIX única, versión 3 menos X/Open Curses.
Este estándar consistía en:
- las definiciones de base, número 6,
- el Sistema Interfaces y Headers, 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 Corrección técnica (TC). Sus contenidos están disponibles en la web.
POSIX.1-2008 (con dos TC)
Especificaciones básicas, edición 7 (o IEEE Std 1003.1-2008, edición de 2016) es similar a la versión actual de 2017 (al 22 de julio de 2018).
Este estándar consta de:
- las definiciones de base, número 7,
- the System Interfaces and Headers, Issue 7,
- los Comandos y Utilidades, Número 7,
- el volumen Rationale.
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 Specifications, Issue 7 is available from the Open Group or IEEE and is, a partir del 22 de julio de 2018, la norma vigente. Es técnicamente idéntico a POSIX.1-2008 con los Corrigenda Técnicos 1 y 2 aplicados. Es posible que aún esté disponible una copia gratuita en línea.
Controversias
Bloques de 512 vs 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, objetaron esto porque 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. El nombre de la variable se cambió posteriormente a POSIXLY_CORRECT. Esta variable ahora también se usa para una serie de otras peculiaridades de comportamiento.
Sistemas operativos orientados a POSIX
Según el grado de cumplimiento de los estándares, se pueden clasificar los sistemas operativos como total o parcialmente compatibles con POSIX.
Certificada POSIX
(feminine)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 y su certificación no ha caducado y el sistema operativo no ha sido descontinuado.
- AIX
- EulerOS
- HP-UX
- INTEGRIDAD
- macOS (desde 10,5 Leopard)
- OpenServer
- UnixWare
- VxWorks
- z/OS
Anteriormente certificado por 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 se han descontinuado.
- Inspur K-UX
- IRIX
- OS/390
- QNX Neutrino
- Solaris
- Tru64
En su mayoría compatible con POSIX
Los siguientes no están certificados como compatibles con POSIX pero cumplen en gran parte:
- Android (Disponible a través de Android NDK)
- BeOS (y posteriormente Haiku)
- Contiki
- Darwin (core de macOS e iOS)
- DragonFly BSD
- FreeBSD
- illumos
- Linux (más distribuciones)
- LynxOS
- MINIX (ahora MINIX3)
- MPE/iX
- NetBSD
- Nucleus RTOS
- NuttX
- OpenBSD
- OpenSolaris
- PikeOS RTOS para sistemas integrados con particiones opcionales PSE51 y PSE52; vea partición (mainframe)
- Redox
- RTEMS – POSIX API support designed to IEEE Std. 1003.13-2003 PSE52
- SerenityOS
- Stratus OpenVOS
- SkyOS
- Syllable
- ULTRIX
- VSTa
- VMware ESXi
- Xenix
POSIX para Microsoft Windows
- Cygwin proporciona un entorno de desarrollo y tiempo de ejecución compatible con POSIX para Microsoft Windows.
- MinGW, un tenedor de Cygwin, proporciona un entorno de desarrollo menos compatible con POSIX y soporta aplicaciones programadas por C compatibles a través de Msvcrt, la antigua biblioteca Visual C de Microsoft.
- Subsistema Microsoft POSIX, un subsistema de Windows opcional incluido en sistemas operativos basados en Windows NT hasta Windows 2000. POSIX-1 como estaba en 1990 revisión, sin hilos ni tomas.
- Interix, originalmente OpenNT por Softway Systems, Inc., es una actualización y reemplazo para el subsistema Microsoft POSIX que fue adquirido por Microsoft en 1999. Inicialmente fue comercializado como un producto add-on independiente y luego lo incluyó como un componente en Windows Services para UNIX (SFU) y finalmente lo incorporó como un componente en Windows Server 2003 R2 y posteriormente Windows OS libera bajo el nombre "Subsystem for UNIX-based Applications" (SUA); posteriormente se hizo deprecatado en 2012 (Windows 8) y cayó en 2013 (2012 R2, 8.1). Permite el cumplimiento POSIX completo para ciertos productos de Microsoft Windows.
- Subsistema de Windows para Linux, también conocido como WSL, es una capa de compatibilidad para ejecutar los ejecutables binarios de Linux nativamente en Windows 10 usando una imagen de Linux como Ubuntu, Debian o OpenSUSE entre otros, actuando como una actualización y sustitución de Windows Services para UNIX. Fue liberado en beta en abril de 2016. La primera distribución disponible fue Ubuntu.
- UWIN de AT plagaT Research implementa una capa POSIX en la parte superior de las API 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 scripting, conectividad y porting Unix y software Linux a sistemas Microsoft Windows de 32 y 64 bits. En 1998 se incluyó un subconjunto en la primera versión de Windows Services for UNIX (SFU).
- Windows C Duración Biblioteca y Windows Sockets API implementan funciones POSIX API de uso común para el acceso a archivos, tiempo, medio ambiente y socket, aunque el soporte permanece en gran parte incompleto y no totalmente interoperable con implementaciones compatibles con POSIX.
POSIX para OS/2
La mayoría de los entornos compatibles con POSIX para OS/2:
- emx+gcc – en gran parte POSIX cumple
POSIX para DOS
Los entornos parcialmente compatibles con POSIX para DOS incluyen:
- emx+gcc – en gran parte POSIX cumple
- DJGPP – parcialmente compatible con POSIX
- núcleo multitarea DR-DOS a través de EMM386 / MULTI – una extensión de API de interfaz de los hilos POSIX está disponible
Cumple con la capa de compatibilidad
Los siguientes no están oficialmente certificados como compatibles con POSIX, pero se ajustan en gran parte a los estándares mediante la implementación de la compatibilidad con 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, por lo general no cumplen.
- AmigaOS (a través de la biblioteca ixemul o vbcc_PosixLib)
- e Porque – POSIX es parte de la distribución estándar y utilizada por muchas aplicaciones. "enlaces externos" la sección a continuación tiene más información.
- IBM i (a través de la capa de compatibilidad PASE)
- MorphOS (a través de la biblioteca de ixemul incorporada)
- OpenVMS (a través del paquete opcional POSIX)
- Plan 9 de Bell Labs APE - ANSI/POSIX Environment
- RIOT (a través del módulo opcional POSIX)
- Symbian OS con PIPS (PIPS es POSIX en Symbian)
- kernel de Windows NT cuando utiliza Microsoft SFU 3.5 o SUA
- Servidor Windows 2000 o profesional con Service Pack 3 o posterior. Para ser compatible con POSIX, debe activar funciones opcionales de Windows NT y Windows 2000 Server.
- Windows XP Professional con Service Pack 1 o posterior
- Windows Server 2003
- Windows Server 2008 y versiones Ultimate y Enterprise de Windows Vista
- Windows Server 2008 versiones R2 y Ultimate y Enterprise de Windows 7
- albeit deprecated, todavía disponible para Windows Server 2012 y la versión Enterprise de Windows 8
- VAXELN (apoyo parcial de 1003.1 y 1003.4 a través de la biblioteca de tiempo de ejecución VAXELN POSIX)
Contenido relacionado
Ancho de banda (procesamiento de señal)
X-Forwarded-For (HTTP)
Definición del tipo de documento