Diferencia entre revisiones de «Monitores»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
Línea 16: Línea 16:
  
 
* Variables de condición: lista de procesos inicialmente vacía.
 
* Variables de condición: lista de procesos inicialmente vacía.
* Primitivas:
+
* Primitivas: ''wait(c)'', cuando el proceso p invocante a c y proceso p bloquea; ''signal(c)'', selecciona a uno de los procesos en c y lo pone preparado.
  * wait(c) : cuando el proceso p invocante a c y proceso p bloquea.
 
  * signal(c: selecciona a uno de los procesos en c y lo pone preparado.
 
  
  
 
== Fuentes ==
 
== Fuentes ==
 
http://java.sun.com/developer/Books/performance2/chap4.pdf
 
http://java.sun.com/developer/Books/performance2/chap4.pdf

Revisión del 13:33 6 abr 2011

Idea desarrollada en los años 70 Brinch-Hansen y Hoare que notaron los siguientes problemas con respecto al uso de los semáforos:

  • Los semáforos son difíciles de usar. Es frecuente que el programador cometa errores al emplearlos.
  • El compilador no asiste al programador en el desarrollo de programas concurrentes mediante semáforos, pues no ofrece ningún tipo de validación en tiempo de compilación.

Los monitores tienen que estar integrados en el lenguaje de programación.

Definición

Un monitor es una estructura del lenguaje cuyas principales características son:

  • Los datos son privados.
  • Ofrecen una serie de métodos públicos para acceder a dichos datos.
  • En cada momento sólo puede haber un proceso activo en algún método del monitor.

Permiten organizar procesos en espera mediante:

  • Variables de condición: lista de procesos inicialmente vacía.
  • Primitivas: wait(c), cuando el proceso p invocante a c y proceso p bloquea; signal(c), selecciona a uno de los procesos en c y lo pone preparado.


Fuentes

http://java.sun.com/developer/Books/performance2/chap4.pdf