Sistemas Concurrentes: el problema de la exclusi - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

Sistemas Concurrentes: el problema de la exclusi

Description:

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 ... No pueden aparecer interbloqueos. ... – PowerPoint PPT presentation

Number of Views:43
Avg rating:3.0/5.0
Slides: 16
Provided by: josmi2
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: el problema de la exclusi


1
Sistemas Concurrentesel problema de la
exclusión mutua
  • 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 3
  • Sistemas Operativos
  • A. Silberschatz, P. Galvin. Addison Wesley
    Longman, 1999
  • Capítulo 6

3
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
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
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
Primer intento variable turno
turno integer range 1..2 1
  • loop
  • SNC1
  • loop exit when turno1 end loop
  • SC1
  • turno2
  • end loop
  • loop
  • SNC2
  • loop exit when turno2 end loop
  • SC1
  • turno1
  • end loop

7
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
Segundo intento avisadores
flag1,flag2 boolean true
  • loop
  • SNC1
  • loop exit when flag2 end loop
  • flag1false
  • SC1
  • flag1true
  • end loop
  • loop
  • SNC2
  • loop exit when flag1 end loop
  • flag2false
  • SC2
  • flag2true
  • end loop

9
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
Tercer intento
flag1,flag2 boolean true
  • loop
  • a1 SNC1
  • b1 flag1false
  • c1 loop exit when flag2 end loop
  • d1 SC1
  • e1 flag1true
  • end loop
  • loop
  • a2 SNC2
  • b2 flag2false
  • c2 loop exit when flag1 end loop
  • d2 SC2
  • e2 flag2true
  • end loop

11
Demostración de la exclusión mutua
  • flag1false ? at(c1) V at(d1) V at(e1)
  • flag2false ? at(c2) V at(d2) V at(e2)
  • (at(d1) ? at(d2))

12
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
Algoritmo de Dekker
C1, C2 Integer range 0..1 1 Turn Integer
range 1..2 1
loop SNC2 C2 0 loop exit
when C11 if Turn1 then C2 1
loop exit when Turn2 end
loop C2 0 end if end
loop SC2 C2 1 Turn 1 end loop
  • loop
  • SNC1
  • C1 0
  • loop
  • exit when C21
  • if Turn2 then
  • C1 1
  • loop
  • exit when Turn1
  • end loop
  • C1 0
  • end if
  • end loop
  • SC1
  • C1 1
  • Turn 2
  • end loop

14
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
Soluciones hardware
SWAP Temp A A B B A
TEST_AND_SET Li C C1 1
Li Integer range 0..1 0 loop SNCi
loop Swap(C,Li) exit when Li1 end
loop SCi Swap(C,Li) end loop
  • Li Integer range 0..1
  • loop
  • SNCi
  • loop
  • exit when
  • Test_and_Set(Li)
  • exit when Li0
  • end loop
  • SCi
  • C 0
  • end loop
Write a Comment
User Comments (0)
About PowerShow.com