PDF de programación - PROGRAMACION CONCURRENTE Y DISTRIBUIDA - II.5 Sincronización basada en memoria compartida: Monitores

Imágen de pdf PROGRAMACION CONCURRENTE Y DISTRIBUIDA - II.5 Sincronización basada en memoria compartida: Monitores

PROGRAMACION CONCURRENTE Y DISTRIBUIDA - II.5 Sincronización basada en memoria compartida: Monitoresgráfica de visualizaciones

Publicado el 14 de Enero del 2017
735 visualizaciones desde el 14 de Enero del 2017
196,5 KB
18 paginas
Creado hace 15a (19/09/2008)
PROGRAMACION CONCURRENTE Y

DISTRIBUIDA

II.5 Sincronización basada en memoria compartida:

Monitores

J.M. Drake

Notas:

1

Monitor

Son módulos que encierran los recursos o variables compartidas como
componentes internos privados y ofrece una interfaz de acceso a ellos que
garantiza el régimen de exclusión mutua.
La declaración de un monitor incluye:
Declaración de las constantes, variables, procedimientos y funciones
que son privados del monitor (solo el monitor tiene visibilidad sobre
ellos).

Declaración de los procedimientos y funciones que el monitor exporta
y que constituyen la interfaz a través de las que los procesos acceden
al monitor.

Cuerpo del monitor, constituido por un bloque de código que se
ejecuta al ser instanciado o inicializado el monitor. Su finalidad es
inicializar las variables y estructuras internas del monitor.

El monitor garantiza el acceso al código interno en régimen de exclusión
mutua. El monitor tiene asociada una lista en la que se incluyen los
procesos que al tratar de acceder al monitor son suspendidos.

Procodis’08: II.5- Monitores José M.Drake

2

Notas:

Los monitores constituyen un avance respecto de las regiones críticas condicionales en los que
se eliminan algunos de los problemas que estas presentan. Por un lado, en los monitores, se
localiza todo el código de acceso a las variables compartidas en un solo bloque del código, y
por otro lado, esta localidad va a permitir utilizar implementaciones mas eficientes.
Las declaraciones de un monitor incluye la declaración de un conjunto de constantes, tipos,
variables, procedimientos, y funciones (quedan excluidos otros monitores o procesos) que son
locales al propio monitor (solo desde el monitor se tiene visibilidad sobre los objetos declarados
en él).
El monitor incluye una lista de los procedimientos exportados, y en consecuencia pueden
ser utilizados en el código del programa , de procedimientos, o procesos externos al monitor.
Los procedimientos son llamados desde el código externo con el formato:

Identificador_monitor. Identificador_procedimiento(lista de parámetros actuales);

El acceso a los componentes declarados dentro del monitor solo puede hacerse a través de la
ejecución de los procedimientos exportados.
El cuerpo del monitor es un conjunto de sentencias que se ejecutan al comienzo del bloque
en que está declarado ( si está declarado en el programa principal) se ejecuta antes de que
comience a ejecutarse el propio programa principal. La función del cuerpo del monitor es
inicilizar las variables y estructuras internas del monitor.
Lo más característico es que el monitor garantiza el acceso al código interno en un régimen
de exclusión mutua. Esto implica que el monitor tiene asociada una lista en la que se incluyen
todos los procesos que tratan de acceder a procedimientos del monitor y que por el regimen de
exclusividad, tienen que esperar a que este quede libre.

2

Sintaxis del monitor.

monitor Identificador;

-- Lista de procedimientos y funciones exportadas

export Identificador_procedimiento_1;
export Identificador_procedimiento_2;
....

-- Declaración de constantes, tipos y variables internas

-- Declaración de procedimientos y funciones

-- Sentencias de inicialización

Procodis’08: II.5- Monitores José M.Drake

3

....

....
begin

....
end;

Notas:

3

Aspectos característicos del monitor.

Las estructuras de datos internas del monitor cuya finalidad es ser
compartidas por múltiples procesos concurrentes, solo pueden ser
inicializadas, leídas y actualizadas por código propio del monitor.

Los únicos componentes del monitor públicos (visibles desde módulos
externos) son los procedimientos y funciones exportadas.

El monitor garantiza el acceso mutuamente exclusivo a los procedimientos
y funciones de la interfaz. Si son invocados concurrentemente por varios
procesos, solo la ejecución de un procedimientos del monitor es permitido.
Los procesos no atendidos son suspendidos hasta que la ejecución del
procedimiento atendido acabe.

Dado que todo el código relativos a un recurso o a una variable compartida
está incluido en el módulo del monitor, su mantenimiento es mas fácil y su
implementación es mas eficiente.

Procodis’08: II.5- Monitores José M.Drake

4

Notas:

Los aspectos característicos de la estructura monitor son:

•Las estructuras de datos compartidas son definidas dentro del monitor, y son
inicializadas y gestionadas por componentes definidos dentro del propio monitor.

•Las estructuras de datos no son directamente visibles desde el exterior del
monitor, y solo pueden ser accedidas a través de los procedimientos exportados
por el propio monitor.

•El acceso mutuamente exclusivo es forzado automáticamente por el código del
monitor generado por el compilador. No es posible acceder a los datos fuera del
régimen de exclusión mutua. Observese que estructuras que ofrecen otros
lenguajes (tal como los paquetes ADA) con información oculta y que solo es
accesible salvo por los procedimientos de la interfase, no son equivalentes al
monitor por no garantizar a los mismos un acceso en régimen de exclusión
mutua.

•Los monitores localiza en su código todos los componentes del programa
relativos a una variable compartida. El mantenimiento de los programas basados
en monitores es mucho más simple que en los basados en regiones críticas.

4

Problema del parque público con monitor (1).

program Control_acceso_parque;
const NUM_TORNOS= 10;

monitor Censo

export incrementa;
export print;
var cuenta: Natural;
procedure incrementa; begin cuenta:= cuenta +1; end;
procedure print; begin writeln(cuenta); end;

begin

cuenta:=0;

end;

.... -- Continúa

Procodis’08: II.5- Monitores José M.Drake

5

Notas:

5

Problema del parque público con monitor (2).

process type Tipo_Tornos;

var visitante: Natural;
begin

for visitante:=1 to 20 do censo.incrementa;

end;

var torno: array [1..NUM_TORNOS of Tipo_Torno;

entrada: 1..NUM_TORNOS;

begin

cobegin

for entrada:=1 to NUM_TORNOS do torno[entrada];

coend;
censo.print;
end;

Procodis’08: II.5- Monitores José M.Drake

6

Notas:

Para imprimir el resultado final hay que acudir a un procedimiento ofrecido por el
monitor, ya que a la variable Cuenta que es interna al monitor no es posible acceder
directamente desde el código del programa principal.

6

Variables “Condition”

El monitor resuelve el acceso seguro a recursos y variables compartidos,
pero no tiene las capacidades plenas de sincronización.
Las variables tipos condition que solo pueden declararse dentro de un
monitor proporciona a los monitores la capacidad de sincronización plena.
condition es un tipo de variable predefinido que solo puede intanciarse en
los monitores

var inviables: condition;

Valores: No toma ningún tipo de valor, pero tiene asociada una lista

de procesos suspendidos

Operaciones:

delay suspende el proceso que lo ejecuta y lo incluye en la lista de una

variable Condition.

resume Reactiva un proceso de la lista asociada a una variable Condition.
empty Función que retorna True si la lista de procesos de la variable está

vacía.

Procodis’08: II.5- Monitores José M.Drake

7

Notas:

El monitor, al igual que ocurría con las regiones críticas, es un componente que permite
de forma inmediata resolver el problema de las secciones críticas de exclusión mutua,
pero por si solas no son suficientes para simular un semáforo y establecer condiciones
de sincronización. Para dotar al monitor de esta capacidad es necesario introducir un
nuevo tipo de variables predefinidas que se denomina "condition".
Las variables del tipo predefinido condition no tienen valores asignados, pero si tienen
asociada una cola FIFO de procesos. Tras la inicialización las variables tipo condition
tienen su cola vacía.
Ejemplos de declaración de este tipo de variables son:

var

C : condition;
Obstaculos : array [1..10] of condition;

Las variables de este tipo son declaradas dentro de los monitores, y se utilizan para
suspender y activar procesos que han accedido al monitor, y que por el estado en que se
encuentran, no pueden continuar su ejecución.

7

Operación delay.

Suspende el proceso que la ejecuta (que ha invocado el
procedimiento del monitor en que se encuentra) y lo introduce
en la cola asociada a la variable Condition.
delay (variableCondition) ;

Semántica de la operación:
Cuando un proceso ejecuta la operación delay, se suspende

incondicionalmente.

Cuando un proceso ejecuta la operación delay, se libera la capacidad

de acceso que dispone el proceso.

En la cola de una variables Condition pueden encontrarse suspendidos

un número ilimitado de procesos.

Procodis’08: II.5- Monitores José M.Drake

8

Notas:

Operación delay: que suspende al proceso que la ejecuta y lo introduce en la cola
asociada a la variable condition sobre la que se ejecuta. El formato de esta sentencia es:

delay (C);

Características fundamentales de esta operación son:

•Cuando se ejecuta esta sentencia, el proceso que la ejecuta se suspende
incondicionalmente (al contrario de la operación wait de un semáforo que solo
se suspendía si el valor del semáforo era 0).
•Cuando un proceso ejecuta esta operación dentro del código de algún
procedimiento del monitor, el proceso no solo se suspende, sino que también
libera la autorización de ejecución en régimen de exclusión mutua del
monitor.
•En la cola asociada a una variable "condition" pueden encontrarse suspendidos
un n
  • Links de descarga
http://lwp-l.com/pdf1021

Comentarios de: PROGRAMACION CONCURRENTE Y DISTRIBUIDA - II.5 Sincronización basada en memoria compartida: Monitores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad