Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y Distribuidos
Exclusión Mutua y Sincronización
Primeras soluciones
sábado 10 de marzo de 12
Problemas en Concurrencia
Cooperación entre procesos
Incertidumbre en la ejecución
Diferentes tiempos de asignación de la
CPU
Competencia entre Recursos
Compartibles
No Compartibles
sábado 10 de marzo de 12
Exclusión Mutua
P1 P2
cálculos cálculos
a1: leer registro b1: leer registro Puede darse la siguiente secuencia:
a2: saldo <- saldo + nómina b2: saldo <- saldo - factura
a3: escribir registro b3: escribir registro a1b1b2b3a2a3
cálculos cálculos
sábado 10 de marzo de 12
Resolución de la Exclusión
Mutua
sábado 10 de marzo de 12
Condición de Sincronización
sábado 10 de marzo de 12
Soluciones para los dos tipos
de sincronización
Inhibición de Interrupciones
Espera ocupada
Semáforos
Regiones críticas
Regiones críticas condicionales
Monitores
Paso de mensajes
Llamadas a procedimiento remoto
Invocaciones remotas
sábado 10 de marzo de 12
Inhibición de Interrupciones
sábado 10 de marzo de 12
Inhibición de Interrupciones
Soluciona el
Problema de la
Exclusión mutua
sábado 10 de marzo de 12
Inhibición de Interrupciones
Soluciona el Problema:
Problema de la Acceso al sistema del
Exclusión mutua Programador
sábado 10 de marzo de 12
Espera Ocupada
Solución Software
Suponemos como operación atómica los accesos a
memoria para leer o escribir
Solución Hardware
Instrucciones especializadas para el acceso a la
información:
Intercambio (exchange)
Incremento/decremento
Instrucción testset
sábado 10 de marzo de 12
Solución Software:
Algoritmos
Algoritmos no eficientes
Algoritmo de Dekker
Algoritmo de Peterson
Algoritmo incorrecto de Hyman
Algoritmo de Eisenberg-McGuire
Algoritmo de Lampor
sábado 10 de marzo de 12
Solución Software:
Algoritmos
Algoritmos no eficientes
Algoritmo de Dekker
Algoritmo de Peterson
Algoritmo incorrecto de Hyman
Algoritmo de Eisenberg-McGuire
Algoritmo de Lampor
sábado 10 de marzo de 12
Solución Software:
Algoritmos
Algoritmos no eficientes
Algoritmo de Dekker
Algoritmo de Peterson
Algoritmo incorrecto de Hyman Comprobar cerrojo
Entrar en sección crítica Si es 0
Protocolo de entrada poner cerroja a 1 y
entrar en SC
Algoritmo de Eisenberg-McGuire Si es 1
Salir de sección crítica
esperar hasta que
Protocolo de salida
Algoritmo de Lampor cerrojo = 0
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Primer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Primer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Primer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Segundo Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Segundo Intento
Alternancia
Falla el progreso en la ejecución
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Tercer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Tercer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Tercer Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Cuarto Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Cuarto Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Quinto Intento
sábado 10 de marzo de 12
Algoritmos no Eficientes:
Quinto Intento
sábado 10 de marzo de 12
Algoritmo de Dekker
sábado 10 de marzo de 12
Algoritmo de Dekker
Exclusión Mútua
Limitación en la Espera
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Dekker
Exclusión Mútua X
Limitación en la Espera
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Dekker
Exclusión Mútua X
Limitación en la Espera X
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Dekker
Exclusión Mútua X
Limitación en la Espera X
Progresión en la Ejecución X
sábado 10 de marzo de 12
Algoritmo de Peterson
sábado 10 de marzo de 12
Algoritmo de Peterson
Exclusión Mútua
Limitación en la Espera
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Peterson
Exclusión Mútua X
Limitación en la Espera
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Peterson
Exclusión Mútua X
Limitación en la Espera X
Progresión en la Ejecución
sábado 10 de marzo de 12
Algoritmo de Peterson
Exclusión Mútua X
Limitación en la Espera X
Progresión en la Ejecución X
sábado 10 de marzo de 12
Algoritmo de Hyman
sábado 10 de marzo de 12
Algoritmo de Hyman
Secuencia incorrecta:
➡turno = 0
➡P1 ejecuta 1.1, 1.2, 1.3 y se para el P1
➡P2 ejecuta 0.1 y 0.2 pasando a 0.5
➡P1 ejecuta 1.4 y alcanza 1.5
Falla en la exclusión mutua
sábado 10 de marzo de 12
Algoritmo de Eisember-McGuire
sábado 10 de marzo de 12
Algoritmo de Eisember-McGuire
Posibles valores:
✓restoproceso
✓quiereentrar
✓enSC
sábado 10 de marzo de 12
Algoritmo de Eisember-McGuire
indice = proceso
que tiene el turno
sábado 10 de marzo de 12
Algoritmo de Eisember-McGuire
1.Comprueba que el que tiene permiso y el
resto están en “restoproceso”.
2.Si alguno no está vuelve a comprobar.
3.Si hay alguno en la sección crítica espera.
4.Hasta que ninguno está enSC y tiene el
turno o el que lo tiene está en “restoproceso”
5.Da turno al primero que no esté en
“restoproceso”. Al primero que quiera entrar,
en otro caso se queda con el turno
sábado 10 de marzo de 12
Algoritmo de Lamport
sábado 10 de marzo de 12
Algoritmo de Lamport
sábado 10 de marzo de 12
Algoritmo de Lamport
Está cogiendo número
sábado 10 de marzo de 12
Algoritmo de Lamport
Ha terminado de
coger número
sábado 10 de marzo de 12
Algoritmo de Lamport
sábado 10 de marzo de 12
Solución Hardware:
exchange
sábado 10 de marzo de 12
Solución Hardware:
exchange
exchange(r,m)=intercambia
los valores entre r y m
sábado 10 de marzo de 12
Solución Hardware:
exchange
sábado 10 de marzo de 12
Solución Hardware:
exchange
Problema en la limitación
en la espera
sábado 10 de marzo de 12
Solución Hardware:
decremento/incremento
sábado 10 de marzo de 12
Solución Hardware:
decremento/incremento
subc(r,m) = Decrementa
en 1 m y lo almacena en r
sábado 10 de marzo de 12
Solución Hardware:
decremento/incremento
sábado 10 de marzo de 12
Solución Hardware:
decremento/incremento
sábado 10 de marzo de 12
Solución Hardware:
testset
sábado 10 de marzo de 12
Solución Hardware:
testset
sábado 10 de marzo de 12
Solución Hardware:
testset
sábado 10 de marzo de 12
Solución Hardware:
testset
sábado 10 de marzo de 12