Zusammenfassung der Ressource
SEMAFORO
- Está técnica permite resolver la mayoría de los problemas de sincronización entre procesos y forma
parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes. Un
semáforo binario es un indicador (S) de condición que registra si un recurso está disponible o no. Un
semáforo binario sólo puede tomar dos valores: 0 y 1.
- Sólo se permiten tres operaciones sobre un semáforo
- Inicializar
- Espera
- Señal
- (S) if la cola de tareas está vacía then S := 1 else
reanudar la primera tarea de la cola de tareas
- (S) if S = 1 then S: = 0 else suspender la tarea
que hace la llamada y ponerla en la cola de
tareas
- (S: SemaforoBinario; v: integer) Poner el valor
del semáforo S al valor de v (0 o 1)
- Funcionamiento de los semáforos
- Dos o más procesos pueden cooperar por medio de simples
señales, de forma que se pueda obligar a detenerse a un proceso
en una posición determinada hasta que reciba una señal
específica. Cualquier requisito complicado de coordinación puede
satisfacerse por medio de la estructura de señales adecuada.
- Un semáforo debe inicializarse con un valor no negativo.
- La operación wait decrementa el valor del semáforo. Si el valor del
semáforo se hace negativo, el proceso que ejecuta el wait se bloquea.
- La operación signal incrementa el valor del semáforo. Si el valor no
es positivo, se desbloquea a un proceso bloqueado por una posición
wait.