La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso 2002-2003.

Presentaciones similares


Presentación del tema: "Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso 2002-2003."— Transcripción de la presentación:

1 Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso 2002-2003

2 SistemasConcurrentes Bibliografía Principles of Concurrent and Distributed Programming  M. Ben-Ari. Prentice Hall, 1990  Capítulo 3 Sistemas Operativos  A. Silberschatz, P. Galvin. Addison Wesley Longman, 1999  Capítulo 6

3 SistemasConcurrentes Modelo del sistema N procesos intentan acceder a un recurso compartido en un bucle infinito: loop Sección_No_Crítica; Pre_Protocolo; Sección_Crítica; Post_Protocolo; end loop; Nunca puede haber más de un proceso en la sección crítica (exclusión mutua) Los pre y post protocolos serán algoritmos para garantizar que se cumple la exclusión mutua

4 SistemasConcurrentes Requisitos de la solución, según Ben-Ari Siempre se debe cumplir la exclusión mutua. Un proceso puede detenerse en su sección no crítica, sin que afecte a los demás procesos. No pueden aparecer interbloqueos. No puede haber inanición: si un proceso declara entrar en s.c., terminará entrando. Progreso si no hay contención: si un solo proceso quiere entrar en s.c., debe poder entrar sin más.

5 SistemasConcurrentes Requisitos de la solución, según Peterson Exclusión mutua Progreso: si ningún proceso está en sección crítica y hay procesos que desean entrar en su s.c., sólo estos últimos participarán en la decisión y ésta se tomará en un tiempo finito. Espera limitada: hay un límite para el número de veces que otros procesos pueden adelantarse a un proceso que quiere entrar en s.c.

6 SistemasConcurrentes Primer intento: variable turno loop SNC1; loop exit when turno=1; end loop; SC1; turno:=2; end loop; loop SNC2; loop exit when turno=2; end loop; SC1; turno:=1; end loop; turno: integer range 1..2 := 1;

7 SistemasConcurrentes Discusión del primer intento ¿Garantiza exclusión mutua? ¿Está libre de interbloqueo? ¿Está libre de inanición? ¿Garantiza el progreso si no hay contención?  ¿ qué pasa si P2 muere en su sección no crítica ?

8 SistemasConcurrentes Segundo intento: avisadores loop SNC1; loop exit when flag2; end loop; flag1:=false; SC1; flag1:=true; end loop; loop SNC2; loop exit when flag1; end loop; flag2:=false; SC2; flag2:=true; end loop; flag1,flag2: boolean := true;

9 SistemasConcurrentes Discusión del segundo intento ¿Garantiza el progreso si no hay contención? ¿ Garantiza exclusión mutua ?  ¿qué pasa con esta secuencia ?: P1 encuentra flag2 a true en el bucle P2 encuentra flag1 a true en el bucle P1 pone flag1 a false P2 pone flag2 a false P1 entra en su sección crítica P2 entra en su sección crítica

10 SistemasConcurrentes Tercer intento loop a1: SNC1; b1: flag1:=false; c1: loop exit when flag2; end loop; d1: SC1; e1: flag1:=true; end loop; loop a2: SNC2; b2: flag2:=false; c2: loop exit when flag1; end loop; d2: SC2; e2: flag2:=true; end loop; flag1,flag2: boolean := true;

11 SistemasConcurrentes Demostración de la exclusión mutua flag1=false  at(c1) V at(d1) V at(e1) flag2=false  at(c2) V at(d2) V at(e2) ¬(at(d1)  at(d2))

12 SistemasConcurrentes Pero, qué pasa con esta secuencia? P1 pone flag1 a false P2 pone flag2 a false P1 se queda esperando en su bucle P2 se queda esperando en su bucle

13 SistemasConcurrentes Algoritmo de Dekker loop SNC1; C1 : = 0; loop exit when C2=1; if Turn=2 then C1 := 1; loop exit when Turn=1; end loop; C1 := 0; end if; end loop; SC1; C1 := 1; Turn := 2; end loop; loop SNC2; C2 : = 0; loop exit when C1=1; if Turn=1 then C2 := 1; loop exit when Turn=2; end loop; C2 := 0; end if; end loop; SC2; C2 := 1; Turn := 1; end loop; C1, C2: Integer range 0..1 := 1; Turn: Integer range 1..2 := 1;

14 SistemasConcurrentes Soluciones hardware Instrucciones atómicas test-and-set ó SWAP. Permiten evaluar y asignar un valor a una variable de forma atómica.  test-and-set(B): Pone B a true y devuelve el antiguo valor de B.  SWAP(A,B): Intercambia los valores de A y B. Si disponemos de estas instrucciones, se simplifica muchísimo el problema de la sección crítica, sobre todo para N procesos.

15 SistemasConcurrentes Soluciones hardware Li: Integer range 0..1; loop SNCi; loop exit when Test_and_Set(Li); exit when Li=0; end loop; SCi; C := 0; end loop; Li: Integer range 0..1 := 0; loop SNCi; loop Swap(C,Li); exit when Li=1; end loop; SCi; Swap(C,Li); end loop; TEST_AND_SET: Li := C; C1 : = 1; SWAP: Temp := A; A : = B; B := A;


Descargar ppt "Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso 2002-2003."

Presentaciones similares


Anuncios Google