4.1exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad...

29
4.1Exclusión mutua, región crítica y sincronización con hilos 4.1.1 Alternancia 4.1.2 Falta de exclusión 4.1.3 Interbloqueo 4.1.4 Espera infinita 4.1.5 Algoritmo de Dijkstra 4.1.6 Algoritmo de Dekker 4.1.7 Algoritmo de Peterson 4.2 4.2 Monitores, Paso de mensajes

Upload: trinhtram

Post on 29-Oct-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

4.1Exclusión mutua, región crítica y sincronización con hilos

4.1.1 Alternancia 4.1.2 Falta de exclusión 4.1.3 Interbloqueo 4.1.4 Espera infinita 4.1.5 Algoritmo de Dijkstra4.1.6 Algoritmo de Dekker4.1.7 Algoritmo de Peterson 4.2

4.2 Monitores, Paso de mensajes

Page 2: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 3: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 4: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 5: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Sección crítica

Se denomina sección crítica, en programación concurrente, a laporción de código de un programa de ordenador en la que se accede aun recurso compartido (estructura de datos o dispositivo) que no debeser accedido por más de un proceso o hilo en ejecución.

Page 6: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Metodos que NO cumplen las 4 condiciones de Exclusion Mutua• Desactivación de interrupciones

• Variables de Cerradura:

• Alternancia estricta.

Page 7: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Métodos que cumplen con las 4 condiciones de la Exclusión Mutua

Page 8: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 9: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 10: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 11: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Algoritmo de Dijkstra

SEMÁFOROS• Dijkstra dio en 1968 una solución al problema de la exclusión mutua con la introducción del

concepto de semáforo binario. Está técnica permite resolver la mayoría de los problemas desincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de

lenguajes de programación concurrentes.

• La exclusión mutua se realiza fácilmente utilizando semáforos. La operación de espera se usarácomo procedimiento de bloqueo antes de acceder a una sección crítica y la operación señal comoprocedimiento de desbloqueo. Se utilizarán tantos semáforos como clases de secciones críticas seestablezcan. El proceso P1 de la sección anterior ahora toma la forma:

Page 12: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Semáforos

Page 13: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 14: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 15: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 16: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 17: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 18: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 19: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 20: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 21: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 22: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Algoritmo de Dekker• El algoritmo de Dekker es un algoritmo de programación concurrente para exclusión mutua, que permite a

dos procesos o hilos de ejecución compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión mutua inventados, implementado por Edsger Dijkstra.

• Si ambos procesos intentan acceder a la sección crítica simultáneamente, el algoritmo elige un proceso según una variable de turno. Si el otro proceso está ejecutando en su sección crítica, deberá esperar su finalización.

• Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los primeros cuatro. La versión 5 es la que trabaja más eficientemente, siendo una combinación de la 1 y la 4.

Page 23: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 24: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de
Page 25: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Tercer algoritmoColisión región crítica no garantiza la exclusión mutua. Este algoritmo no evita que dos procesos puedanacceder al mismo tiempo a la región crítica.

Page 26: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Cuarto algoritmoPostergación indefinida. Aunque los procesos no están en interbloqueo, un proceso o varios se quedan

esperando a que suceda un evento que tal vez nunca suceda.

Page 27: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Quinto Algoritmo

El quinto algoritmo de Dekker es la versión optimizada y que no presenta problemas como lascuatro versiones anteriores, para su estructuración se hace una combinación de dos algoritmos deacuerdo al orden de prioridad de desempeño y funcionamiento de las cuatro versiones conocidas.

Page 28: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de

Algoritmo de PetersonEl algoritmo de Peterson, también conocido como solución de Peterson,1 es un algoritmo de programación concurrente para exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación.

Peterson desarrolló en 1981 el algoritmo básico para dos procesos,2 como una simplificación del algoritmo de Dekker. El algoritmo básico puede generalizarse fácilmente a un número arbitrario de procesos.

Los procesos p0 y p1 no pueden estar en la sección crítica al mismo tiempo: si p0 está en la sección crítica,

entonces bandera[0] = true, y ocurre que bandera[1] = false, con lo que p1 ha terminado la sección crítica, o que la

variable compartida turno = 0, con lo que p1 está esperando para entrar a la sección crítica. En ambos casos, p1

no puede estar en la sección crítica.

Page 29: 4.1Exclusión mutua, región crítica y sincronización …hilario_sm/slide/pcp2016/unidad 4...Algoritmo de Dijkstra SEMÁFOROS • Dijkstra dio en 1968 una solución al problema de