domingo, 26 de octubre de 2008

2.4.2.1 Mecanismos de Semaforos

(Segun William Stallings, 2002) Los semáforos son mecanismos que permiten sincronizar procesos para prevenir colisiones cuando uno o más procesos solicitan simultáneamente un recurso.

Un mecanismo semáforo consta básicamente de dos operaciones primitivas señal (Signal) y espera (Wait) (Originalmente definidas como P y V por Disjkstra), que operan sobre un tipo especial de variable semáforo, “s”. La variable semáforo puede tomar valores enteros y, excepto posiblemente en su inicialización, solo puede ser accedida y manipulada por medio de las operaciones SIGNAL y WAIT. Ambas primitivas llevan un argumento cada una, la variable semáforo, y pueden definirse del modo siguiente:

SIGNAL (s) ..:
Incrementa el valor de su argumento semáforo, s , en una operación indivisible.

WAIT (s) :
Decrementa el valor de su argumento semáforo, s , en tanto el resultado no sea negativo. La conclusión de la operación WAIT, una vez tomada la decisión de decrementar su argumento semáforo, debe ser individual.

Propiedades.
(Segun William Stallings, 2002) Los semáforos son un mecanismo relativamente sencillo pero poderoso de asegurar la exclusión mutua entre procesos concurrentes para acceder a un recurso compartido. En vez de que lo usuarios inventen sus propios protocolos de sincronización (tarea difícil y traicionera) los semáforos son una herramienta proporcionada por el diseñador de sistemas. Los usuarios solo necesitan contribuir a controlar el acceso a los recursos compartidos obedeciendo un protocolo estándar y sencillo.

Disciplina de Servicio de los Semáforos
(Segun William Stallings, 2002) La definición de semáforo con espera activa no impone la aplicación de ninguna ordenación a los procesos que esperan, existe, por tanto, una posibilidad de que un proceso pueda quedar bloqueado debido a la competencia con otros. Esta situación, en la cual algunos procesos progresan hacia su terminación pero uno o más procesos permanecen bloqueados fuera del recurso, se denomina Aplazamiento Indefinido. Este fenómeno también es conocido como Bloqueo Activo, y los procesos afectados se dicen que son Postergados. Para evitar bloqueos activos algunas implementaciones de semáforos obligan a aplicar una disciplina de servicio entre los procesos en espera.

La elección de una disciplina de servicio es muy importante ya que una disciplina sesgada puede posibilitar que un grupo de procesos conspire contra otros y usurpe permanentemente el recurso.
La postergación de procesos puede evitarse añadiendo el siguiente requisito a la implementación de semáforo ..: “Una petición para entrar a la sección critica debe ser concedida en tiempo finito”. Dada la suposición de que cada proceso tarda un tiempo finito en ejecutar la sección critica, este requisito puede sastifacerse utilizando la disciplina FIFO (First Input First Output - “Primero en entrar... Primero en Salir”) para elegir entre los procesos en espera. Este método garantiza la entrada a la sección critica en tiempo finito, como también es conocido como Implementación Estricta de Semáforos.

Implementación de Semáforos con Colas
(Segun William Stallings, 2002) La implementación de los semáforos con espera activa tienen dos importantes desventajas .: el potencial aplazamiento indefinido y la baja eficiencia debido al consumo de ciclos de procesador por parte de procesos bloqueados. Aunque un proceso bloqueado no experimenta ningún proceso real, no obstante continua consumiendo recursos del sistema a causa de la espera activa. Tanto el bloqueo activo como la ineficaz espera activa pueden verse aliviados por la implementación de semáforos con cola. Un proceso suspendido no consume ciclos de procesador, de modo que este método es potencialmente más eficiente que el de la espera activa.

No hay comentarios: