Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAmado Tercero Modificado hace 8 años
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;
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.