Programación Concurrente



Documentos relacionados
Programación Concurrente

Administración UNIX: Introducción

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Tema II Introducción a X-Lib (R-1.0)

Tostadores y POSIX. 1. Introducción

Tecnología de software para sistemas de tiempo real

TEMA 8. SISTEMAS OPERATIVOS PARA TIEMPO REAL.

Capítulo 1 Introducción a la Computación

Sistemas Operativos Práctica 3

Unidad II: Administración de Procesos y del procesador

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Introducción. Sistemas Operativos. Pedro Chávez Lugo 23 de marzo de 2010

El Sistema Operativo Linux

Sistemas operativos: una visión aplicada. Capítulo 11 Estudio de casos: Linux

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

1. Definición de puerto 2. Sockets 3. Conceptos cliente/servidor 4. Definición de Stream 5. Concurrencia, multiprogramación y multitarea 6.

Unidad 1: Conceptos generales de Sistemas Operativos.

Gestión de procesos DEFINICIONES DE PROCESOS

Programación de Sistemas

El tema de esta presentación es los conceptos básicos relacionados con Sistemas Operativos.

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

Programación estructurada (Interfaces Windows y Unix)

Ingeniería de Software. Pruebas

Tema 4. Gestión de entrada/salida

Configuración del servicio de printers CUPS

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos. Curso 2016 Procesos

Mensajes. Interbloqueo

Tema 3.4: Arquitecturas Software para Autorización

Tema 1. Introducción a JAVA

LABORATORIO 2. La biblioteca a nivel de usuario semso (semáforos Sistemas Operativos) brinda las siguientes primitivas:

Sistemas Operativos. Curso 2013 Virtualización

Programación de Multitareas utilizando Hilos

Arquitectura de Aplicaciones

INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware

2. Sistema Operativo Windows

Sistemas Operativos Práctica 4

General Parallel File System


2) Tenemos un sistema informático con una sola CPU que está gestionada mediante una cola multinivel con realimentación.

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

Examen escrito de Programación 1

Unidad I. Introducción a la programación de Dispositivos Móviles

Procesos. Bibliografía. Threads y procesos. Definiciones

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Tema 2: Implementación del núcleo de un Sistema Operativo

El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

Software Libre / Código Abierto Programa de contenidos

Introducción a los Sistemas Operativos

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Contenidos. Sistemas operativos Tema 3: Estructura del sistema operativo. Componentes típicos de un SO. Gestión de procesos.

Concurrencia. Primitivas IPC con bloqueo

Conceptos Básicos de Software. Clase III

Preliminares. Tipos de variables y Expresiones

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

DCU Diagramas de casos de uso

picojava TM Características

Programador en Plataforma Java y XML

Master en Gestion de la Calidad

Bloque II. Elementos del lenguaje de programación Java

Redes de Nueva Generación Área de Ingeniería Telemática. Virtualización

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

Creacion de Script. Que es un Script?

Elementos requeridos para crearlos (ejemplo: el compilador)

Programación Orientada a Objetos. Java: Excepciones

Instrumentos virtuales LabVIEW

UNIVERSIDAD DE SALAMANCA

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

Manual del Usuario Inscripción de Proyectos al Fondo de Fomento Formulario On-line

Arquitecturas GPU v. 2013

Modelo de aplicaciones CUDA

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Autotools Report. Marcelo Zúñiga Lorenzetti September, 2007

Computación Tercer Año

Problema 1 (3 puntos)

Procesos. Planificación del Procesador.

Práctica de introducción a

SRS y Backups remotos Feb 2012

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Unidad 2: Gestión de Procesos

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Fundamentos de Sistemas Operativos

DIPLOMADO EN SEGURIDAD INFORMATICA

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC

7. Manejo de Archivos en C.

PDF created with pdffactory Pro trial version

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

! " " & '( ) ( (( * (+,-.!(/0"" ) 8-*9:!#;9"<!""#

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Planificación en Team Foundation Server 2010

ISCAN - MANUAL DE INSTALACIÓN

Tema 3. Buses. Arquitectura de computadores. Plan 96. Curso Jerarquía de buses

Transcripción:

Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación de Threads Tema 6. Sincronización Tema 7. Señales Tema 8. Temporizadores y Relojes de Tiempo de Ejecución Programación Concurrente oct.-13 1 1.1. Estándar POSIX 1.2. POSIX de tiempo real 1.3. Perfiles de entornos de aplicación 1.4. Generalidades sobre la interfaz POSIX Programación Concurrente oct.-13 2 Portable Operating System Interface Basado en el sistema operativo UNIX Estándar desarrollado conjuntamente por la Computer Society del IEEE y The Open Group también denominado The Single UNIX Specification la denominación oficial es IEEE Std. 1003, e ISO/IEC-9945 Accesible en Internet (sólo hace falta registrarse): http://www.unix.org/online.html También puede obtenerse información sobre las distintas funciones POSIX en las páginas de manual ( man pages ) de Linux Programación Concurrente oct.-13 3

Objetivos del POSIX This standard defines a standard operating system interface and environment, including a command interpreter (or "shell"), and common utility programs to support applications portability at the source code level (Introducción del standard POSIX) El estándar define: la interfaz del sistema operativo: conjunto de funciones, tipos y constantes (en lenguaje C) agrupadas en ficheros de cabeceras intérprete de comandos: redirección, pipes, etc. programas de utilidad: vi, c99, ls, more, etc. Pretende la portabilidad: de las aplicaciones a nivel de código fuente de los programadores Programación Concurrente oct.-13 4 Categorías de estándares POSIX Estándares Base: interfaz, shell y utilidades - POSIX.1 Perfiles o subconjuntos para diferentes entornos de aplicación - POSIX.13: Tiempo real Interfaces en diferentes lenguajes de programación ( bindings ) - POSIX.5: Bindings en Ada - POSIX.9: Bindings en Fortran 77 Programación Concurrente oct.-13 5 Evolución de los estándares POSIX POSIX.1 Basic UNIX 1990 POSIX.2 Shell&Utilities 1993 POSIX.5 Basic UNIX 1992 POSIX.1b Realtime 1993 POSIX.1c Threads 1995 POSIX.1d POSIX.1g Additional RT Networking 1999 1999 POSIX.1j Additional RT 1999 POSIX.5b Realtime 1996 POSIX.13 RT profiles 1998 POSIX.1q Tracing 2000 POSIX.5c Networking 1998 POSIX.1 Revision 2001 X/Open System Interfaces POSIX.1 Tech. Corr. 2003 POSIX.26 Device Ctrl. 2003 POSIX.13 Revision 2003 Programación Concurrente oct.-13 6

1.2 POSIX de tiempo real Motivación: 1.2 POSIX de tiempo real Gran diversidad de sistemas de tiempo real: - Kernels de tiempo real (VRTX, VxWorks, etc.) - Ejecutivos Ada - Para sistemas grandes: VMS, OS9, sistemas privados - UNIX de tiempo real Era necesario un estándar para conseguir la portabilidad Son necesarios subconjuntos de los servicios del OS: - sistemas empotrados pequeños - controladores industriales de tiempo real - sistemas empotrados grandes - sistemas convencionales grandes de tiempo real Programación Concurrente oct.-13 7 Grupo de trabajo de tiempo real 1.2 POSIX de tiempo real Objetivo: Desarrollar estándares que sean la mínima extensión sintáctica y semántica a los estándares POSIX para soportar la portabilidad de aplicaciones con requerimientos de tiempo real. Programación Concurrente oct.-13 8 Los perfiles definen un subconjunto de los servicios POSIX que es obligatorio para un determinado ámbito de aplicación. Se definen 4 perfiles: Sistema de Tiempo Real Mínimo sistema empotrado pequeño, sin MMU, sin disco, sin terminal modelo: el tostador Controlador de Tiempo Real controlador de propósito especial, sin MMU, pero con un disco con un sistema de ficheros simplificado modelo: robot industrial Programación Concurrente oct.-13 9

Perfiles de entornos de aplicación (cont.) Sistema de Tiempo Real Dedicado sistema empotrado grande sin disco, pero con MMU, quizás con un sistema de memoria secundaria en memoria flash el software es complejo y requiere protección de memoria y comunicaciones modelo: avión, célula de un sistema de telefonía móvil Sistema de Tiempo Real Multi-Propósito sistema de tiempo real grande, con todas las facilidades modelo: sistema de control de tráfico aéreo, sistema de telemetría para un fórmula 1 Programación Concurrente oct.-13 10 Principales servicios del perfil mínimo Señales Gestión de memoria Threads Perfil para sistemas empotrados pequeños Relojes y Temporizadores Semáforos Mutexes con herencia prio. Prioridades Fijas + SS I/O dispositivos Variables condicionales Relojes de tiempo de CPU Programación Concurrente oct.-13 11 Resumen de los perfiles Redes I/O Asíncrona Múltiples Procesos Multi-Propósito Shell & Utilidades Sistema de ficheros simple Mínimo Colas de Mensajes Trazas Dedicado Múltiples Usuarios Sistema de ficheros completo Servicios Básicos Controlador Otros Programación Concurrente oct.-13 12

Conjunto de funciones, tipos y constantes (en lenguaje C) constituyen la interfaz que el SO presenta a las aplicaciones Agrupadas en ficheros de cabeceras: <string.h>: operaciones con strings (estándar C) <time.h>: tiempo, relojes, temporizadores <pthread.h>: todo lo relacionado con los threads <signal.h>: gestión de señales <sched.h>: planificación... Incluye parte de la librería estándar C en ese caso el estándar POSIX se remite al estándar ISO C 1999 Programación Concurrente oct.-13 13 Identificadores POSIX Siguen dos convenios diferentes: identificadores heredados directamente de los sistemas UNIX originales o del lenguaje C nombres cortos (a menudo una palabra) más o menos crípticos - ej.: kill(), malloc(), time(), wctomb(), strcmp(),... identificadores introducidos durante el desarrollo del estándar funciones: servicio_acción() - ej.: timer_settime(), pthread_create() o también: servicio_objeto_acción() - ej.: pthread_condattr_init(), pthread_key_delete() tipos de datos: finalizan en _t. Ej.: pthread_t constantes: en mayúsculas y comenzando por el nombre del servicio. Ej.: TIMER_ABSTIME, PTHREAD_PRIO_INHERIT Programación Concurrente oct.-13 14 Códigos de error Las funciones POSIX informan de la ocurrencia de un error mediante un código numérico El estándar define un conjunto de constantes que identifican los diferentes errores que pueden producirse (<errno.h>) EACCES: permiso denegado EAGAIN: recurso no disponible, reintentar la operación EFAULT: dirección incorrecta EINVAL: argumento inválido... Programación Concurrente oct.-13 15

Detección de errores Existen dos formas de que una función comunique que se ha producido un error Las funciones antiguas (anteriores al estándar de threads) retornan el valor -1 cuando se produce un error - el código de error se puede obtener consultando la variable global errno Las funciones modernas retornan 0 cuando no ha habido error - y retornan el código numérico correspondiente al error en el caso de que lo haya habido Programación Concurrente oct.-13 16 Código de detección de errores Es fundamental comprobar que no se ha producido un error en cada llamada a una función POSIX de otra manera el error pasaría inicialmente inadvertido pudiendo producir un error posterior de muy difícil diagnosis El problema es que el chequeo de errores dificulta la comprensión del código: if (pthread_create(&th1, NULL, body, NULL)!= 0) { printf("error de creación del thread\n"); if (timer_create(clock_realtime, &event, &timer_id) == -1) { perror("error de creación del timer\n"); Programación Concurrente oct.-13 17 Código de detección de errores (cont.) Para mejorar la legibilidad del código utilizaremos las macros definidas en misc/error_checks.h (MaRTE OS) CHK: para funciones que retornan 0 o el código de error #define CHK(p) { int ret; \ if ((ret = p)) { \ printe ("Error:"#p":%s\n", strerror(ret)); \ exit (-1); \ \ CHKE: para funciones que retornan -1 en caso de error #define CHKE(p) { if ((p)==-1) { \ perror (#p); \ exit (-1); \ \ Además existen las macros CHK_INFO y CHKE_INFO iguales que las anteriores pero que sólo informan del error, sin finalizar la aplicación Programación Concurrente oct.-13 18

Código de detección de errores (cont.) Ejemplo del uso de las macros CHK y CHKE: if (pthread_create(&th1, NULL, body, NULL)!= 0) { printf("error de creación del thread\n"); if (timer_create(clock_realtime, &event, &timer_id) == -1) { perror("error de creación del timer\n"); usando las macros es mucho más sencillo y fácil de leer: CHK( pthread_create(&th1, NULL, body, NULL) ); CHKE( timer_create(clock_realtime, &event, &timer_id) ); Programación Concurrente oct.-13 19