Semáforos: indicadores de condición para la comunicación entre procesos
1. SEMAFOROS
1. BENDEZU MAYHUA HENDERSON 2. ECHACCAYA MARTINEZ HILARION 3. HANCCO SUAREZ STALIN
4. CARRERA CANALES DAVID 5. RAYMUNDO MELENDEZ JORGE
2. CONCEPTO:
Es un indicador de condición (S) binario que registra si un recurso está disponible o no.
Además da acceso al recurso a uno de los procesos y se lo niega a los demás mientras el primero
no termine.
Junto con la memoria compartida y las colas de mensajes, son los recursos compartidos que
suministra la familia UNIX para la comunicación entre procesos.
3. HISTORIA:
En 1965 Edsger Dijkstra sugirió el uso de una variable entera para contar el número de señales de
despertar, guardadas para un uso futuro. En esta propuesta se introduce el concepto de semáforo.
4. IMPLEMENTACION:
Los semáforos se implementan con una cola de tareas a la cual se añaden los procesos que están en
espera del recurso. Sólo se permiten tres operaciones sobre un semáforo:
1- Inicialización: Es la operación que se lleva a cabo antes de que comience la ejecución de los
procesos ya que su función exclusiva es dar un valor inicial al semáforo.
2- Espera (P): Se denota con la letra “P” ya que proviene del holandés proberen (comprobar). Un
proceso que ejecuta la operación espera encuentra al semáforo en 1, lo pone en 0 y prosigue su
ejecución. Si el semáforo está en 0 el proceso queda en estado de espera hasta que se libera el
semáforo.
3- Señal (V): Se denota con la letra “V” ya que proviene del holandés verhogen (incrementar). Cuando
se ejecuta la operación señal puede haber varios procesos en la cola, el proceso dejará pasar al
estado preparado. Si no hay ningún proceso en espera en el semáforo este se deja libre (S=1) para el
primero que lo requiera.
7. EXCLUSION MUTUA
La operación de espera se usará como procedimiento de bloqueo antes de acceder a una
sección crítica y la operación señal como procedimiento de desbloqueo después de la sección.
8. SINCRONIZACION
En este caso las operaciones de espera y de
señal no se utilizan dentro del mismo proceso
sino en procesos separados; el que ejecuta la
operación de espera queda bloqueado hasta
que el otro proceso ejecuta la operación de
señal. En el ejemplo siguiente sincronizaremos
procesos de bloquear y despertar.