Sistemas Concurrentes: Regiones crticas y monitores - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Sistemas Concurrentes: Regiones crticas y monitores

Description:

En el peor caso, cada vez que un proceso sale de RCC se reeval an las ... Si el acceso al monitor est implementado con un cerrojo al inicio de cada procedimiento, ... – PowerPoint PPT presentation

Number of Views:103
Avg rating:3.0/5.0
Slides: 32
Provided by: xxx997
Category:

less

Transcript and Presenter's Notes

Title: Sistemas Concurrentes: Regiones crticas y monitores


1
Sistemas ConcurrentesRegiones críticas y
monitores
  • I.T. Informática de Sistemas

2
Bibliografía
  • Programación Concurrente
  • J. Palma, C. Garrido, F. Sánchez, A. Quesada,
    2003
  • Capítulos 5 y 6
  • Concurrent Programming
  • A. Burns, G. Davies. Addison-Wesley, 1993
  • Capítulo 7
  • Principles of Concurrent and Distributed
    Programming
  • M. Ben-Ari. Prentice Hall, 1990
  • Capítulo 5
  • Sistemas Operativos
  • A. Silberschatz, P. Galvin. Addison-Wesley, 1999
  • Capítulo 6

3
Limitaciones de los semáforos
  • Los semáforos permiten una implementación muy
    eficiente y sencilla, pero son propensos a
    errores por despistes del programador
  • Comportamiento muy sensible al valor inicial
  • Nivel de abstracción muy bajo (próximo al S.O.)
  • Permiten usos indebidos (ej. dos llamadas
    seguidas a V en un semáforo para exclusión
    mutua)

4
Superando los semáforos
  • A partir de los años 70, se propusieron
    herramientas de mayor nivel de abstracción que
    los semáforos.
  • Herramientas que expresen de forma clara estos
    dos casos
  • Acceso a recursos en exclusión mutua
  • Espera condicional
  • Ejemplos
  • Regiones críticas condicionales
  • Monitores y variables condición
  • Objetos protegidos (Ada)
  • Objetos con cerrojos (Java, C)

5
Región crítica
  • Brinch Hansen (1972) ? Concurrent Pascal
  • Abstracción del acceso a un recurso compartido

var m,n integer resource V
m,n ... region V do begin acceso a m y n
end
Datos compartidos
Asociamos un recursoV a las variables m,n
6
Regiones críticas propiedades
  • El lenguaje permite declarar recursos compartidos
  • Un recurso compartido está asociado a una o
    varias variables compartidas por varios procesos.
  • Los procesos sólo pueden acceder a una variable
    compartida dentro de una región crítica vinculada
    al correspondiente recurso compartido.
  • En cada instante, como mucho un proceso puede
    estar trabajando con un recurso compartido.

7
Regiones críticas propiedades (2)
  • Esto significa que
  • Si no hay ningún proceso dentro de una RC,un
    proceso que lo desee puede entrar a dicha RC.
  • Si hay un proceso dentro de una RC y N procesos
    quieren entrar, todos esos N procesos deben
    esperar.
  • Cuando un proceso sale de una RC entrará uno de
    los procesos que esperan.

8
Regiones críticaspropiedades de progreso
  • Las decisiones de quien entra y cuando se
    abandona una RC se toman en un tiempo finito.
  • La política de selección de los procesos en
    espera es justa (no hay inanición).

9
Implementación de la región crítica
  • Cada recurso compartido se maneja con un cerrojo
    (semáforo binario)
  • region RC do
  • begin
  • código
  • end
  • RC_cerrojo.Acquire()
  • código
  • RC_cerrojo.Release()

10
Región crítica condicional (RCC)
Var i,j integer resource V
i,j ... ... region V when B do S
11
RCC
  • Su funcionamiento es similar a la RC sólo que
    además para que un proceso ejecute S, la
    condición B debe ser cierta.
  • La evaluación de la condición B se considera
    parte de la región crítica se evalúa en
    exclusión mutua.
  • Mientras la condición de entrada sea falsa, el
    proceso se mantiene bloqueado.

12
RCC
  • Un proceso que haya evaluado la condición a falso
    no vuelve a entrar a su RC hasta que otro proceso
    abandone ésta (espera pasiva)
  • Se vuelve a ejecutar cuando (posiblemente)
    alguien haya modificado dicha condición

13
Variante de Hoare await
  • Await (condición) dentro de cualquier punto de la
    región crítica.
  • Evalúa la condición y, si es falsa, desaloja al
    proceso de la RCC hasta que sea cierta.

region V do begin S1 S2 await (B)
S3 S4 end
14
Implementación de la RCC
  • Brinch Hansen sugirió el empleo de dos colas para
    la implementación de las RCC

Qv
(si la condición se vuelve cierta)
RC
(Bfalse)
When B
(Btrue)
Qs
15
Potencia de las RCC
  • Las RCC son más o menos potentes que los
    semáforos? Es decir, pueden resolver más o menos
    problemas de sincronización?
  • Un semáforo se puede implementar con RCC
  • Las RCC se pueden implementar utilizando
    semáforos
  • O sea son igual de potentes

16
Inconvenientes de las RCC
  • Aunque mejoran algunos aspectos negativos de los
    semáforos, las RCC tienen algunas limitaciones
  • Su implementación es poco eficiente
  • En el peor caso, cada vez que un proceso sale de
    RCC se reevalúan las condiciones de todas las RCC
    bloqueadas
  • Cualquiera puede escribir una región crítica que
    trabaje con un recurso compartido
  • Las RC pueden estar dispersas por todo el
    programa (difícil de analizar el comportamiento
    del código)
  • Nuevas RC que estén mal escritas pueden alterar
    los invariantes que debería cumplir el recurso
    compartido

17
Monitores
  • Propuestos por Tony Hoare (1974) y Brinch Hansen
    (1972-74) ? Concurrent Pascal
  • Tipo abstracto de datos
  • Operaciones públicas
  • Implementación privada
  • Sincronización
  • Acceso al recurso en exclusión mutua
  • Colas de espera con variables condición

18
Monitor (Concurrent Pascal)
monitor nombre_monitor var variables
locales procedure entry P1
(parámetros) var variables locales begin
código del procedimiento end ...
procedure entry Pk (parámetros) var variables
locales begin código del
procedimiento end begin código de
inicialización end
19
Exclusión mutua
  • Objetivo encapsular todas las regiones críticas
    de un recurso dentro de una misma zona de código
    fuente ? el monitor.
  • Sencilla de implementar ? asociamos un cerrojo a
    cada objeto de tipo monitor. El compilador genera
    las operaciones de entrada y salida del monitor.

20
Variables condición
  • Una v.c. modela una cola de espera
  • Sólo se pueden declarar y utilizar dentro de un
    monitor
  • Declaración
  • var x condition
  • Operaciones
  • WAIT(x). Bloquea al proceso y libera el monitor.
  • SIGNAL(x). Si hay procesos bloqueados en x,
    desbloquea a uno de ellos si no, no hace nada.

21
Monitor con variables condición
22
Variables condición diferencias con los semáforos
  • Las variables condición guardan semejanzas con
    los semáforos
  • Tienen una operación de bloqueo y otra de
    desbloqueo
  • Pero presentan diferencias sustanciales
  • La operación de bloqueo es incondicional
  • La operación de desbloqueo no tiene ningún efecto
    si no hay nadie esperando
  • No tienen ningún valor asociado

23
Semántica del SIGNAL
  • Qué ocurre cuando un proceso P realiza una
    operación signal sobre una variable condición VC
    y existe un proceso suspendido Q asociado a dicha
    variable?
  • No podemos hacer que Q se reanude y P siga su
    ejecución, porque entonces P y Q estarían los dos
    dentro del monitor.
  • Qué hacemos, pues?

24
Semántica del SIGNAL
  • Semántica MESA
  • Lenguaje MESA de Xerox.
  • Desbloquear y continuar el proceso desbloqueado
    pasa a la cola de ingreso del monitor.
  • Semántica Hoare
  • Lenguaje Concurrent Pascal.
  • Retorno forzado el SIGNAL funciona como una
    instrucción de retorno. El proceso desbloqueado
    entra en el monitor.
  • Desbloquear y esperar
  • El proceso desbloqueado entra en el monitor.
    Quien llamó al SIGNAL pasa a la cola de ingreso
    al monitor.
  • Modula-2, Concurrent Euclid.
  • Desbloquear y espera urgente
  • Igual que la anterior, pero pasando a una cola
    preferente de ingreso al monitor.
  • Pascal-FC, Pascal Plus.

25
Políticas de las colas
  • Si varios procesos están suspendidos por la
    condición VC y algún proceso ejecuta signal(VC),
    qué proceso se reanuda?
  • Si el monitor queda libre y hay varios procesos
    en la cola de ingreso, cuál de ellos entra?
  • Propuesta de Hoare llamadas con prioridad
  • wait (VC, prioridad integer)
  • Tras un signal, se reanuda el proceso que se
    bloqueó con el número más pequeño

26
Operación Broadcast
  • Algunos sistemas añaden una operación más a las
    variables condición
  • Broadcast(VC) desbloquea a todos los procesos que
    están bloqueados en VC
  • Útil en muchos problemas de sincronización
  • Preguntas
  • Cómo simularíamos un broadcast con una VC
    convencional?
  • Tiene sentido con todas las semánticas de signal?

27
Potencia de los monitores
  • Un monitor es al menos tan potente como un
    semáforo?
  • Demostración implementar un semáforo mediante un
    monitor
  • Los monitores son más potentes que los
    semáforos?
  • Demostración si un monitor se puede implementar
    con semáforos, no son más potentes

28
Cuestiones problemáticasllamadas recursivas
  • Qué ocurre si dentro de un monitor se realiza
    una llamada a alguna operación del monitor?
  • Si el acceso al monitor está implementado con un
    cerrojo al inicio de cada procedimiento,se
    produce un autobloqueo
  • Solución ? no intentar adquirir el cerrojo si soy
    el proceso propietario del monitor

29
Cuestiones problemáticasLlamadas anidadas
  • Cómo se gestionan las llamadas cruzadas entre
    monitores?
  • ej. el proceso Pa está en el monitor A
  • El proceso Pb está en otro monitor B
  • Pa llama a un servicio de B y
  • Pb llama a un servicio de A
  • Qué sucede?

30
Ejercicios
  • En un sistema concurrente existen dos tipos de
    procesos, A y B, que compiten por utilizar cierto
    recurso. Al recurso se accede mediante la rutina
    de solicitarlo, esperar hasta que se pueda usar,
    usarlo y luego liberarlo. En cualquier momento
    puede haber un máximo de N procesos de cualquier
    tipo usando el recurso (N es constante). Por otro
    lado, para que un proceso de tipo A pueda entrar
    a emplear el recurso, debe haber al menos el
    doble de procesos de tipo B que procesos de tipo
    A dentro del recurso. Diseñe un algoritmo que
    cumpla con estas reglas de funcionamiento
    empleando regiones críticas

31
Ejercicios
  • Supongamos dos operaciones pedir_memoria(cantidad
    ) y dejar_memoria(cantidad). Cuando un proceso
    pide memoria, se bloquea hasta que haya la
    cantidad pedida de páginas libres, una vez que
    ocurre las toma. Un proceso devuelve las páginas
    llamando a dejar_memoria. Implementar dichas
    operaciones usando RCC en los siguientes
    supuestos
  • Implementar la sincronización sin establecer
    ninguna política de quién recibe primero.
  • Modificar lo anterior para que el trabajo que
    pide menos memoria sea el primero.
  • Cambiar la política anterior para que el primero
    en llegar sea el primero en salir o ser atendido.
  • Suponer que pedir y dejar devuelven páginas
    contiguas. Es decir, si un proceso reclama dos
    páginas, se retrasa hasta que haya dos páginas
    adyacentes disponibles. Desarrollar
    implementaciones de esa versión de pedir_memira y
    dejar_memoria. Elegir una representación del
    estado de páginas de memoria.
Write a Comment
User Comments (0)
About PowerShow.com