Concurrencia. Guillermo Román Díez

Documentos relacionados
Concurrencia Monitores. Guillermo Román Díez

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

Sincronización de Procesos

ISO Tema 8,

Acceso coordinado a recursos compartidos

Concurrencia Espera Activa. Guillermo Román Díez

Apellidos: Nombre: Matrícula: UNIVERSIDAD POLITÉCNICA DE MADRID

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

Apellidos: Nombre: Matrícula:

Secciones críticas y exclusión mutua

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

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

Concurrencia. Primitivas IPC con bloqueo

Sistemas operativos. Comunicación y sincronización de procesos

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

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

Informática I Threads

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

Guillermo Román Díez

Uso de recursos compartidos

Unidad 1: Gestión de Procesos

La cena de los filósofos.

Sistemas Operativos Tema 6. Concurrencia

Sincronización de Threads

Modelo de Cómputo. Programación concurrente

Estados de un proceso

Prueba objetiva 2 (4F1M) - Clave a

SISTEMAS OPERATIVOS:

Sincronización de Procesos. Módulo 6. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur. Sincronización de Procesos

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

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

Sincronización de procesos

*** SOLUCIONES *** SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010

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

Sistemas Operativos Tema 3. Concurrencia Conceptos generales Sincronización con semáforos

Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales.

Unidad 2: Gestión de Procesos

CAPÍTULO 3. PROCESOS VS. HILOS

SISTEMAS OPERATIVOS:

Sistemas Operativos Tema 11. Interbloqueo José Miguel Santos C. Rubén García - Alexis Quesada

Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia

CONCURRENCIA. Sincronización. Sistemas Operativos y Distribuidos. Prof. Javier Echaiz 1. Material Adicional (SOSD Mod 4)

Cada examen debe superarse con al menos un 4 para hacer media.

dit UPM Tema 3: Concurrencia /threads (python) Análisis y diseño de software José A. Mañas

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)

Tema 6. Threads: programas multitarea

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos

SOLUCIONES. DURACIÓN: Dispone de dos horas para realizar el examen. Lea las instrucciones para el test en la hoja correspondiente.

UNIDAD 3 MEMORIA COMÚN. El problema de exclusión mutua

HP - UX. Qué es HP UX?

PARICON - Paralelismo y Concurrencia

Programación concurrente

Hoja de ejercicios cortos Concurrencia Segundo semestre

Sistemas operativos, 2ª edición

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

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

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos

Sistemas multiprogramados

S.O.: Concurrencia 2

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; }

SISTEMAS OPERATIVOS, 10 de septiembre de 2009 Examen Convocatoria Extraordinaria

Prueba objetiva 2 - Clave a

Tema 3: Planificación de recursos

Sistemas Operativos (Parte 2)

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

Cuadernillo de ejercicios cortos Concurrencia. Curso

Concurrencia de Procesos

Sistemas operativos. Tema 6: Interbloqueo ( (deadlock)

CAPITULO 6. Control de Concurrencia y Recuperación

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

SISTEMAS OPERATIVOS (Código: ) Septiembre 2018

MECANISMOS PARA SINCRONIZACIÓN. Semáforos

SOLUCIONES. DURACIÓN: Dispones de dos horas para realizar el examen. Lee las instrucciones para el test en la hoja correspondiente.

Sistemas Operativos. Concurrencia. Concurrencia de procesos. Concurrencia de procesos. Ejecución simultánea de procesos.

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN FACULTAD DE INGENIERIA E.A.P. INGENIARIA EN INFORAMTICA Y SISTEMAS MONITORES: "PROBLEMA DE SANTA CLAUS

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado

Especificando interacción con recursos compartidos

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

Por ejemplo, el siguiente error conduce inmediatamente a un deadlock:

Java y JVM: programación concurrente. Adolfo López Díaz

SEMAFOROS. if hay procesos suspendidos en este semáforo then despertar a uno de ellos else S = S + 1

PRIMITIVAS DE SINCRONIZACIÓN BASADAS EN MEMORIA COMPARTIDA.

MECANISMOS DE SINCRONIZACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA

7. Programación Concurrente

Tema 6. Gestión de Interbloqueo

Concurrencia: Exclusión mutua y Sincronización

Unidad 2: Gestión de Procesos

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Hilos y mecanismos de comunicación y sincronización

dit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

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

Lección 6: Ejemplos de programación con semáforos

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

Teoría de Sistemas Operativos Sincronización Procesos

Transcripción:

Concurrencia Semáforos Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2017-2018 Guillermo Román, UPM CC: Semáforos 1/11

Problemas de la espera activa Los algoritmos de espera activa pueden garantizar la exclusión mutua, pero... : Son difíciles de implementar Son difíciles de probar su corrección Malgastan CPU Dependen de la arquitectura donde ejecutan Son difíciles de escalar a diferentes tipos de procesos... Es necesario encontrar una solución mejor para implementar la exclusión mutua Guillermo Román, UPM CC: Semáforos 2/11

Semáforos Semáforo es un tipo abstracto de datos que permite detener o dejar pasar un proceso dependiendo del valor de su contador interno Detiene los threads (no hace espera activa) Permite desbloquear uno de los hilos que se encuentren bloqueados Se basa en test and set Es de más alto nivel que la espera activa simplifica los protocolos de entrada y salida en la sección crítica Resuelve fácilmente la exclusión mutua Permite verificar más fácilmente la corrección de las soluciones propuestas Guillermo Román, UPM CC: Semáforos 3/11

Semáforos Podríamos ver cierta analogía con un semáforo de tráfico (un poco lejana... ) Si está abierto permite el paso del thread Si está cerrado detiene el thread Tiene 1 atributo contador de tipo entero Se usa para decidir si un proceso puede pasar o no El valor del contador se inicializa en el constructor Se puede inicializar a cualquier valor mayor o igual que 0 Tiene 2 operaciones: P() (await, acquire) V() (signal, release) Guillermo Román, UPM CC: Semáforos 4/11

Operación await Semaphore s... void await (){ if( s. contador >0) s. contador --; else block (); // Duerme el thread actual } Cuando el contador tiene un valor mayor que 0, únicamente se decrementa el contador Cuando el contador vale 0 entonces el proceso se queda bloqueado Guillermo Román, UPM CC: Semáforos 5/11

Operación signal Semaphore s... void signal (){ if (! procesos_ bloqueados ) s. contador ++; else unblock ( t); // Despierta un thread t // que estuviera bloqueado // (no - determinista ) } Cuando no hay procesos bloqueados se incrementa el contador Cuando hay procesos bloqueados se desbloquea uno de esos procesos Guillermo Román, UPM CC: Semáforos 6/11

Justicia La decisión del thread que se despierta en un semáforo es no-determinista Por esto, a nivel teórico podría darse el caso de que un thread sufra inanición En las implementaciones se suele hacer en orden de llegada La implementación de Java tiene un flag para garantizar justicia Nuestra implementación de cclib es justa Para razonar sobre el comportamiento del semáforo debemos suponer que cualquier hilo que esté bloqueado puede ser desbloqueado en un signal Guillermo Román, UPM CC: Semáforos 7/11

Verdadero o falso? Un semáforo se puede inicializar con un valor del contador negativo Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 Si s.contador == 0 implica que hay un thread bloqueado Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados A través de un semáforo se puede bloquear un thread distinto al que está ejecutando Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados X A través de un semáforo se puede bloquear un thread distinto al que está ejecutando Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados X A través de un semáforo se puede bloquear un thread distinto al que está ejecutando A través de un semáforo se puede desbloquear un thread distinto al que está ejecutando Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados X A través de un semáforo se puede bloquear un thread distinto al que está ejecutando A través de un semáforo se puede desbloquear un thread distinto al que está ejecutando Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados X A través de un semáforo se puede bloquear un thread distinto al que está ejecutando A través de un semáforo se puede desbloquear un thread distinto al que está ejecutando El valor máximo de s.contador no está acotado Guillermo Román, UPM CC: Semáforos 8/11

Verdadero o falso? X Un semáforo se puede inicializar con un valor del contador negativo X Un semáforo incializado con un valor mayor que 0 puede tener s.contador < 0 Si hay un thread bloqueado, entonces s.contador == 0 X Si s.contador == 0 implica que hay un thread bloqueado Si s.contador > 0 implica que no hay threads bloqueados X A través de un semáforo se puede bloquear un thread distinto al que está ejecutando A través de un semáforo se puede desbloquear un thread distinto al que está ejecutando El valor máximo de s.contador no está acotado Guillermo Román, UPM CC: Semáforos 8/11

Interbloqueo (Deadlock) Deadlock Describe una situación en la cual hay dos o más procesos bloqueados esperándose entre sí indefinidamente Hay más de un proceso compitiendo por el mismo recurso y ambos están esperando a que el otro termine con el recurso, y ninguno de ellos lo hace Guillermo Román, UPM CC: Semáforos 9/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso Guillermo Román, UPM CC: Semáforos 10/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso R 2 P 2 P 1 R 1 Guillermo Román, UPM CC: Semáforos 10/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso R 2 P 2 1) P 1 adquiere R1 P 1 R 1 Guillermo Román, UPM CC: Semáforos 10/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso R 2 P 2 1) P 1 adquiere R1 2) P 2 adquiere R 2 P 1 R 1 Guillermo Román, UPM CC: Semáforos 10/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso R 2 P 2 1) P 1 adquiere R1 2) P 2 adquiere R 2 3) P 1 solicita R 2 P 1 R 1 Guillermo Román, UPM CC: Semáforos 10/11

Interbloqueo (Deadlock) Se pueden intentar detectar mediante un grafo donde: Los recursos y los procesos son nodos Cuando un proceso adquiere un recurso arista del recurso al proceso Cuando un proceso solicita un recurso arista del proceso al recurso R 2 P 2 1) P 1 adquiere R1 2) P 2 adquiere R 2 3) P 1 solicita R 2 4) P 2 solicita R 1 P 1 R 1 Guillermo Román, UPM CC: Semáforos 10/11

Filo sofos Cenando (dining philosophers) Guillermo Roma n, UPM CC: Sema foros 11/11

Filósofos Cenando (dining philosophers) F 1 R 5 R 1 F 5 F 2 R 4 R 2 F 4 F 3 R 3 Guillermo Román, UPM CC: Semáforos 11/11

Filósofos Cenando (dining philosophers) F 1 R 5 R 1 F 5 F 2 R 4 R 2 F 4 F 3 R 3 Guillermo Román, UPM CC: Semáforos 11/11

Filósofos Cenando (dining philosophers) F 1 R 5 R 1 F 5 F 2 R 4 R 2 F 4 F 3 R 3 Guillermo Román, UPM CC: Semáforos 11/11