Sunteți pe pagina 1din 6

INFORME NRO.

09 INTRODUCCIN A LOS MONITORES

I.

OBJETIVOS

II.

Se aprender los comienzos de la sincronizacin de los monitores


FUNDAMENTO TEORICO

INTRODUCCIN
Aunque los semforos tienen ciertas ventajas que garantizan su xito en los
problemas de sincronizacin entre procesos, tambin sufren ciertas debilidades. Por
ejemplo, es posible que se produzcan errores de temporizacin cuando se usan. Sin
embargo, la debilidad ms importante reside en su propio uso, es decir, es fcil que
un programador cometa algn error al, por ejemplo, intercambiar errneamente un
wait y un signal. Con el objetivo de mejorar los mecanismos de sincronizacin y
evitar este tipo de problemtica, en los ltimos aos se han propuesto soluciones de
ms alto nivel, como es el caso de los monitores. Bsicamente, un tipo monitor
permite que el programador defina una serie de operaciones pblicas sobre un tipo
abstracto de datos que gocen de la caracterstica de la exclusin mutua. La idea
principal est ligada al concepto de encapsulacin, de manera que un procedimiento
definido dentro de un monitor slo puede acceder a las variables que se declaran
como privadas o locales dentro del monitor. Esta estructura garantiza que slo un
proceso est activo cada vez dentro del monitor. La consecuencia directa de este
esquema es que el programador no tiene que implementar de manera explcita esta
restriccin de sincronizacin. Esta idea se traslada tambin al concepto de variables
de condicin. En esencia, un monitor es un mecanismo de sincronizacin de ms
alto nivel que, al igual que un cerrojo, protege la seccin crtica y garantiza que
solamente pueda existir un hilo activo dentro de la misma. Sin embargo, un monitor
permite suspender un hilo dentro de la seccin crtica posibilitando que otro hilo
pueda acceder a la misma. Este segundo

hilo puede abandonar el monitor, liberndolo, o suspenderse dentro del monitor. De


cualquier modo, el hilo original se despierta y continua su ejecucin dentro del
monitor. Este esquema es escalable a mltiples hilos, es decir, varios hilos pueden

suspenderse dentro de un monitor. Los monitores proporcionan un mecanismo de


sincronizacin ms flexible que los cerrojos, ya que es posible que un hilo
compruebe una condicin y, si sta es falsa, el hijo se pause. Si otro hilo cambia
dicha condicin, entonces el hilo original contina su ejecucin. El siguiente listado
de cdigo muestra el uso del mecanismo de tipo monitor que el lenguaje Java
proporciona para la sincronizacin de hebras. En Java, cualquier objeto tiene
asociado un cerrojo. Cuando un mtodo se declara como synchronized, la llamada al
mtodo implica la adquisicin del cerrojo, evitan
EXCLUSIN MUTUA
Una de las ventajas de los monitores frente a los semforos es que distinguen entre
exclusin mutua y condiciones de sincronizacin. Adems, la primera siempre se
tiene por defecto debido a que los procedimientos anidados en el monitor siempre se
ejecutan de ese modo. Esto significa que no es responsabilidad del programador
asegurar la exclusin mutua, sino que es el sistema subyacente (el compilador, la
biblioteca o el sistema operativo, dependiendo de los casos) el que debe
implementar dicho comportamiento. Por esta razn, el problema de la actualizacin
mltiple tiene una implementacin muy sencilla con monitores como se muestra en
la Figuras 3.5. Si dos o ms procesos intentar ejecutar simultneamente algn
procedimiento del monitor, solo uno de ellos tiene xito, y el resto espera en una
estructura de cola fijo, que llamamos cola de entrada al monitor. Un proceso que
llega al monitor cuando este est siendo utilizado, simplemente
CONDICIONES DE SINCRONIZACION
A diferencia de la exclusin mutua, las condiciones de sincronizacin tienen que
implementarse especficamente en los monitores. Para esto se utilizan las variables
de tipo condicin. Cada variable condicin representa una cola fija de procesos que
esperan que la condicin correspondiente se satisfaga. Para declarar una condicin
utilizamos la siguiente sintaxis:
var c: condicin;

Por defecto, las variables condicin son colas fijo, es decir, los procesos se
reactivan en el mismo orden en el que se van suspendiendo. En la Figura 3.6 se
muestra la implementacin con monitores del problema del productor consumidor
(la versin con un buffer de una componente). En este problema tenemos dos
condiciones de sincronizacin, una que detiene al productor si va demasiado rpido
y quiere sobrescribir la variable antes de que haya sido el ida, y otra para parar al
consumidor si se adelanta, y quiere leer un dato que todava no se ha almacenado.

Es interesante notar que la implementacin de la condicin de sincronizacin con


monitores requiere el uso de una variable booleana y la inclusin de una instruccin
de seleccin, con respecto a lo que ocurra con la solucin con semforos. La
siguiente tabla compara ambas implementaciones:
Bloqueo de Procesos. Operacin Delay
La ejecucin de la operacin delay (c) (siendo c una variable de condicin) hace
que el proceso que la ejecuta se bloquee al final de la cola asociada a la variable
condicin C
La diferencia con la operacin wait(sem) sobre semforos es clara: delay(c)
provoca el bloqueo incondicional del proceso, mientras que el wait (sem) solo
bloquea el proceso si el valor del semforo es 0
Sim embargo la definicin anterior no es suficiente. Supongamos que un proceso
adquiere el acceso exclusivo al monitor y ejecuta una operacin delay. Si el proceso
es bloqueado de forma indiscriminada, seguir reteniendo el acceso exclusivo al
monitor, con lo que ningn otro proceso podr acceder al monitor para poder
despertar a la variable condicin nunca sea desbloqueada. Para evitar esto, antes de
que un proceso sea bloqueado en la cola asociada a la variable condicin tiene que
liberar la exclusin mutua, permitiendo que otros procesos accedan al monitor (y
puedan desbloquearlo). Por lo tanto, la operacin delay (c) se puede interpretar
como:
Liberar la exclusin mutua del monitor
Bloquear el proceso que realiza la llamada al final de la cola C
Desbloqueo de procesos. Operacin resume
Cuando un proceso ha sido bloqueado mediante la ejecucin delay (c) solo puede
ser desbloqueado por otro proceso que ejecute la operacin resume(c) sobre la
misma variable condicin. Bsicamente, la operacin resume(c) extrae el proceso
que se encuentra en el frente de la correspondiente cola y lo prepara para su
ejecucin, En el caso de la cola c este vaca, la operacin resume (c) se trasforma en
una operacin nula (null), es decir no se produce ningn efecto. Como podemos
aprecia r esta caracterstica constituye una de las diferencias ms importantes
respeto a la operacin signal de los semforos esta vacua no se traduce por una
operacin nula ya que como mnimo la ejecucin de signal provoca el incremento
de la variable entera asociada al semforo
Si la operacin resume (c) desbloquea un proceso, el proceso que ejecuta la
operacin abandona el monitor liberando la exclusin mutua que es cedida al
proceso desbloqueado, pudiendo este continuar su ejecucin dentro del monitor
La funcin empty
En algunos problemas resulta necesaria comprobar si la cola de una variable
condicin esta vaca o no. Para ello se ofrece la funcin empty (c) que devuelve un
valor booleano indicando si la cola de la variable condicin est vaca o no.

III.

PROCEDIMIENTO

Ejemplo 01
Supongamos que varios procesos deben incrementar al valor de una variable compartida
y poder examinar su valor en cualquier momento. Evidentemente, el acceso de dicha
variable debe ser realizarse en exclusin mutua. Para ellos definiremos un monitor que
encapsulara dicha variable compartida

Ejemplo 02
implementacin un semforo binario mediante un monitor, utilizaremos:

Las operaciones wait y signal


Una variable booleana, sem, para indicar si el semforo est ocupado
Una variable condicin, csem, para bloquear aquellos procesos que realizan una
llamada wait cuando el semforo est ocupado

IV.

CONCLUSIONES

V.

Un monitor es un mdulo que agrupa datos y operaciones sobre ellos, las


operaciones son procedimientos que se ejecutan en exclusin mutua:
realiza la sincronizacin mediante dos variables de condicin wait y
signal

BIBLIOGRFICAS
http://www.libropctr.com/downloads/LibroPCTR_2016.pdf
http://www.lcc.uma.es/~gallardo/temaCLASE.pdf

S-ar putea să vă placă și