Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. Sistemas Operativos. Tema 2: Introducción a la programación concurrente

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga. Sistemas Operativos. Tema 2: Introducción a la programación concurrente"

Transcripción

1 Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Sistemas Operativos Tema 2: Introducción a la programación concurrente Curso 2004/2005 E.T.I. Informática Gestión Profesor: Índice de contenidos (I) Introducción a la programación concurrente Programación concurrente Arquitecturas hardware Estilos de programación Programación concurrente en sistemas operativos Procesos y hebras Por qué procesos multihebra Ventajas que aportan las hebras Sistemas operativos multihebra Tipos de hebras Implementación de hebras Bibliotecas de hebras Programación con Procesos Implementación Funciones básicas Otras funciones Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 2

2 Índice de contenidos (II) Programación con Pthreads Funciones Ciclo de vida de una hebra Atributos Principios de programación concurrente Conceptos Exclusión mutua Sincronización mediante condiciones Semáforos Problemas clásicos de programación concurrente Fuentes de información Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 3 Programación concurrente Arquitecturas hardware Estilos de programación Introducción Programación concurrente en sistemas operativos Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 4

3 Un programa concurrente es Programación n concurrente Aquél que contiene uno o más procesos que trabajan de forma conjunta para realizar una determinada tarea Dentro del programa concurrente Cada proceso es un programa secuencial Diferencia entre un programa secuencial y uno concurrente Un programa secuencial tiene un único flujo de ejecución Un programa concurrente tiene múltiples flujos de control Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 5 Programación n concurrente Los procesos de un programa concurrente interactúan entre sí de dos formas: Comunicación Sincronización La comunicación se lleva a cabo de dos formas Compartiendo memoria Enviando información por medio de mensajes Hay dos tipos básicos de sincronización Exclusión mutua Sincronización mediante condiciones Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 6

4 Comunicación n mediante memoria compartida En este esquema Los procesos de un programa concurrente se comunican compartiendo un conjunto de variables que son visibles a todos ellos Estas variables son accedidas de la misma forma que cualquier otra variable Analogía: Los asistentes a una clase y el contenido de la pizarra /* Variable compartida */ bool impresoraocupada = false ; /* Proceso 1 */ if (!impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; /* Proceso 2 */ if (!impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 7 Comunicación n mediante paso de mensajes En este esquema Los procesos de un programa concurrente se comunican enviándose información mediante mensajes Es el mecanismo que se emplea cuando los procesos no comparten memoria Analogía: Comunicación entre personas mediante correo electrónico Los programas concurrentes basados en paso de mensajes Son más complejos, habitualmente, que los basados en memoria compartida Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 8

5 Sincronización n mediante exclusión mutua En un programa concurrente existen regiones o secciones críticas Son trozos de código que sólo los puede ejecutar un único proceso en un instante dado El problema de la exclusión mutua Es el problema de garantizar que las secciones críticas se ejecuten de forma mutuamente exclusiva /* Variable compartida */ bool impresoraocupada = false ; /* Proceso 1 */ if (!impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; /* Proceso 2 */ if (!impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 9 Sincronización n mediante condiciones La sincronización mediante condiciones Es el problema de retrasar la ejecución de un proceso hasta que se cumpla una determinada condición Habitualmente, La sincronización mediante condiciones se combina con la sincronización mediante exclusión mutua /* Variable compartida */ bool impresoraocupada = false ; /* Proceso 1 */ wait if (impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; /* Proceso 2 */ wait if (impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 10

6 Arquitecturas hardware Tres tipos básicos de arquitecturas Sistemas monoprocesador Sistemas multiprocesadores Sistemas distribuidos Memoria principal Cache de nivel 2 Cache de nivel 1 Procesador Arquitectura de un sistema monoprocesador Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 11 Los sistemas multiprocesadores Arquitecturas hardware Están compuestos por un conjunto de procesadores que acceden a los módulos de memoria por medio de una red de interconexión Esta red suele ser un bus o un conmutador de barras cruzadas (crossbar) Memoria Memoria Cache Procesador Red de interconexión Cache Procesador Arquitectura de un sistema multiprocesador Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 12

7 Los sistemas distribuidos Arquitecturas hardware Difieren de los multiprocesadores en que cada procesador tiene su propia memoria local Se suelen denominar redes cuando la red de interconexión es una red de área local (LAN) o de área extensa (WAN) Memoria Cache Procesador Red de interconexión Memoria Cache Procesador Arquitectura de un sistema distribuido Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 13 Estilos de programación Se pueden distinguir tres estilos de programación, que permiten desarrollar tres tipos de aplicaciones diferentes Programación concurrente Programación distribuida Programación paralela Estas disciplinas no son excluyentes Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 14

8 Programación concurrente Estilos de programación Es la disciplina que estudia la programación de procesos concurrentes Aunque se suele aplicar al contexto en el que los procesos se comunican mediante memoria compartida Ejemplos de aplicaciones: Sistemas de ventanas Sistemas operativos Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 15 Programación distribuida Estilos de programación Es la rama de la programación concurrente que se centra en el estudio de la programación sobre sistemas distribuidos Los procesos se comunican mediante paso de mensajes Ejemplos de aplicaciones: Sistemas de ficheros en red Servidores Web Bases de datos para reserva de billetes Es habitual que los componentes de un sistema distribuido sean a su vez programas concurrentes Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 16

9 Programación paralela Estilos de programación A veces se considera un sinónimo de programación concurrente Se utiliza el término computación paralela cuando se utiliza un computador paralelo con el fin de resolver un problema más rápidamente, resolver un problema mayor en un mismo tiempo, o resolver un problema de mayor tamaño Ejemplos de aplicaciones Computaciones científicas que modelan y simulan el clima, el movimiento de las mareas, etc. Procesamiento de imágenes Problemas de optimización combinatoria Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 17 Paradigmas La mayoría de las aplicaciones concurrentes utilizan cinco tipos de soluciones, o paradigmas Paralelismo iterativo Paralelismo recursivo Productores y consumidores Clientes y servidores Paralelismo entre iguales (peer parallelism) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 18

10 Paralelismo iterativo Paradigmas Aplicación habitual: computación científica paralela (ejemplo: producto de matrices) Paralelismo recursivo Aplicación habitual: ordenación, optimización combinatoria, juegos (ejemplo: ajedrez) Productores y consumidores Aplicación habitual: procesos que generan datos que han de usar otros procesos (ejemplo: tuberías en UNIX) Clientes y servidores Aplicación habitual: sistemas distribuidos (ejemplo: navegadores y servidores Web) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 19 Paralelismo entre iguales Paradigmas Aplicación habitual: programas distribuidos paralelos (ejemplo: producto de matrices distribuidos) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 20

11 Programación n concurrente en sistemas operativos La programación concurrente tiene su origen en los sistemas operativos Surge como solución a un problema: Maximizar el uso de la capacidad de procesamiento de los sistemas informáticos Evolución 1960 Procesamiento por lotes 1970 Multiprogramación o multitarea Reparto de tiempo (time slicing) Tiempo compartido (time sharing) 1990 Multiprocesamiento Procesamiento distribuido Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 21 Procesos y hebras Hasta mediados de los años 80, para los sistemas operativos los procesos son entidades que: Presentan una actividad dentro del sistema operativo (son las entidades activas) Su flujo de ejecución es secuencial Su ejecución la planifica el sistema operativo Se ejecutan en un espacio de direcciones Solicitan y usan los recursos del sistema operativo Proceso tradicional: Un flujo de ejecución secuencial Recursos Flujo de ejecución Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 22

12 Por qué procesos multihebra Inconvenientes de este modelo de proceso Son entidades costosas de crear y manipular Compartir recursos entre procesos es complejo y costoso Solución adoptada: Generalizar el concepto de proceso, de forma que a cada proceso se le pueda asociar más de una actividad de procesamiento Proceso actual: Varios flujos de ejecución concurrentes Recursos Flujos de ejecución Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 23 Separación de conceptos Por qué procesos multihebra Un proceso es un entorno de ejecución sobre el que se ejecutan una o varias hebras (threads) Una hebra es una entidad que presenta una actividad A un proceso se asocia Espacio de direcciones Variables globales Ficheros abiertos A una hebra se asocia Registro contador de programa Pila Estado (listo, ejecución, bloqueado) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 24

13 Por qué procesos multihebra A este tipo de procesos se le denomina multihebra (multithreaded process) En un proceso multihebra Todas las hebras comparten todos los recursos del proceso Las hebras de un proceso se comunican mediante memoria compartida Al contrario de lo que ocurre entre procesos distintos El sistema operativo no tiene que preocuparse de que las hebras de un proceso interfieran entre sí Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 25 Ventajas que aportan las hebras Los procesos multihebra aportan las siguientes ventajas: Solapamiento de operaciones de entrada/salida y computación dentro de un mismo proceso Multiprocesamiento Una hebra consume menos recursos y requiere un coste de manipulación menor que un proceso Existen aplicaciones concurrentes cuya estructura se amolda de forma natural a un esquema multihebra Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 26

14 Sistemas operativos multihebra La mayoría de los sistemas operativos actuales son multihebra Solaris Linux Windows NT/2000 MacOS X Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 27 Hay dos tipos de hebras Tipos de hebras Las hebras que se ejecutan en el espacio de usuario Las hebras que se ejecutan en el espacio del núcleo Espacio de usuario Espacio del núcleo Procesos Núcleo Hebras de usuario Hebras de núcleo Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 28

15 Implementación n de hebras Existen varias formas de hacer corresponder las hebras de usuario con las hebras de núcleo Muchas-a-Una Una-a-Una Muchas-a-Muchas Cada una estas formas da lugar, respectivamente, a un esquema de implementación diferente Implementación a nivel de usuario Implementación a nivel de núcleo Implementación híbrida Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 29 Implementación n a nivel de usuario Características Correspondencia Muchas-a-Una Todas las hebras de usuario de un proceso se vinculan a una única hebra del núcleo Espacio de usuario Espacio del núcleo Procesos Núcleo Hebras de usuario Hebras de núcleo Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 30

16 Ventajas Implementación n a nivel de usuario Gestión de hebras eficiente Esquema empleado en sistemas operativos no multihebra Inconvenientes Si una hebra se bloquea, se bloquea todo el proceso No permite multiprocesamiento Ejemplos La biblioteca de procesos de peso ligero (LWP o light weighted processes) del sistema operativo SunOS Los sistemas operativos actuales no admiten este esquema (ver implementaciones híbridas) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 31 Implementación n a nivel de núcleon Características Correspondencia Una-a-Una Cada hebra de usuario se vincula a una única hebra del núcleo Espacio de usuario Espacio del núcleo Procesos Núcleo Hebras de usuario Hebras de núcleo Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 32

17 Ventajas Implementación n a nivel de núcleon Permite obtener todos los beneficios de aportan las hebras Inconvenientes Gestión de hebras más costosa que en el caso de la implementación a nivel de usuario Número máximo de hebras teóricamente inferior al de una implementación a nivel de usuario Ejemplos de sistemas Windows NT/2000 Linux Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 33 Características Correspondencia Muchas-a-Muchas Implementación n híbridah Existe varias formas de vincular las hebras de usuario con las hebras del núcleo Espacio de usuario Espacio del núcleo Procesos Núcleo Hebras de usuario Hebras de núcleo Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 34

18 Ventajas Implementación n híbridah Combina las ventajas de la implementación a nivel de usuario (bajo coste de manipulación) con las de la implementación a nivel de núcleo (no limita las posibilidades que permiten las hebras Inconvenientes Modelo de programación complejo cuando la vinculación entre hebras de usuario y hebras de núcleo es responsabilidad del programador Ejemplo: Solaris En otros sistemas La vinculación es automática Ejemplo: Tru64 (antiguo Digital UNIX) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 35 Bibliotecas de hebras Los lenguajes más usados para programar sobre sistemas operativos (C/C++) no incorporan hebras Pero puede hacer uso de las hebras del sistema operativo a través de una biblioteca de funciones En la actualidad existen dos bibliotecas de hebras de uso mayoritario Hebras Win32, usadas en los sistemas operativos de 32 bits de Microsoft Hebras POSIX (Pthreads), usadas en sistemas UNIX Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 36

19 Bibliotecas de hebras Comparación entre hebras Win32 y Pthreads Windows NT/2000 fue diseñado desde el principio para que fuese multihebra En UNIX se ha producido una adaptación de procesos tradicionales a procesos multihebra Consecuencia En Windows NT/2000 las hebras están integradas de forma natural dentro del sistema En UNIX existen conflictos cuando se usan características que están pensadas para procesos tradicionales (ejemplos: bloqueo de ficheros, señales) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 37 Aspectos de Implementación Funciones básicas Otras funciones Procesos Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 38

20 Aspectos de implementación La estructura principal para la gestión de procesos es la tabla de procesos Contiene una entrada por cada proceso Cada entrada contiene, entre otra información El PID y el PPID del proceso El identificador de usuario real (UID) y efectivo y el identificador de grupo (GID) El estado del proceso Puntero a la tabla de páginas del proceso Información sobre las señales pendientes de ser enviadas al proceso, así como máscaras que indican qué señales son aceptadas y cuáles son ignoradas Parámetros de planificación Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 39 Aspectos de implementación Los procesos se crean a partir de programas que contienen código ejecutable Estructura del espacio de direcciones de un proceso: Pila (Stack) Montículo (Heap) Datos sin inicializar Datos inicializados de lectura/escritura Datos inicializados de sólo lectura Código Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 40

21 Funciones básicasb Operaciones básicas que se pueden realizar con procesos fork exec wait waitpid exit Llamada Crea un nuevo proceso Ejecuta un nuevo programa Espera que un proceso hijo acabe Espera que un determinado hijo proceso acabe Termina un proceso Descripción Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 41 pid_t fork (void) Si la llamada fork() tiene éxito Crear un proceso Devuelve: - El valor 1 en caso de error - El valor 0 al proceso hijo y PID del proceso hijo al proceso padre, en caso de éxito Se crea un nuevo proceso, denominado proceso hijo El proceso hijo es una copia del proceso padre Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 42

22 Ejemplo #include <unistd.h> main() { pid_t IdentificadorDeProceso ; printf( Soy el proceso %d \n, getpid()) ; printf( Voy a crear un proceso hijo\ ) ; IdentificadorDeProceso = fork() ; Crear un proceso if (IdentificadorDeProceso == -1) printf( Se ha producido un error al crear el hijo\n ) ; else if (IdentificadorDeProceso == 0) printf( Soy el nuevo proceso hijo (%d)\n, getpid()) ; else { printf( Sigo siendo el proceso padre. He creado ) ; printf( el proceso %d\n, IdentificadorDeProceso) ; } /* else */ } /* main */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 43 A considerar Crear un proceso El proceso hijo hereda del padre una copia de su código, datos, pila, descriptores de ficheros abiertos y tabla de señales El padre y el hijo se diferencian en sus PID y PPID Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 44

23 Ejecutar un nuevo programa int execl, execlp ( const char * Ruta const char * Argumento0... const char * ArgumentoN (char *)0 ) int execv, execvp ( const char * Ruta char *const ArrayDeArgumentos[] ) Devuelven: - el valor 1 en caso de error La familia de funciones exec() Reemplazan el código, datos y pila del proceso que las invoca por el programa ejecutable indicado por Ruta Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 45 Ejecutar un nuevo programa A considerar execl() es idéntica a execlp(), y execv() es idéntica a execvp(), salvo que execl() y execv() requieren el camino absoluto o relativo para encontrar el fichero ejecutable, mientras que execlp() y execvp() usan la variable de entorno $PATH para encontrar ruta Si el fichero ejecutable no se encuentra, se devuelve -1. En caso contrario, el proceso que realiza la llamada reemplaza su código, datos y pila por los del fichero ejecutable y comienza a ejecutar su nuevo código Si la ejecución se realiza correctamente, no se devuelve ningún valor Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 46

24 Ejecutar un nuevo programa A considerar execl() y execlp() invocan el fichero ejecutable usando como argumentos las cadenas de caracteres apuntadas por argumento0, argumento1,..., argn. argumento0 debe ser el nombre del fichero ejecutable, y la lista de argumentos debe de terminar con la cadena vacía NULL ((char *)0) execv() y execvp() invocan el fichero ejecutable usando como argumentos un array de cadenas de caracteres apuntado por arraydeargumentos. argv[n+1] es NULL y arraydeargumentos[0] contiene el nombre del fichero ejecutable Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 47 Esperar a que un hijo termine pid_t wait ( int * EstadoDelProcesoHijo ) Devuelve: - el valor (pid_t) 1 en caso de error - el PID del proceso hijo, en caso de éxito Esta llamada Provoca la suspensión del proceso hasta que uno de sus hijos termine En la dirección indicada por el argumento Se devuelve el estado de terminación del proceso hijo, que lo envía mediante la llamada exit() Si la dirección es NULL, no se devuelve nada Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 48

25 Esperar a que un determinado hijo termine pid_t waitpid ( pid_t * IdentificadorDelProcesoHijo int * EstadoDelProcesoHijo int Opciones ) Devuelve: - el valor (pid_t) 1 en caso de error - el PID del proceso hijo, en caso de éxito Esta llamada Permite que un proceso espere a que acabe un proceso hijo cuyo PID se indica en el primer argumento El estado del proceso hijo se devuelve en el segundo argumento Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 49 Esperar a que un determinado hijo termine A considerar Si el valor del PID del proceso hijo es 1 y el tercer argumento es 0, waitpid() se comporta igual que wait() El tercer argumento puede tomar varios valores Por ejemplo, el valor WNOHANG hace que la llamada waitpid() no se bloquee si el hijo no ha terminado todavía Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 50

26 void exit ( int EstadoDelProcesoHijo ) Devuelve: - ningún resultado La invocación de esta llamada Terminar un proceso Provoca el cierre de todos los descriptores de ficheros, devuelve al sistema los recursos ocupados por el código, datos y pila, y termina el proceso El estado del proceso Es enviado al proceso padre, que lo podrá obtener mediante la llamada wait() o waitpid() Sólo los 8 bits menos significativos son útiles para el proceso padre Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 51 Terminar un proceso A considerar Si un proceso realiza la llamada exit() permanece en estado zombie hasta que su padre ejecuta la llamada wait() o waitpid() Todos aquellos procesos hijos que sean huérfanos son adoptados por el proceso init (el proceso cuyo PID es 1), que siempre acepta los códigos de terminación de sus proceso hijos Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 52

27 Otras funciones de gestión n de procesos Llamadas para obtener identificadores Llamada getpid() getppid() getuid() getgid() geteuid() getegid() getpgrp() getsid() El PID del proceso Devuelve El PID del proceso padre El identificador de usuario real El identificador de grupo real El identificador de usuario efectivo El identificador de grupo efectivo El identificador del grupo del proceso El identificador de la sesión del proceso Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 53 Obtener el valor de una variable de entorno char * getenv ( const char * NombreDeVariableDeEntorno ) Devuelve: - el valor 1 en caso de error - un puntero al valor de la variable de entorno A considerar El valor de las variables de entorno también se puede obtener a partir del tercer argumento de la función main() Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 54

28 Funciones Ciclo de vida de una hebra Atributos Programación n con Pthreads Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 55 Programación n con Pthreads.. Funciones Las funciones de la biblioteca Pthreads se dividen en dos grupos Funciones para gestión de hebras Funciones para sincronización de hebras Funciones básicas de gestión de hebras Creación pthread_create() Terminación pthread_exit() Espera de terminación pthread_join() Objetos de sincronización Mutexes Variables de condición Semáforos Cerrojos de lectura/escritura (rwlocks) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 56

29 Ciclo de vida de una hebra En su forma más básica, la utilización de una hebra requiere los siguientes pasos Incluir el fichero de cabecera pthread.h #include <pthread.h> Declarar un descriptor pthread_t idhebra ; Crear la hebra pthread_create(&idhebra, NULL, funcion, argumentos) ; Terminar la ejecución de la hebra pthread_exit(valor) Esperar que la hebra termine pthread_join(idhebra, NULL) Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 57 Ejemplo: programa simple.c Ciclo de vida de una hebra /* /* Programa simple.c: ejemplo de ciclo de vida de una hebra */ #include <pthread.h> #include <stdio.h> void * codigohebra(void *parametros) { printf("soy la hebra\n") ; } /* codigohebra */ int main(int argc, char ** argv) { pthread_t idhebra ; int resultado ; resultado = pthread_create(&idhebra, NULL, codigohebra, NULL) ; if (resultado!= 0) { /* 0 indica exito */ printf("main: error al crear la hebra\n") ; return -1 ; } /* if */ printf("soy la hebra principal\n") ; pthread_join(idhebra, NULL) ; printf("fin de la hebra principal\n") ; } /* main */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 58

30 Ejemplo: programa simple.c Compilación del programa Ciclo de vida de una hebra % gcc simple.c -o simple D_REENTRANT lpthread Ejecución Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 59 Atributos de una hebra Una hebra POSIX puede tener atributos Cuando se crea una hebra, por defecto sus atributos tienen asignados un valor inicial Los atributos afectan, entre otros, a: Tamaño de la pila pthread_attr_setstacksize() Dirección de la pila pthread_attr_setstackaddr() Ámbito pthread_attr_setscope() Planificación pthread_attr_setschedpolicy() Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 60

31 Ejemplo de uso de atributos Atributos de una hebra En Solaris, cuando una hebra se crea, por defecto es una hebra de usuario. Esto es así porque el atributo que afecta por defecto al ámbito de planificación de una hebra es el proceso Para crear una hebra de núcleo, hay que crear la hebra con ámbito de sistema #include <pthread.h>... pthread_attr_t atributos ; // atributos de la hebra pthread_attr_init(&atributos) ; // inicializacion // Se establece el atributo de ambito pthread_attr_setscope(&atributos, PTHREAD_SCOPE_SYSTEM) ; resultado = pthread_create(&idhebra, &atributos, codigohebra, NULL) ;... Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 61 Principios de programación n concurrente Definición: estado de un programa El estado de un programa concurrente viene dado por el valor de las variables del programa en un instante concreto de tiempo Todo programa comienza en un estado inicial Cada proceso del programa se ejecuta de forma independiente Definición: acción atómica Los procesos ejecutan secuencias de instrucciones Cada instrucción se compone de secuencias de una o varias acciones atómicas Son acciones que, de forma indivisible, examinan o alteran el estado del programa Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 62

32 Principios de programación n concurrente Definición: intercalación La ejecución de un programa concurrente da lugar a la ejecución intercalada (interleaving) de las secuencias de acciones atómicas ejecutadas por cada proceso Definición: historia Una ejecución concreta de un programa concurrente da lugar a una historia, que es una secuencia de acciones atómicas S 0 S 1... S n Una ejecución paralela puede modelarse como una historia secuencial, porque el efecto de ejecutar acciones atómicas en paralelo es equivalente a ejecutarlas en algún orden secuencial Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 63 Principios de programación n concurrente Definición: propiedad Cada ejecución de un programa concurrente produce una historia El número de historias posibles para un programa es muy elevado El motivo es que existen muchas formas de intercalar las acciones atómicas de un programa, aunque se parta siempre del mismo estado inicial Una propiedad es un atributo del programa que se cumple en cualquier posible historia del mismo Existen dos tipos de propiedades: de seguridad y de viveza Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 64

33 Principios de programación concurrente Definición: propiedad de seguridad Una propiedad de seguridad (safety property) es aquella que garantiza que el programa nunca entra en un estado no válido Un estado no es válido cuando algunas variables de estado tienen un valor incorrecto Ejemplos de propiedades: exclusión mutua, ausencia de interbloqueo (deadlock) Definición: propiedad de viveza Una propiedad de viveza (liveness property) es aquella que garantiza que el programa entrará eventualmente en un estado válido Ejemplo de propiedades: terminación de un programa, entrada en una sección crítica Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 65 El problema de la exclusión n mutua Características del problema Existe un conjunto de procesos que repetidamente intentan ejecutar una sección crítica y después una sección no crítica La sección crítica ha de ir precedida de un protocolo de entrada y seguida por un protocolo de salida /* La estructura de este código es la misma para */ /* todos los procesos del programa concurrente */ while (true) { /* protocolo de entrada */ /* sección crítica */ /* protocolo de salida */ /* sección no crítica */ } /* while */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 66

34 El problema de la exclusión n mutua Para tener una solución satisfactoria al problema, los protocolos de entrada y de salida deben cumplir las siguientes propiedades Exclusión mutua: Sólo un proceso como máximo puede estar a la vez en su sección crítica Ausencia de interbloqueo (livelock): Si dos o más procesos quieren entrar a la vez en sus secciones críticas, alguno lo conseguirá Ausencia de retrasos innecesarios: En el caso de que únicamente un proceso quiera entrar en la sección crítica Entrada eventual: Si un proceso intenta entrar en su sección crítica, eventualmente lo conseguirá Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 67 Exclusión n mutua con Pthreads Para delimitar el acceso a secciones críticas, Pthreads proporciona un objeto de sincronización llamado mutex /* Ejemplo de sección crítica (SC) usando mutexes de */ /* la biblioteca Pthreads */ #include <pthread.h> bool impresoraocupada = false ;... pthread_mutex_t mutex ; pthread_mutex_init(&mutex, NULL) ;... pthread_mutex_lock(&mutex) ; /* entrada en la SC */ /* seccion crítica */ if (!impresoraocupada) impresoraocupada = true ; pthread_mutex_unlock(&mutex) ; /* salida de la SC */ /* sección no crítica */ impresoraocupada = false ; Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 68

35 Sincronización n mediante condiciones La sincronización de procesos mediante exclusión mutua permite el acceso a secciones críticas de código Sin embargo, este mecanismo es insuficiente para resolver otro problema de sincronización, como es el bloqueo de un proceso a la espera de que se cumpla una determinada condición Ejemplo tipo: El problema de los productores/consumidores, que se comunican a través de un buffer circular Un productor no puede insertar elementos si el buffer está lleno El consumidor no puede extraer elementos si el buffer está vacío Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 69 Sincronización n mediante condiciones Contexto del problema Un proceso dentro de una sección crítica comprueba si una condición se cumple Si se cumple, el proceso continua su ejecución dentro de la sección crítica Si no se cumple, el proceso debe esperar hasta que la condición se cumpla, pero para ello debe abandonar temporalmente la sección crítica /* Variable compartida */ bool impresoraocupada = false ; /* Proceso 1 */ wait if (impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; /* Proceso 2 */ wait if (impresoraocupada) impresoraocupada = true ; // imprimir impresoraocupada = false ; Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 70

36 Variables de condición n en Pthreads El problema de la sincronización mediante condiciones se resuelve en Pthreads mediante el uso de variables de condición Una variable de condición es un objeto de sincronización sobre el que se definen dos operaciones básicas pthread_cond_wait(&cond, &mutex) pthread_cond_signal(&cond) La operación de espera provoca la suspensión de la hebra y la liberación del mutex La operación de señalización reanuda la ejecución de la hebra previamente suspendida Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 71 Variables de condición n en Pthreads /* Ejemplo de utilización de variables de condición */ /* con Pthreads */ #include <pthread.h> bool impresoraocupada = false ;... pthread_mutex_t mutex ; pthread_mutex_init(&mutex, NULL) ;... pthread_cond_t sepuedeimprimir ; Pthread_cond_init(&sePuedeImprimir) ;... pthread_mutex_lock(&mutex) ; /* entrada en la SC */ /* seccion crítica */ while (!impresoraocupada) pthread_cond_wait(&sepuedeimprimir, &mutex) ; impresoraocupada = true ; pthread_mutex_unlock(&mutex) ; /* salida de la SC */... /* sección no crítica */... pthread_mutex_lock(&mutex) ; /* entrada en la SC */ impresoraocupada = false ; pthread_cond_signal(&sepuedeimprimir) ; pthread_mutex_unlock(&mutex) ; /* salida de la SC */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 72

37 Semáforos Un semáforo es un objeto con un valor entero, al que se puede asignar un valor inicial no negativo, y al que solo se puede acceder utilizando dos operaciones atómicas: Las definiciones de las operaciones son: wait (s) { } s = s-1; if (s<0) Bloquear wait o P y signal o V signal(s) { } s = s + 1; if (s <= 0) Desbloquear Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 73 Exclusión mutua con semáforos semáforo s =1;... wait(s); /* sección crítica */ signal(s); /* sección no crítica */ Ejercicio: Valor de s? Comparación entre mutex y semáforo Semáforos Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 74

38 Problemas clásicos de programación concurrente Existen varios problemas que, ya sea por ser instructivos o por su utilidad en la práctica, se han convertido en problemas clásicos de programación concurrente Entre estos problemas están: Exclusión mutua El problema de los filósofos Lectores/Escritores Productores/consumidores Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 75 Los filósofos: piensan y comen alternativamente Para comer necesitan 2 tenedores Sólo se puede coger 1 tenedor a la vez Filósofos comensales Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 76

39 Filósofos comensales Primera aproximación con semáforos semáforo tenedor[5] = {1}... void filosofo (int i) { } pensar(); wait(tenedor[i]); wait(tenedor[(i+1) mod 5] ); comer(); signal(tenedor[(i+1) mod 5] ); signal(tenedor[i]); INTERBLOQUEO Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 77 Solución? Filósofos comensales Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 78

40 Productores/consumidores Definiciones Sea un buffer circular con una capacidad de MAX_BUF elementos Un productor es un proceso o hebra que quiere insertar elementos en el buffer Un consumidor es un proceso o hebra que quiere extraer elementos del buffer Enunciado: dado un conjunto de productores y de consumidores que se comunican a través de un buffer común, se deben cumplir dos condiciones Un productor se ha de bloquear si intenta insertar un elemento cuando el buffer está lleno Un consumidor se ha de bloquear si intenta extraer un elemento cuando el buffer está vacío Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 79 Productores/consumidores Productor/consumidor con semáforos PRODUCTOR while (cierto) { producir(); wait(huecos); wait(s); añadir(); signal(s); signal(datos); } semáforo s = 1; semáforo datos = 0; semáforo huecos = MAX_BUF CONSUMIDOR while(cierto) { wait(datos); wait(s); coger(); signal(s); signal(huecos); consumir(); } Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 80

41 Requisitos Implementación n con Pthreads Un buffer será una instancia de un tipo abstracto de datos mt_buffer_t. Los elementos del buffer serán números enteros Las operaciones del buffer serán seguras desde el punto de vista de su utilización en programas multihebras (thread safe) La especificación las operaciones es la siguiente:... /* funciones para crear y destruir un buffer */ int mt_buffer_init(mt_buffer_t *) ; int mt_buffer_destroy(mt_buffer_t *) ; /* funciones para acceder al buffer */ int mt_buffer_insertar(mt_buffer_t *, int) ; int mt_buffer_extraer (mt_buffer_t *, int *) ; int mt_buffer_vacio(mt_buffer_t *, bool *) ; int mt_buffer_lleno(mt_buffer_t *, bool *) ;... Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 81 Productores/consumidores Implementación del tipo mt_buffer_t... typedef struct { int buffer[max_buf] ; int elemento ; /* Primer elemento del buffer */ int hueco ; /* Primer hueco del buffer */ int num_elementos ; /* Numero de elementos en el buffer */ pthread_mutex_t mutex ; pthread_cond_t esta_vacio ; pthread_cond_t esta_lleno ; } mt_buffer_t ;... Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 82

42 Productores/consumidores Implementación de mt_buffer_extraer int mt_buffer_extraer (mt_buffer_t * buf, int * elemento) { int error ; /* Variable usada en el control de errores */ /* * Paso 1: se bloquea el mutex */ error = pthread_mutex_lock(&(buf->mutex)) ; if (error!= 0) { /* Error al bloquear el mutex */ return error ; } /* if */ /* * Paso 2: se espera hasta que haya algun elemento en el buffer */ while (buf->num_elementos == 0) { error = pthread_cond_wait(&(buf->esta_vacio), &(buf->mutex)) ; if (error!= 0) { /* Error al espera en la variable de condicion esta_vacio */ return error ; } /* if */ } /* while */ /* > sigue */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 83 Productores/consumidores /* < Viene de atrás */ /* * Paso 3: se extrae el elemento */ *elemento = buf->buffer[buf->elemento] ; buf->elemento = (buf->elemento + 1) % MAX_BUF ; buf->num_elementos -- ; /* * Paso 4: se comprueba si el buffer estaba lleno, y se despierta * a un hipotetico productor que estuviese bloqueado en * esta_lleno */ if (buf->num_elementos == (MAX_BUF - 1)) pthread_cond_signal(&(buf->esta_lleno)) ; /* * Paso 5: se libera el mutex */ error = pthread_mutex_unlock(&(buf->mutex)) ; if (error!= 0) { /* Error al desbloquear el mutex */ return error ; } /* if */ return 0 ; } /* mt_buffer_extraer */ Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 84

43 Productores/consumidores Ficheros: mt_buffer.h contiene la especificación completa del tipo mt_buffer.c contiene la implementación prodcons.c contiene un ejemplo de uso de un buffer mt_buffer_t por parte de un productor y de un consumidor linux.mak y solaris.mak son ficheros para compilar los programas en Linux y Solaris, respectivamente Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 85 Bibliografía Direcciones en la Web Fuentes de información Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 86

44 Bibliografía UNIX Programación Práctica. Guía para la concurrencia, la comunicación y los Multihilos Kay A. Robbins, Steven Robbins Prentice Hall, 1997 Foundations of Multithreaded, Parallel and Distributed Programming Gregory R. Andrews Addison-Wesley, 2000 Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 87 Direcciones en la Web Referencia sobre Pthreads, tomada de la Web del OpenGroup Grupo de noticias de programación multihebra news://comp.programming.threads Páginas que contienen enlaces relacionados con Pthreads Departamento de Lenguajes y Ciencias de la Computación. Universidad de Málaga 88

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una

Más detalles

Funciones POSIX (I): Introducción

Funciones POSIX (I): Introducción Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria

Más detalles

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX Concurrencia en UNIX / LINUX Introducción: Procesos e Hilos POSIX El estándar POSIX POSIX: Interfaz de sistemas operativos portables. Basado en UNIX A pesar de que UNIX es ya de por sí estándar, había

Más detalles

Sincronización de Threads

Sincronización de Threads Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)

Más detalles

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Hilos Secciones Stallings:

Hilos Secciones Stallings: Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los

Más detalles

Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS

Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS THREADS 1 Introducción Los procesadores actuales permiten realizar muchas tareas en simultáneo En los sistemas la ejecución de las tareas puede intercalarse en un sólo procesador, y en casos de multi-procesadores,

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles

Tema 4: Gestión de Procesos

Tema 4: Gestión de Procesos Tema 4: Gestión de Procesos SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo

Más detalles

Procesos Definición y Estados

Procesos Definición y Estados Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Sistemas Operativos. Procesos

Sistemas Operativos. Procesos Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso

Más detalles

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional (PCB) adicional (PCB) Preparado Preparado

Más detalles

Hilos (threads) Realizado por M. Curiel

Hilos (threads) Realizado por M. Curiel Hilos (threads) Realizado por M. Curiel Definiciones Un proceso es una entidad que posee 2 características importantes: - Recursos: un espacio de direcciones (programas, datos, pila y un PCB), archivos,

Más detalles

Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink

Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)

Más detalles

Acceso coordinado a recursos compartidos

Acceso coordinado a recursos compartidos Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo... 1 Prólogo... xv 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS... 1 1.1. Conceptos generales sobre sistemas operativos... 2 1.1.1. Funciones del sistema operativo... 2 1.1.2. Componentes del sistema operativo...

Más detalles

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux Hilos Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux 1 Objetivos Introducir la noción de hilo una unidad fundamental de la utilización

Más detalles

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos Hilos Módulo 4 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos

Más detalles

Sistemas Complejos en Máquinas Paralelas

Sistemas Complejos en Máquinas Paralelas Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric

Más detalles

Tema 1: Programación Multiproceso. Curso

Tema 1: Programación Multiproceso. Curso Tema 1: Programación Multiproceso. Curso 2012-2013 1 Patricia Hurtado Sayas Índice de contenidos: 1. Elementos funcionales de un SI. Repaso. 2. Concepto de Proceso o Tarea. 1. PCB, Bloque de Control de

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles

Concurrencia de Procesos

Concurrencia de Procesos Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)

Más detalles

Estados de un proceso

Estados de un proceso Semáforos Estados de un proceso Inactivo Listo Ejecutando Completo Escribimos p.state := ready p. state := running Bloqueado Para indicar que un proceso cambia de estado Semáforo Es un tipo de dato abstracto

Más detalles

T5-multithreading. Indice

T5-multithreading. Indice T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2

Más detalles

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución

Más detalles

SISTEMAS OPERATIVOS:

SISTEMAS OPERATIVOS: SISTEMAS OPERATIVOS: Lección 6: Procesos concurrentes y problemas en la comunicación y la sincronización Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García

Más detalles

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema

Más detalles

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA Ingeniería en Informática Beneficios de la programación Especificación de ejecución Características de los sistemas s Verificación de programas s 2 Bibliografía Programción

Más detalles

Concurrencia Condiciones de Carrera. Guillermo Román Díez

Concurrencia Condiciones de Carrera. Guillermo Román Díez Concurrencia Condiciones de Carrera Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Condiciones de Carrera 1/20 Condiciones de carrera Condición

Más detalles

Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativos Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso

Más detalles

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Hilos Módulo 4 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Chapter 4: Threads Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de

Más detalles

Tema 2. Administración de procesos

Tema 2. Administración de procesos Sistemas Operativos Tema 2. Administración de procesos Objetivo: El alumno identificará los tipos de procesos y sus estados. Describirá las diferentes técnicas de comunicación y sincronización de procesos

Más detalles

Programación concurrente

Programación concurrente 23 de Marzo de 2017 Condiciones generales Docente: Hernán Melgrati (hmelgra@...) Horario: Teóricas: Jueves de 14 a 17 Prácticas: Martes de 14 a 17 Evaluaciones: Un parcial (mediados de mayo) Un trabajo

Más detalles

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Threads. Hilos - Lightweight process - Procesos ligeros

Threads. Hilos - Lightweight process - Procesos ligeros Threads Hilos - Lightweight process - Procesos ligeros 1 Temario Concepto y Beneficios Estructuras de implementación: Servidor- Trabajador, Equipo, Pipeline Reconocimiento: En el espacio del usuario /

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Unidad 2: Gestión de Procesos

Unidad 2: Gestión de Procesos Unidad 2: Gestión de Procesos Tema 6, Concurrencia: Exclusión mutua y sincronización. 6.1 Principios generales de concurrencia. 6.2 EM: Soluciones software (Algoritmos de Dekker y Peterson). 6.3 EM: Soluciones

Más detalles

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES Gerardo Ares, Pablo Ezzatti Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Conceptos

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

Programación Concurrente y Paralela. Unidad 1 Introducción

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Concurrencia y paralelismo

Concurrencia y paralelismo Introducción a los Sistemas Operativos Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales.

Más detalles

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010

Fecha de elaboración: Agosto de 2004 Fecha de última actualización: Julio de 2010 PROGRAMA DE ESTUDIO Programa Educativo: Área de Formación : Licenciatura en ciencias computacionales Integral profesional Programa elaborado por: Programación Concurrente Horas teóricas: 1 Horas prácticas:

Más detalles

ESCUELA DE INGENIERIA Informática Y Sistemas

ESCUELA DE INGENIERIA Informática Y Sistemas ESCUELA DE INGENIERIA Informática Y Sistemas ASIGNATURA SISTEMAS OPERATIVOS CODIGO ST0257 SEMESTRE 2013-2 INTENSIDAD HORARIA 64 horas semestral CARACTERÍSTICAS Suficientable CRÉDITOS 4 1. JUSTIFICACIÓN

Más detalles

Plataformas de Tiempo Real

Plataformas de Tiempo Real Master en Computación Plataformas de Tiempo Real POSIX Avanzado y Extensiones Tema 1. Ficheros y entrada/salida Tema 2. Gestión de Interrupciones en MaRTE OS Tema 3. Monitorización y control avanzado del

Más detalles

Taller de Programación Paralela

Taller de Programación Paralela Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 26, 2007 Concurrencia 2 Concurrencia y sincronización.............................................................

Más detalles

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos SISTEMAS OPERATIVOS: PROCESOS Hilos y Procesos ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza que

Más detalles

Un ejemplo: UNIX PROCESOS UNIX

Un ejemplo: UNIX PROCESOS UNIX PROCESOS UNIX Un ejemplo: UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación de procesos

Más detalles

Comunicación y sincronización

Comunicación y sincronización Comunicación y sincronización Son conceptos relacionados con la interacción entre los procesos La comunicación se refiere al paso de información de un proceso a otro La sincronización corresponde al cumplimiento

Más detalles

SISTEMAS OPERATIVOS:

SISTEMAS OPERATIVOS: SISTEMAS OPERATIVOS: Lección 7: Hilos y mecanismos de comunicación y sincronización Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez

Más detalles

1. Interfaz de llamadas a la librería de fluxes

1. Interfaz de llamadas a la librería de fluxes 1. Interfaz de llamadas a la librería de fluxes Se presenta a continuación un interfaz de threads de usuario construido sobre los PThreads de OSF/1 (sistema operativo de alabi/alaba). El motivo de no utilizar

Más detalles

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

de Gran Canaria Centro de Tecnología Médica  Programación Concurrente Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales

Más detalles

1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8.

1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8. 1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8. Código Proceso Manejados por el sistema operativo Memoria independiente

Más detalles

PROGRAMACIÓN CONCURRENTE

PROGRAMACIÓN CONCURRENTE PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su

Más detalles

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Sistemas Computacionales Sistemas Operativos Docente: M.G.A.

Más detalles

Unidad 1: Gestión de Procesos

Unidad 1: Gestión de Procesos Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de

Más detalles

Sistemas Operativos I Manual de prácticas

Sistemas Operativos I Manual de prácticas Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...

Más detalles

Sincronización de Hilos POSIX

Sincronización de Hilos POSIX Sincronización de Hilos POSIX Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Problemática Ejemplo: el problema del productor/consumidor (o del buffer acotado ) Existen

Más detalles

Introducción a Sistemas Operativos: Concurrencia

Introducción a Sistemas Operativos: Concurrencia Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso

Más detalles

Asignaturas antecedentes y subsecuentes

Asignaturas antecedentes y subsecuentes PROGRAMA DE ESTUDIOS Programación Concurrente Área a la que pertenece: Área de Formación Integral Profesional Horas teóricas: 3 Horas prácticas: 2 Créditos: 8 Clave: F0177 Asignaturas antecedentes y subsecuentes

Más detalles

PROCESOS. Sistemas Operativos

PROCESOS. Sistemas Operativos PROCESOS Un proceso es un programa que se encuentra en ejecución. Un proceso no sólo es una copia del programa, sino que el núcleo le añade: un segmento de texto, un segmento de datos y un segmento de

Más detalles

SISTEMAS EN TIEMPO REAL

SISTEMAS EN TIEMPO REAL SISTEMAS EN TIEMPO REAL Año académico: 2006/07 Centro: Escuela Politécnica Superior Estudios: Ingeniero Técnico en Informática de Sistemas Asignatura: Sistemas en Tiempo real Ciclo: 1º Curso: 3º Cuatrimestre:

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

Threads, SMP y Microkernels. Proceso

Threads, SMP y Microkernels. Proceso Threads, SMP y Microkernels Proceso Propiedad de los recursos a un proceso se le asigna un espacio de dirección virtual para guardar su imagen Calendarización/ejecución sigue una ruta de ejecución la cual

Más detalles

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar

Más detalles

Sistemas Operativos Primer Recuperatorio Parcial 1

Sistemas Operativos Primer Recuperatorio Parcial 1 1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos hijos al mismo nivel y le asigna a cada uno una tarea determinada, cada proceso

Más detalles

Sistemas Operativos I Manual de prácticas

Sistemas Operativos I Manual de prácticas Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 4: Programación con hilos OBJETIVOS DE LA PRÁCTICA...2 ANTES DE EMPEZAR......2 PARTE 1: HOLA MUNDO CONCURRENTE...3

Más detalles

6. Enumere tres ventajas de los ULT frente a los KLT.

6. Enumere tres ventajas de los ULT frente a los KLT. 1 Tarea 3 Hilos 1. Cuales bloques de control de proceso deberían pertenecer a un bloque de control de hilo y cuáles a un bloque de control de proceso en un sistema multihilo? Para modelos monohilo deben

Más detalles

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro Es una instancia de un programa en ejecución (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto

Más detalles

Ejercicios sobre tuberías

Ejercicios sobre tuberías Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son

Más detalles

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

Tema 4: Padre e hijo

Tema 4: Padre e hijo Tema 4: Padre e hijo Enrique Soriano Laboratorio de Sistemas, Grupo de Sistemas y Comunicaciones, URJC 11 de marzo de 2010 (cc) 2010 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados. Este

Más detalles

Convivencia Gestión de Procesos

Convivencia Gestión de Procesos Convivencia Gestión de Procesos Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Índice: Procesos Introducción a los procesos Estados de los procesos Listas de procesos El planificador de procesos

Más detalles

Capítulo 2 Introducción a los sistemas operativos

Capítulo 2 Introducción a los sistemas operativos Sistemas operativos: una visión aplicada Capítulo 2 Introducción a los sistemas operativos Contenido Qué es un sistema operativo? Arranque del computador Componentes y estructura de un sistema operativo

Más detalles

Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9

Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9 Threads en Linux Definición de thread Es un mecanismo por el cual un programa puede hacer mas de una cosa al mismo tiempo. Como los procesos, los threads parecen correr simultáneamente; pero hay que tener

Más detalles

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 /

Más detalles

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali SISTEMAS OPERATIVOS I Clave: 4595 HC: 3 HL: 2 HT: HPC: HCL: HE: CR: 8 Etapa de formación a la que pertenece: Básica Carácter de la Asignatura: Obligatoria PROPÓSITO GENERAL DEL CURSO Proporcionar al estudiante

Más detalles

CDI Arquitecturas que soportan la concurrencia. granularidad

CDI Arquitecturas que soportan la concurrencia. granularidad granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 00, Australia Autor principal del curso de 00 a 0 Iria Estévez Ayres Damaris Fuentes Lorenzo

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i

Más detalles

Sucesos asíncronos. dit. dit. Juan Antonio de la Puente DIT/UPM UPM UPM

Sucesos asíncronos. dit. dit. Juan Antonio de la Puente DIT/UPM UPM UPM dit dit UPM UPM Sucesos asíncronos Juan Antonio de la Puente DIT/UPM Transparencias basadas en el capítulo 10del libro de A. Burns y A. Wellings Real Time Systems and Programming Languages, 3ª edición

Más detalles

El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante.

El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante. El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante. Cuando arrancas un ordenador con cualquier sistema operativo, el Kernel se carga en memoria y permanece

Más detalles

Mensajes. Interbloqueo

Mensajes. Interbloqueo CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose

Más detalles

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo Arquitectura de Computadoras Clase 9 Procesamiento paralelo Introducción al procesamiento paralelo Sea cual sea el nivel de prestaciones, la demanda de máquinas de mayor rendimiento seguirá existiendo.

Más detalles

Semáforos. Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos

Semáforos. Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons License

Más detalles

Taller de Sistemas Operativos. Procesos 2012

Taller de Sistemas Operativos. Procesos 2012 Taller de Sistemas Operativos Procesos 2012 Agenda Introducción PCB (task_struct) Agrupaciones de procesos Estado de un proceso Cambio de proceso (task switch) Creación y destrucción de un proceso Threads

Más detalles

1 Primitivas básicas de OpenMP

1 Primitivas básicas de OpenMP 1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles

Sistemas Operativos II Junio 2006 Nombre:

Sistemas Operativos II Junio 2006 Nombre: Sistemas Operativos II Junio 2006 Nombre: ITIS Castellano Ejercicio 1 [1 punto] 1. Por qué es más eficiente el cambio de contexto entre threads (hilos) que entre procesos? 2. Describe brevemente la diferencia

Más detalles

Paradigma de paso de mensajes

Paradigma de paso de mensajes Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:

Más detalles

Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización. Slides de Samuel Oporto Díaz

Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización. Slides de Samuel Oporto Díaz Material Adicional (SOSD Mod 4) Concurrencia Exclusión mutua y sincronización Slides de Samuel Oporto Díaz CONCURRENCIA 2 Concurrencia La concurrencia es la simultaneidad de hechos. Un programa concurrente

Más detalles

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos.

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos. Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos. 1.-Considerar los siguientes procesos con los tiempos de llegadas, prioridades y ráfagas de cpu. Proceso Ráfaga de CPU Prioridad Tiempo

Más detalles

Tema 4 El paradigma cliente-servidor

Tema 4 El paradigma cliente-servidor Tema 4 El paradigma cliente-servidor F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de

Más detalles