domingo, 3 de mayo de 2015

Semaforos

Un semáforo es una variable especial o tipo de dato que se le puede asignar un valor o un conjunto de operaciones elementales para poder restringir o dar paso "garantizar" el acceso a los recursos de un sistema operativo a una tarea  o proceso con un entorno de multiprocesamiento implementado inicialmente por dijkstra en 1968.



Caracteristicas
•Dependiendo del número de recursos a gestionar, un semáforo puede ser
  1- Semáforo contador (Más de 1 recurso)
  2- Semáforo binario (1 solo recurso)
•Un semáforo se constituye por dos métodos elementales
  - wait()
  Si el valor del semáforo es mayor a cero, indica que un proceso más puede acceder al recurso, el   contador del semáforo se disminuye en uno, y el proceso continúa con éxito. Si el semáforo es   cero, el proceso queda esperando hasta que es despertado por otro proceso.
  - signal()
  Cuando el proceso ha terminado de utilizar el recurso, éste lo indica al semáforo mediante signal(), el   que aumenta el valor del semáforo en 1. Si existe algún proceso esperando su turno para utilizar el   recurso, el proceso que finaliza puede despertarlo, o, de lo contrario, se incrementa el contador.

Observaciones
•Cuando se crea un semáforo, se pueden inicializar su valor con cualquier entero, pero después de eso las únicas que pueden hacerlo son los incrementos y decrementos en una unidad.
•Si los procesos no indican al semáforo el término del uso del recurso protegido, puede provocarse un bloqueo.
•No hace falta que un proceso libere su propio recurso, sino que la operación signal() puede ser ejecutada por otro proceso.
•Un semáforo simple no es suficiente para imponer un orden de acceso a los recursos.



No hay comentarios:

Publicar un comentario