Sistemas Concurrentes: Semforos - PowerPoint PPT Presentation

1 / 12
About This Presentation
Title:

Sistemas Concurrentes: Semforos

Description:

Una variable entera con dos operaciones at micas: Wait(s) ... hilo := L.extraer; WAKEUP(hilo); else. s.valor:=s.valor 1; end if; wait(s): if s.valor 0 then ... – PowerPoint PPT presentation

Number of Views:77
Avg rating:3.0/5.0
Slides: 13
Provided by: josmi2
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: Semforos


1
Sistemas ConcurrentesSemáforos
  • I.T. Informática de Sistemas

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
Concepto de semáforo
  • Una variable entera con dos operaciones atómicas
  • Wait(s). cuando sgt0 ? ss-1 mientras tanto,
    espera.
  • Signal(s). ss1

4
Inventor de los semáforos
  • Edsger Dijkstra (1965)
  • Les dio a las operaciones estos nombres
  • P wait
  • V signal

5
Invariantes del semáforo
  • Todo semáforo, al margen de su implementación,
    debe cumplir los invariantes
  • S gt 0
  • S Sinicial signals - waits
  • signals es la cantidad de signal ejecutados en S
  • waits es la cantidad de waits completados en S

6
Posibles comportamientos de un semáforo (según su
implementación)
  • Conjunto bloqueado. El signal desbloquea a un
    proceso en espera (no sabemos cuál).
  • 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 Sgt0 then SS-1 exit end if
  • end loop

7
Definiciones basadas en propiedades (Ben-Ari)
  • (plugar de la instrucción wait, psiguiente
    instrucción después de wait)
  • Definición fuerte.
  • Wait(S) at(p) ? ??Sgt0 ? ?at(p)
  • Signal(S) SS1
  • Definición débil.
  • Wait(S) at(p) ? ??Sgt0 ? ?at(p)
  • Signal(S) SS1

8
Implementación sin espera activa
type Semáforo is record valor
integer L ListaltProcesogt end
signal(s) if not L.vacía then hilo
L.extraer WAKEUP(hilo) else
s.valors.valor1 end if
wait(s) if s.valorgt0 then
s.valors.valor-1 else
L.agregar(hilo_actual) SLEEP end if
9
Semáforos binarios
  • Un semáforo que pueda tomar cualquier valor no
    negativo recibe el nombre de semáforo general
  • Un semáforo que sólo puede tomar los valores 0 y
    1 recibe el nombre de semáforo binario
  • La definición de las operaciones queda igual
    salvo signal(s)
  • Si hay procesos suspendidos, despierta uno, si
    no, s1

10
Ejercicios
  • a.-) Resolver el problema de la sección crítica
    para n procesos con semáforos

11
Ejercicio
  • Empleando la sentencia concurrente (cobegin,
    coend) y semáforos, construir un programa
    concurrente que se corresponda con el siguiente
    grafo de precedencia

A
C
B
D
E
12
Ejercicio
  • Supongamos tres procesos concurrentes P1, P2 y P3
    con el código que se muestra en las figuras. Se
    pide
  • 1.- Introducir las modificaciones necesarias para
    que d se ejecute solo si e o a se han ejecutado
  • 2.- Introducir las modificaciones necesarias para
    que d se ejecute solo si e y a se han ejecutado

Task body P1 is begin loop a b end
loop end
Task body P2 is begin loop c d end
loop end
Task body P3 is begin loop e f end
loop end
Write a Comment
User Comments (0)
About PowerShow.com