sistemas concurrentes: semáforos

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

Upload: adanne

Post on 04-Jan-2016

71 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sistemas Concurrentes: Semáforos

Sistemas Concurrentes:Sistemas Concurrentes:SemáforosSemáforos

I.T. Informática de SistemasCurso 2002-2003

Page 2: Sistemas Concurrentes: Semáforos

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

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

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

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

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

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

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

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

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

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

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