Programación concurrente y tiempo real

Page 129

4.3. El concepto de monitor

[115]

monitor nombre_monitor { /* Declaración de variables compartidas */ procedure p1 (...) { ... } procedure p2 (...) { ... } ... procedure pn (...) { ... } inicialización (...) { ... } } Figura 4.1: Sintaxis general de un monitor.

Al igual que ocurre con los semáforos, una variable de condición tiene asociada alguna estructura de datos que permite almacenar información sobre los procesos o hilos bloqueados. Típicamente, esta estructura de datos está representada por una cola FIFO (first-in firstout). Tenga en cuenta que la liberación de un proceso bloqueado en una variable de condición posibilita que otro proceso pueda acceder a la sección crítica. En este contexto, la primitiva signal es la que posibilita este tipo de sincronización. Si no existe ningún proceso bloqueado en una variable de condición, entonces la ejecución de signal sobre la misma no tiene ningún efecto. Esta propiedad también representa una diferencia importante con respecto a la misma primitiva en un semáforo, ya que en este último caso sí que tiene un efecto final (incremento del semáforo).

La construcción del monitor garantiza que, en cualquier momento de tiempo, sólo haya un proceso activo en el monitor. Sin embargo, puede haber más procesos o hilos suspendidos en el monitor.

Antes de pasar a la siguiente sección, en la que se estudiará el caso particular de los monitores en POSIX (mediante el uso de mutexes y variables de condición), es importante destacar que las variables de condiciones padecen algunas de las desventajas asociadas al uso de semáforos, introducidas en la sección 4.1 del presente capítulo. Por ejemplo, el uso de las primitivas wait y signal puede propiciar errores cometidos por parte del programador y que, en ocasiones, implica que el proceso de depuración para localizarlos sea tedioso.

4.3.1.

Monitores en POSIX

Para modelar el comportamiento de un monitor utilizando las primitivas que ofrece el estándar POSIX y, en concreto, la biblioteca Pthreads, es necesario utilizar algún mecanismo para garantizar la ex-


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.