Region Critica Programacion Concurrente
Region Critica Programacion Concurrente
Region Critica Programacion Concurrente
Regiones Críticas
y Regiones Críticas Condicionales
Ing. Ivan Medrano Valencia
1
Indice
2
Problemas con semáforos
3
Definición de las regiones críticas
4
Definición de las regiones críticas
Notación original Brinch Hansen. Dos componentes:
Una forma de declarar las variables que deben ser accedidas bajo
exclusión mutua
var
V: compartida T;
donde V es el nombre de la variable y T es el tipo.
Una nueva estructura que se usa para codificar la operación a
realizar sobre la variable
region V hacer S
donde V es el nombre de la variable a ser accedida en la región
crítica y S implementa la acción requerida.
5
Ejemplo
Las RCs se pueden anidar, pero debe tenerse en cuenta que las RCs no
se deben anidar en orden inverso en los procesos, de lo contrario
podría producirse un interbloqueo.
6
REGION CRITICA CONDICIONAL
P y Q se quedan esperando
Las regiones críticas resuelven la exclusión mutua pero no la
sincronización en general.
7
REGION CRITICA DONDICIONAL
Con los mecanismos vistos hasta ahora (RCs
y semáforos) el hecho de que un proceso que
quiere acceder a un objeto compartido deba
esperar a que se cumpla una cierta condición
(espera condicional) no resulta fácil de
implementar, al menos si se pretende que
dicha espera sea pasiva. La condición,
habitualmente, hará referencia al objeto
compartido.
8
RCC
Supóngase que un proceso quiere acceder a
una variable compartida x pero sólo si se
cumple la condición B(x). Una forma simple
de implementar la espera condicional pero
que implica una espera activa es la siguiente:
9
RCC
A principios de los 70 Hoare y Brinch Hansen propusieron
un mecanismo de alto nivel que permite realizar la espera
condicional de forma pasiva: la región crítica
condicional (RCC).
Una RCC sólo se diferencia de una RC en que dentro de la
RCC existe una sentencia espera_a_que B. Dicha primitiva
sólo puede estar dentro de una RC. Si existen varias RCs
anidadas, espera_a_que se asocia con la más próxima.
Esta sentencia produce una espera pasiva. Su semántica
es la siguiente:
1. Si la condición B es cierta el proceso continúa por la
siguiente sentencia a la espera_a_que.
2. Si la condición B es falsa el proceso detiene su ejecución,
abandona la RC para permitir a otros procesos entrar en
ella y pasa a una cola Qs de espera asociada con la RC.
10
RCC
• Qv que es donde espera un proceso cuando quiere entrar a una RC que está ocupada.
Constituye la cola de entrada a la RC.
• Qs que es donde esperan los procesos que evaluaron la condición de la sentencia
espera_a_que a falso.
11
IMPLEMENTACION DE RCC CON SEMAFOROS
process Consumidor;
var local : char;
begin
repeat
region Buffer when Buffer.Cuantos <> 0 do
SacarDeBuffer(local);
write(local);
until local = ‘z’;
writeln
end;
14
Problema: Lectores-Escritores (1)
Precedencia a Lectores
var
v: shared record
Lectores,Escritores : integer
end;
15
Problema: Lectores-Escritores (2)
Precedencia a Escritores
var
v: shared record
Lectores,Escritores : integer
end;
16
Problema: Filosofos de cena
var
v: shared T;
palillos: array [0..N-1] of boolean;
Limitaciones
Pueden estar dispersas en el texto del programa
La integridad de una estructura de datos
compartida es facilmente dañada
Dificiles de implementar eficientemente
18