# POSIX

POSIX (acrónimo de Portable Operating System Interface, y X viene de UNIX como seña de identidad de la API) es una norma escrita por la IEEE, que define una interfaz estándar del sistema operativo y el entorno, incluyendo un intérprete de comandos (o "shell").
El término fue sugerido por Richard Stallman en la década de 1980, en respuesta a la demanda del IEEE, que buscaba un nombre fácil de recordar. La traducción del acrónimo es "Interfaz de Sistema Operativo Portable".

## Introducción

POSIX es una norma escrita y una marca registrada por la Institute of Electrical and Electronics Engineers. Dicha norma define una interfaz estándar del sistema operativo y el entorno, incluyendo un intérprete de comandos (o "shell"), y programas de utilidades comunes para apoyar la portabilidad de las aplicaciones a nivel de código fuente. El nombre POSIX surgió de la recomendación de Richard Stallman, que por aquel entonces, en la década de 1980, formaba parte del comité de IEEE.
Una serie de pruebas acompañan al estándar POSIX. Son llamadas "PCTS" en alusión al acrónimo "Posix Conformance Test Suite". Desde que la IEEE empezó a cobrar altos precios por la documentación de POSIX y se ha negado a publicar los estándares, se ha aumentado el uso del modelo Single Unix Specification. Este modelo es abierto, acepta entradas de todo el mundo y está libremente disponible en Internet. Fue creado por The Open Group.

## Partes

* POSIX.1, Core Services (implementa las llamadas del ANSI C estándar). Incluye:
** Creación y control de procesos.
** Señales.
** Excepciones de punto flotante.
** Excepciones por violación de segmento.
** Excepciones por instrucción ilegal.
** Errores del bus.
** Temporizadores.
** Operaciones de ficheros y directorios (sobre cualquier fs montado).
** Tuberías (Pipes).
** Biblioteca estándar de C.
** Instrucciones de entrada/salida y de control de dispositivo (ioctl).
* POSIX.1b, extensiones para tiempo real:
** Planificación (scheduling) con prioridad.
** Señales de tiempo real.
** Temporizadores.
** Semáforos.
** Paso de mensajes (message passing).
** Memoria compartida.
** Entrada/salida síncrona y asíncrona.
** Bloqueos de memoria.
* POSIX.1c, extensiones para hilos (threads):
** Creación, control y limpieza de hilos.
** Planificación (scheduling).
** Sincronización.
** Manejo de señales.
* POSIX.2, Shell y Utilidades (IEEE Std 1003.2-1992)
** Intérprete de comandos
** Programas de Utilidad
Luego de 1997 el Grupo Austin realizó modificaciones a POSIX. Las especificaciones tienen el nombre de Single Unix Specification (Especificación Única de Unix)
* POSIX:2001 o IEEE Std 1003.1-2001 equivale a la versión 3 de Single UNIX Specification.
** La base de definiciones, Tema 6.
** Las interfaces y encabezamientos del sistema, Tema 6.
** Los comandos y utilidades, Tema 6.
* POSIX:2004 o IEEE Std 1003.1-2004 implica una pequeña actualización de POSIX:2001. Tiene dos correcciones técnicas de errores.
* A partir de 2009 POSIX:2008 o IEEE Std 1003.1-2008 representa la versión actual.
** La base de definiciones, Tema 7,
** Las interfaces encabezamientos del sistema, Tema 7.
** Los comandos y utilidades, Tema 7.

## Compatibilidad
### Totalmente compatibles con POSIX

Los siguientes Sistemas Operativos son 100% compatibles con uno o varios estándares POSIX:
* A/UX
* AIX
* BSD/OS
* DSPnano
* HP-UX
* INTEGRITY
* IRIX
* LynxOS
* Mac OS X v10.5 en Procesadores Intel.
* MINIX
* MPE/iX
* QNX (IEEE Std. 1003.13-2003 PSE52;
* RTEMS (POSIX 1003.1-2003 Profile 52)
* Solaris
* Unison RTOS
* UnixWare
* velOSity
* VxWorks (IEEE Std. 1003.13-2003 PSE52;

### Mayoritariamente compatibles con POSIX

Los siguientes, aunque no certificados de manera oficial como compatibles con POSIX, se ajustan en gran parte:
* BeOS / Haiku
* FreeBSD
* GNU/Linux (la mayor parte de las distribuciones)
* Contiki
* NetBSD
* Nucleus RTOS
* OpenBSD
* OpenSolaris
* PikeOS
* RTOS (para ciertos sistemas con particiones PSE51 y PSE52 opcionales)
* RTEMS – Soporte API POSIX diseñado para IEEE Std. 1003.13-2003 PSE52
* Sanos
* SkyOS
* Syllable
* VSTa

### POSIX para Windows

* Cygwin ofrece un desarrollo en gran parte compatible con POSIX y un entorno de ejecución para Microsoft Windows.
* Microsoft POSIX subsystem, un subsistema opcional Windows.
* Windows Services for UNIX de Microsoft permite una plena compatibilidad POSIX para ciertos productos de Microsoft Windows. Los sistemas operativos basados en Windows NT hasta Windows 2000 tenían una interfaz POSIX incorporada en el sistema operativo y los Servicios UNIX para Windows brindaban un entorno del tipo UNIX. Para Windows XP, los Servicios UNIX para Windows deben de instalarse para que exista compatibilidad POSIX. El subsistema UNIX está incorporado a las ediciones Enterprise y Ultimate de Windows Vista y 7, y no pueden ser agregados en forma separada a las otras ediciones..
* UWIN de AT&T Research implementa una capa POSIX sobre la interfaz de programa de aplicaciones (API) de Win32
* MKS Toolkit
* 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 otras, actuando como actualización y reemplazo de Windows Services for UNIX. Fue lanzado en beta en abril de 2016. La primera distribución disponible fue Ubuntu.