Download
sistemas concurrentes sem foros n.
Skip this Video
Loading SlideShow in 5 Seconds..
Sistemas Concurrentes: Semáforos PowerPoint Presentation
Download Presentation
Sistemas Concurrentes: Semáforos

Sistemas Concurrentes: Semáforos

275 Views Download Presentation
Download Presentation

Sistemas Concurrentes: Semáforos

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Sistemas Concurrentes:Semáforos I.T. Informática de Sistemas Curso 2002-2003

  2. 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

  3. 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

  4. 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.

  5. 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

  6. 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

  7. Exclusión mutua con semáforos S: Semaphore := 1 task body P1 is begin loop SNC1; Wait(S); SC1; Signal(S); end loop; end P1; task body P2 is begin loop SNC2; Wait(S); SC2; Signal(S); end loop; end P2;

  8. 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

  9. 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;

  10. 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

  11. 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

  12. 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