
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