Title: Sistemas Concurrentes: Regiones crticas y monitores
1Sistemas ConcurrentesRegiones crÃticas y
monitores
- I.T. Informática de Sistemas
2BibliografÃ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
3Limitaciones 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)
4Superando 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)
5Regió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
6Regiones 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.
7Regiones 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.
8Regiones 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).
9Implementació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()
10Región crÃtica condicional (RCC)
Var i,j integer resource V
i,j ... ... region V when B do S
11RCC
- 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.
12RCC
- 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
13Variante 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
14Implementació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
15Potencia 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
16Inconvenientes 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
17Monitores
- 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
18Monitor (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
19Exclusió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.
20Variables 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.
21Monitor con variables condición
22Variables 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
23Semá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?
24Semá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.
25PolÃ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
26Operació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?
27Potencia 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
28Cuestiones 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
29Cuestiones 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?
30Ejercicios
- 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
31Ejercicios
- 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.