Descargar

Introducción a POSIX (Portable Operating System Interface + UniX)

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Introducción POSIX son un conjunto de normas IEEE/ISO que definen la interfaz entre las aplicaciones y el SSOO POSIX: Portable Operating System Interface + UniX Su objetivo es conseguir la portabilidad de las aplicaciones a nivel de código fuente La aplicación puede desarrollarse en C, Ada, Fortran y otros lenguajes Las normas definen los servicios que cada sistema operativo particular puede incluirlos o no La denominación oficial es IEEE Std. 1003, e ISO/IEC-9945

    edu.red

    POSIX: estándares base (C) POSIX 1, 1a Unix básico sin tiempo real POSIX 1b, 1d, 1i, 1j Extensiones de tiempo real POSIX 1c Extensiones de threads POSIX 1e Seguridad POSIX 1f Network File System POSIX 1g Servicios de red (sockets) POSIX 1h Tolerancia a fallos POSIX 21 Comunicaciones de TR

    edu.red

    POSIX: interfaz otros lenguajes POSIX 5, 5a, 5b Interfaces con Ada POSIX 9 Interfaces con Fortran 77

    edu.red

    POSIX: perfiles de entornos POSIX 10 Supercomputadores POSIX 13 Tiempo real POSIX 14 Multiprocesadores POSIX 18 Estación de trabajo POSIX

    edu.red

    POSIX de tiempo real ¿para qué? Existe gran diversidad de sistemas de TR: Núcleos de TR (LynxOS, VxWorks, QNX, etc.) Ejecutivos Ada En sistemas grandes: VMS y otros Era necesario definir un estándar que asegurase la portabilidad de aplicaciones a nivel de código fuente entre diferentes entornos de tiempo real

    edu.red

    Perfiles de entornos de aplicación PSE50: sistema de tiempo real mínimo Sólo procesos ligeros, sin gestión de memoria ni archivos ni terminal PSE51: controlador de tiempo real Añade el terminal y sistema de archivos PSE52: sistema de tiempo real dedicado Soporta procesos pesados y gestión de memoria PSE53: sistema de tiempo real generalizado Sistema completo con todos los servicios

    edu.red

    Características de los perfiles Perfil Sistema de archivos Múltiples procesos Threads Sistema mínimo Sistema multipropósito Controlador Sistema dedicado NO NO SÍ SÍ SÍ SÍ NO NO SÍ SÍ SÍ SÍ

    edu.red

    POSIX: Unix básico POSIX 1 define los servicios ofrecidos por Unix: Gestión de procesos: Creación y destrucción Sincronización Temporización Gestión de archivos Creación y borrado de archivos y directorios Trabajo con archivos especiales Protección de la información Entrada-salida y control

    edu.red

    POSIX: Extensiones de TR Para obtener determinismo en el comportamiento Planificación Gestión de memoria Señales Relojes y temporizadores Para facilitar la concurrencia Sincronización Memoria compartida Colas de mensajes Entrada-salida síncrona y asíncrona

    edu.red

    POSIX: Extensiones de threads POSIX 1c incorpora funciones para trabajar con hilos. Incluye: Gestión de hilos Sincronización de hilos Planificación de hilos Creación y destrucción de hilos Añade reentrada a algunas funciones de POSIX1 POSIX 1c puede hacer uso de funciones incluidas en POSIX 1 y POSIX 1b

    edu.red

    Definiciones Programa Archivo ejecutable residente en un dispositivo de almacenamiento permanente Se ejecuta por medio de la llamada exec() Proceso Es un programa en ejecución Los procesos se crean con la llamada fork() Servicios del sistema operativo Invocados por medio de funciones POSIX no diferencia entre llamadas al sistema y procedimientos de biblioteca

    edu.red

    Estructura de un proceso en C Núcleo Proceso de usuario Funciones main() Rutina de inicio exec() Llamada al sistema exit() _exit()

    edu.red

    Ejemplo /************************************** * Programa que imprime todos los * * argumentos de línea de órdenes * **************************************/ int main (int argc, char *argv[]) { int i; for (i=0; i edu.red

    Características de un proceso Cada proceso se caracteriza por una estructura de datos conocida como tabla de control de tarea que contiene: Identificador de proceso o PID Identificador de proceso padre o PPID Identificador de usuario o UID Identificador de grupo o GID Puntero a la memoria asignada Puntero a los recursos … Cada proceso dispone de un espacio de direccionamiento virtual independiente

    edu.red

    Creación de procesos: fork() La llamada fork() crea una copia (hijo) del proceso que la invoca El hijo hereda del padre: Estado Semáforos Objetos de memoria Política de planificación, etc. El hijo no hereda: El PID Alarmas y temporizadores Operaciones de E/S asíncronas

    edu.red

    Interfaz de fork() Definida en: #include pid_t fork(void); Valores de retorno: Al padre: el PID del hijo Al hijo: cero En caso de error: devuelve -1 y la variable errno contiene el valor asociado al error

    Partes: 1, 2
    Página siguiente