lunes, 4 de mayo de 2015

Semaforos de procesamiento

¿Que es un semaforo?

Un semáforo provee una simple pero útil abstracción para controlar el acceso de múltiples procesos a un recurso común en programación paralela, o entornos multi-usuarios. El concepto de semáforo fue inventando por el holandés Esdger W. Dijkstra.


Descripción de las operaciones

init(): inicia el semáforo antes de que los procesos hayan ejecutado una operación wait() o signal() con el número máximo de procesos que tiene derecho a acceder al recurso. Si este semáforo se inicializa con 1, se convierte en un semáforo binario.
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 Cabe destacar que la prueba del valor entero de S (s<=0) y su posible modificación se debe realizar sin interrupción.
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. Para despertar un proceso existen varias formas de implementación: por ejemplo, un sistema tipo FIFO.
Cuando un proceso modifica el valor del semáforo S, ningún otro proceso puede modificar el valor de tal semáforo simultáneamente.


Complementacion Multimedia

No hay comentarios:

Publicar un comentario