1 / 12

Sistemas Concurrentes: Semáforos

Sistemas Concurrentes: Semáforos. I.T. Informática de Sistemas Curso 2002-2003. 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. Semáforos.

adanne
Télécharger la présentation

Sistemas Concurrentes: Semáforos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related