Sistemas Concurrentes: Semáforos
description
Transcript of Sistemas Concurrentes: Semáforos
![Page 1: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/1.jpg)
Sistemas Concurrentes:Sistemas Concurrentes:SemáforosSemáforos
I.T. Informática de SistemasCurso 2002-2003
![Page 2: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/2.jpg)
SistemasConcurrentes
Bibliografía
• Principles of Concurrent and Distributed Programming M. Ben-Ari. Prentice Hall, 1990 Capítulo 4
• Sistemas Operativos A. Silberschatz, P. Galvin. Addison Wesley
Longman, 1999 Capítulo 6
![Page 3: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/3.jpg)
SistemasConcurrentes
Semáforos
• Hasta ahora hemos trabajado con instrucciones de máquina
• Podemos solucionar problemas de concurrencia con ellas, como p.ej. la exclusión mutua, vista en el tema anterior
• Pero ahora usaremos instrucciones de mayor nivel, lo cual nos facilitará el trabajo en programación concurrente
• El semáforo es una de estas instrucciones
![Page 4: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/4.jpg)
SistemasConcurrentes
Concepto de semáforo
• Una variable entera con dos operaciones atómicas:
• Wait(s). si s>0 s:=s-1; si no, suspende al proceso.
• Signal(s). si hay procesos suspendidos, despierta uno; si no, s:=s+1.
![Page 5: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/5.jpg)
SistemasConcurrentes
Propiedades del semáforo
• Wait(s) y Signal(s) son atómicas• Todo semáforo debe tener un valor inicial
no negativo• La operación Signal(s) debe despertar un
proceso suspendido. La definición no especifica cuál de los procesos suspendidos se despierta
• A un semáforo que solo toma los valores 0 y 1 se le llama semáforo binario
![Page 6: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/6.jpg)
SistemasConcurrentes
Invariantes del semáforo
• Todo semáforo, al margen de su implementación, debe cumplir los invariantes:
• S >= 0• S = Sinicial + #signals - #waits
#signals es la cantidad de signal ejecutados en S
#waits es la cantidad de waits completados en S
![Page 7: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/7.jpg)
SistemasConcurrentes
Exclusión mutua con semáforos
task body P1 isbegin
loop SNC1;
Wait(S);SC1;Signal(S);
end loop;end P1;
S: Semaphore := 1
task body P2 isbegin
loop SNC2;
Wait(S);SC2;Signal(S);
end loop;end P2;
![Page 8: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/8.jpg)
SistemasConcurrentes
Definiciones de semáforos
• Semáforo de conjunto bloqueado• Semáforo FIFO• Semáforo de espera activa• Semáforo fuertemente justo• Semáforo débilmente justo
![Page 9: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/9.jpg)
SistemasConcurrentes
Definiciones basadas en implementación
• Semáforo de Conjunto bloqueado. El signal desbloquea a un proceso en espera (no sabemos cuál).
• Semáforo con FIFO. El signal siempre desbloquea al proceso más viejo.
• Espera activa. La operación wait es un bucle en el que se testea constantemente S:
loop if S>0 then S:=S-1; exit; end if;end loop;
![Page 10: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/10.jpg)
SistemasConcurrentes
Definiciones basadas en propiedades
(p=lugar de la instrucción wait, p’=siguiente instrucción después de wait)
• Definición fuerte. Wait(S) : at(p) ◊S>0 ◊ at(p’) Signal(S) : S:=S+1
• Definición débil. Wait(S) : at(p) ◊ S>0 ◊ at(p’) Signal(S) : S:=S+1
![Page 11: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/11.jpg)
SistemasConcurrentes
Propiedades según tipo de semáforo
• La exclusión mutua y la ausencia de interbloqueo se mantienen independientemente del tipo de semáforo
• Pero no la inanición. P.ej. para uno de espera activa, considerar la secuencia: P1 hace un Wait(S) y entra en su sección crítica P2 encuentra que S=0 e itera en el bucle P1 completa el post-protocolo, sección no crítica,
pre-protocolo y vuelve a entrar en su sección crítica
P2 encuentra que S=0 e itera en el bucle
![Page 12: Sistemas Concurrentes: Semáforos](https://reader036.fdocuments.mx/reader036/viewer/2022083005/56813949550346895da0e6e6/html5/thumbnails/12.jpg)
SistemasConcurrentes
El problema del productor-consumidor con semáforos
• Tenemos: Productores: crean un dato Consumidores: consumen un dato
• Tipos: Síncrono Asíncrono
Buffer infinito Buffer finito
• Cola circular• Pool