Monitores (Concurrencia)

Monitores      Los monitores son una herramienta de sincronización. Un monitor posee una estructura propia, es una

Views 331 Downloads 4 File size 288KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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.

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

Sistemas Operativos 1

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