Semaforos

Solo disponible en BuenasTareas
  • Páginas : 8 (1822 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de enero de 2011
Leer documento completo
Vista previa del texto
LOS SEMÁFOROS
Un semáforo es un tipo de datos cuyos valores asociados son los enteros no negativos, en el caso de los semáforos generales, o las constantes 0 y 1, si el semáforo es binario. De forma intuitiva, el valor 0 representa que el semáforo está cerrado (esta en rojo) y cualquier valor positivo indica que el semáforo está abierto (esta en verde). En este último caso, el valor concreto delsemáforo representa el número de procesos que pueden pasar con el semáforo abierto.

Para implementar este comportamiento, el tipo semáforo tiene asociadas dos operaciones que aquí, siguiendo la notación de Pascal-FC, llamaremos wait y signal, aunque en su versión original se llamaban P y V, respectivamente. El significado de estas operaciones es:

wait(s) | suspender en s hasta que s :=s - 1 sea no negativopasseren (probar) |
signal(s) | s := s + 1vrijgeven (incrementar). |

Es decir, la operación wait(s) puede suspender al proceso que la ejecuta si el valor del semáforo es 0, mientras que la ejecución de signal puede hacer que algún proceso suspendido sea reactivado. Lo más importante de estas operaciones es que, por definición, se deben implementar de forma atómica,es decir, sin ningún tipo de interrupción durante su ejecución.

Esto significa que la ejecución paralela de cualquier par de instrucciones sobre el mismo semáforo siempre se realiza de manera secuencial. La principal ventaja de los semáforos frente a otras soluciones es que pueden implementarse de manera muy eficiente, ya que la mayoría de los procesadores incorporan instrucciones máquina quepermiten su implantación directa.

Sin embargo, desde el punto de vista del diseño, los semáforos no son tan ventajosos, pueden servirnos también para intuir la debilidad de esta primitiva cuando se quieren diseñar sistemas más complejos.
Por ejemplo, cuando se utilizan semáforos el mecanismo de sincronización está distribuido a través del sistema. En cada proceso, se implementa la parte de lasincronización que le afecta directamente. Esto significa que no se tiene una visión global de la sincronización lo que dificulta fuertemente la
Búsqueda de soluciones y el análisis de la corrección de las mismas. Por otro
lado, un pequeño" error en la codificación de un proceso, como olvidarse una operación signal o wait, o cambiar de orden dos instrucciones, puede Tener efectos desastrosos. Porejemplo, olvidarse de un signal puede provocar el bloqueo del sistema. Finalmente, utilizamos la misma primitiva para programar tanto la exclusión mutua como las condiciones de sincronización, por lo que, es difícil identificar el significado de los semáforos sin mirar el contexto en el que se encuentran.

Variable protegida cuyo valor solo puede ser accesado y alterado por dos operaciones:Las operaciones de semáfos
P(S) if ( S > 0 ) then then S:=S-1 else esperar por S | V(S) if (alguien espera por S) deja pasar al procesoelse S:=S+1 |

Características principales
Desbloqueando procesos
El semáforo informa a los procesos que se encuentran bloqueados.
El administrador de procesos que elige quien pasa a ejecución
AtomicidadSe garantiza que al iniciar una operación con un semáforo, ningún otro proceso puede tener acceso al semáforo hasta que la operación termine o se bloquee.
En ese tiempo ningún otro proceso puede simultáneamente modificar el mismo valor de semáforo.
Tipos de semáforos
Contadores
Sincronización
Binarios
Semáforos generales o contadores
Útiles cuando un recurso será asignado, tomándolo de unconjunto de recursos idénticos.
Semáforo es inicializado con el número de recursos existentes:
* P(S) decrementa en 1; indicando que un recurso ha sido suprimido del conjunto.
Si S = 0→ no hay más recursos y el proceso se bloquea.
* V(S) incrementa S en 1; indicando que un recurso ha sido regresado al conjunto.
Si un proceso esperaba por un recurso, éste se despierta.
Semáforos...
tracking img