2
Sistemas Operativos 1 http://elcopypaste.wordpress.com Universidad de San Carlos de Guatemala Monitores Los monitores son una herramienta de sincronización. Un monitor posee una estructura propia, es una colección de procedimientos, variables y estructuras de datos que se agrupan en un módulo especial. Los procesos pueden llamar a los procedimientos de un monitor siempre que lo requieran, pero no pueden accesar directamente las estructuras de datos internas del monitor. Implementan un nivel aún más alto de abstracción facilitando el acceso a recursos compartidos. Un monitor es un tipo de datos abstracto que contiene: o Un conjunto de procedimientos de control de los cuales solamente un subconjunto es visible desde fuera. o Un conjunto de datos privados, es decir, no visibles desde fuera. Se dice que los monitores son de alto nivel, ya que son implementados por el lenguaje de programación (Compilador + Run+time), a diferencia de los semáforos que son de bajo nivel, ya que son implementados por el sistema operativo, aunque cabe aclarar que existen lenguajes de programación que ofrecen esta solución por medio de librerias. Un aspecto que se encuentra en muchas implementaciones de monitores es la sincronización condicional, es decir, mientras un proceso está ejecutando un procedimiento del monitor (con exclusión mutua) puede dar paso a otro proceso liberando el cerrojo. Estas operaciones se suele llamar wait() o delay(). El proceso que ha liberado el cerrojo se queda bloqueado hasta que otro proceso le despierta de nuevo. Este bloqueo temporal está realizado dentro del monitor (dicha técnica se refleja en Java con wait() y notify()). Componentes Inicialización: contiene el código a ser ejecutado cuando el monitor es creado Datos privados: contiene los procedimientos privados, que sólo pueden ser usados desde dentro del monitor y no son visibles desde fuera Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera del monitor. Cola de entrada: contiene a los threads que han llamado a algún procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos aún. Ventajas El control de los recursos esta centralizado en el monitor, lo que hace que sea más fácil su mantenimiento. A diferencia de los semáforos que se código queda distribuido en varias partes del programa. Provee una mayor protección a las variables de control. Desventajas Los monitores tienen exclusividad de uso, es decir, la concurrencia está limitada si muchos procesos hacen uso del mismo monitor. El uso de monitores es bastante costoso, porque se pierde eficiencia por tanto bloqueo de los procesos.

Monitores (Concurrencia)

Embed Size (px)

DESCRIPTION

Conceptos generales acerca de los monitores dentro del contexto de concurrencia y como solución a la exclusión mutua.

Citation preview

Page 1: Monitores (Concurrencia)

Sistemas Operativos 1 http://elcopypaste.wordpress.com Universidad de San Carlos de Guatemala

Monitores

Los monitores son una herramienta de sincronización.

Un monitor posee una estructura propia, es una colección de procedimientos, variables y estructuras de datos que se agrupan en un módulo especial.

Los procesos pueden llamar a los procedimientos de un monitor siempre que lo requieran, pero no pueden accesar directamente las estructuras de datos internas del monitor.

Implementan un nivel aún más alto de abstracción facilitando el acceso a recursos compartidos.

Un monitor es un tipo de datos abstracto que contiene: o Un conjunto de procedimientos de control de los cuales solamente un subconjunto es

visible desde fuera. o Un conjunto de datos privados, es decir, no visibles desde fuera.

Se dice que los monitores son de alto nivel, ya que son implementados por el lenguaje de

programación (Compilador + Run+time), a diferencia de los semáforos que son de bajo nivel, ya que son implementados por el sistema operativo, aunque cabe aclarar que existen lenguajes de programación que ofrecen esta solución por medio de librerias.

Un aspecto que se encuentra en muchas implementaciones de monitores es la sincronización condicional, es decir, mientras un proceso está ejecutando un procedimiento del monitor (con exclusión mutua) puede dar paso a otro proceso liberando el cerrojo. Estas operaciones se suele llamar wait() o delay(). El proceso que ha liberado el cerrojo se queda bloqueado hasta que otro proceso le despierta de nuevo. Este bloqueo temporal está realizado dentro del monitor (dicha técnica se refleja en Java con wait() y notify()).

Componentes

Inicialización: contiene el código a ser ejecutado cuando el monitor es creado

Datos privados: contiene los procedimientos privados, que sólo pueden ser usados desde dentro del monitor y no son visibles desde fuera

Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera del monitor.

Cola de entrada: contiene a los threads que han llamado a algún procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos aún.

Ventajas El control de los recursos esta centralizado en el monitor, lo que hace que sea más fácil su

mantenimiento. A diferencia de los semáforos que se código queda distribuido en varias partes del programa.

Provee una mayor protección a las variables de control.

Desventajas

Los monitores tienen exclusividad de uso, es decir, la concurrencia está limitada si muchos procesos hacen uso del mismo monitor.

El uso de monitores es bastante costoso, porque se pierde eficiencia por tanto bloqueo de los procesos.

Page 2: Monitores (Concurrencia)

Sistemas Operativos 1 http://elcopypaste.wordpress.com Universidad de San Carlos de Guatemala

Referencias

Explicación y ejemplos de uso de monitores en Java:

http://afrodita.unicauca.edu.co/~dparedes/java/threads/monitors.html

Conceptos bien detallados y claros de lo que son los monitores:

http://trevinca.ei.uvigo.es/~formella/doc/cd05/node80.html

Detalle de los componentes de los monitores y los diferentes tipos que existen de estos:

http://es.wikipedia.org/wiki/Monitor_(concurrencia)

Licencia