martes, 27 de septiembre de 2011

POSIX((Portable Operating System Interface)

¿Qué es?


Es un estándar de interfase de sistema operativo, basado en el popular sistema operativo UNIX. El estándar POSIX está actualmente en desarrollo, y su principal objetivo es permitir la portabilidad de aplicaciones a nivel de código fuente, es decir, que sea posible portar una aplicación de un computador a otro sin más que recompilar su código. Está siendo desarrollado por la Computer Society de IEEE, con la referencia IEEE-P1003.
También está siendo estandarizado a nivel internacional con la referencia ISO/IEC-9945.
El POSIX es un grupo de estándares en evolución. Cada uno de los estándares que lo componen cubre diferentes aspectos de los sistemas operativos. Algunos de ellos ya han sido aprobados, mientras que otros están aún en fase de desarrollo. Los estándares POSIX se pueden agrupar en tres categorías diferentes:


1)ESTANDARES BASE, Definen interfases del sistema relacionadas con diferentes aspectos del sistema operativo. El estándar especifica la sintaxis y la semántica de estos servicios del sistema operativo, de modo que los programas de aplicación puedan invocarlos directamente. El estándar no especifica cómo se implementan estos servicios; de este modo, los implementadores de sistemas pueden elegir la implementación que crean más conveniente—y así competir entre ellos—, siempre que cumplan la especificación de la interfase. Todos los estándares base desarrollados hasta el momento lo han sido para lenguaje C.

La Tabla I y la Tabla II muestran los estándares base que están siendo desarrollados por los grupos de
trabajo del POSIX.


Tabla I. Lista de estándares base del POSIX
POSIX.1   Interfases del sistema (estándar básico)
POSIX.2   Shell y utilidades
POSIX.3 Métodos para medir la conformidad con POSIX
POSIX.4 Extensiones de tiempo real
POSIX.4a Extensión de threads, o múltiples flujos de control
POSIX.4b Extensiones adicionales de tiempo real
POSIX.6 Extensiones de seguridad
POSIX.7 Administración del sistema
POSIX.8 Acceso a ficheros transparente a la red
POSIX.12 Interfases de red independientes del protocolo
POSIX.15 Extensiones de colas batch
POSIX.17 Servicios de directorios


Tabla II. Estándares base POSIX adicionales
P1224 Servicios de mensajería electrónica (X.400)
P1224.1 Interfase para portabilidad de aplicaciones X.400
P1238 Interfase de comunicaciones OSI
P1238.1 Interfase OSI de transferencia de ficheros
P1201.1 Interfase gráfica a usuario (ventanas)



2) Interfases en diferentes lenguajes de programación: Son estándares secundarios que traducen a un lenguaje de programación concreto los estándares base. Los lenguajes utilizados hasta el momento son Ada, Fortran 77, y Fortran 90, además del lenguaje C, en el que se han especificado hasta el momento los estándares base.
La Tabla III muestra las interfases POSIX que están actualmente en desarrollo para diferentes lenguajes de programación.

Tabla III. Lista de interfases POSIX para diferentes lenguajes de programación
POSIX.5 Interfases Ada
POSIX.9 Interfases Fortran 77
POSIX.19 Interfases Fortran 90
POSIX.20 Interfases Ada para las extensiones de tiempo real Estándares IEEE ya aprobados

3) Entorno de Sistemas Abiertos. Estos estándares incluyen una guía al entorno POSIX y los perfiles de entornos de aplicación. Un perfil de aplicación es una lista de los estándares POSIX, con especificación de las opciones y parámetros necesarios, que se requieren para un cierto entorno de aplicación. El objetivo
principal de los perfiles de aplicación es conseguir un conjunto pequeño de clases de implementaciones de sistemas operativos bien definidas y que sean apropiadas para entornos particulares de aplicaciones. La Tabla IV muestra la lista de estándares que están siendo desarrollados en este grupo.

Tabla IV. Lista de estándares POSIX de entornos de aplicaciones
POSIX.0 Guía al entorno POSIX de sistemas abiertos
POSIX.10 Perfil de entorno de aplicaciones de supercomputación
POSIX.11 Perfil de entorno de aplicaciones de procesado de transacciones
POSIX.13 Perfiles de entornos de aplicaciones de tiempo real
POSIX.14 Perfil de entorno de aplicaciones multiprocesadoras
POSIX.18 Perfil de entorno de aplicación de plataforma POSIX


***Donde se ocupa***


Sincronización de procesos:

El POSIX.4 define funciones para permitir la sincronización de procesos a través de semáforos contadores.

Memoria compartida:

Los procesos POSIX.1 tienen espacios de direccionamiento que son independientes entre sí. Sin embargo, muchas aplicaciones de tiempo real (y también muchas que no son de tiempo real) necesitan compartir grandes cantidades de datos de una manera eficiente.

Señales de tiempo real:

El mecanismo de señales definido en el POSIX.1 permite notificar eventos que ocurren en el sistema, pero no es completamente satisfactorio para aplicaciones de tiempo real. Las señales no se almacenan en colas y, por tanto, algunos eventos se pueden perder. La señales no están priorizadas, y esto implica tiempos de respuesta más largos para eventos urgentes.

Comunicación de procesos:

Se especifica un mecanismo sencillo de colas de mensajes para la comunicación entre procesos. Las colas de mensajes están identificadas por un nombre perteneciente a un espacio de nombres dependiente de la implementación.

Entrada/Salida Asincrona:

El POSIX.4 define funciones que permiten solapar el procesado de aplicaciones con las operaciones de entrada/salida iniciadas por la aplicación. Una operación de entrada/salida asíncrona es similar a las operaciones de entrada/salida normales, con la excepción de que una vez que la operación asíncrona ha sido iniciada por un proceso, este proceso no se suspende y puede continuar ejecutando instrucciones, en paralelo con la operación de entrada/salida

EXTENSIÓN DE THREADS:

El estándar POSIX.4a define interfases para soportar múltiples actividades concurrentes, denominadas threads, dentro de cada proceso POSIX. Los threads definidos en el POSIX.4a tienen un estado asociado más pequeño que el de un proceso. Todos los threads que pertenecen al mismo proceso comparten el mismo espacio de direccionamiento. Pueden ser implementados con tiempos de cambio de contexto y de creación y destrucción más bajos que los de los procesos. El POSIX.4a ha sido específicamente desarrollado para
abordar las necesidades de los sistemas multiprocesadores de memoria compartida.

***COMPATIBILIDAD***


TOTALMENTE POSIX-COMPATIBLES
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;

MAYORMENTE POSIX-COMPATIBLES
Los siguientes, aunque no oficialmente certificados como POSIX-compatibles, 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








**Ejemplo
Ejemplo de programa con hilos POSIX


#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
void *thread_function(void *arg) {
int i;
for ( i=0; i<20; i++ ) {
printf("Thread says hi!\n");
sleep(1);
}
return NULL;
}
int main(void) {
pthread_t mythread;
if ( pthread_create( &mythread, NULL, thread_function, NULL) ) {
printf("error creating thread.");
abort();
}
if ( pthread_join ( mythread, NULL ) ) {
printf("error joining thread.");
abort();
}


exit(0);


}

1 comentario:

  1. Quise citar tu investigación sin embargo, no trae referencias.
    Y aunado, no hay apellido tuyo.

    Sin embargo, excelente investigación, saludos.

    ResponderEliminar