semáforos
En palabras simples, un semáforo es un entero con tres diferencias:
Cuando secrea 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.
No puede leerse el valoractual del semáforo
Cuando un thread intenta decrementar el semáforo, si su valor es negativo, el subproceso se bloquea a sí mismo y no puede continuar hasta que otro subproceso incremente el semáforoCuando un thread incrementa el semáforo, si hay otros threads esperando, uno de ellos se desbloquea.
Un semáforo es un Tipo Abstracto de datos que permite el uso de un recurso de forma exclusiva, enel caso de que existan múltiples procesos que requieran acceso a éste.
Este TDA cumple con:
El valor del semáforo cuenta cuántos procesos pueden usar el recurso.
Existen 3 operaciones en unsemáforo: init(), wait() y signal().
Descripción de las operaciones init(), wait() y signal()
init(): inicia el semáforo antes de que los procesos hayan ejecutado una operación wait() o signal() con elnú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 unproceso 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...
Regístrate para leer el documento completo.