Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Conceptos
Un semforo es una variable que toma valores enteros no negativos. Un semforo es una estructura diseada para sincronizar dos o ms procesos, de modo que su ejecucin se realice de forma ordenada y sin conflictos entre ellos. Un semforo bsico es una estructura formada por dos instrucciones, una para reservarlo y otra para liberarlo. A esto se le puede aadir una cola de procesos para recordar el orden en que se hicieron las peticiones.
Funcionamiento
Slo se pueden hacer dos operaciones con un semforo(S): Down (o wait): Si S > 0, decrementa S en 1 Si S = 0, el proceso se suspende hasta que S > 0 Up (o signal): Incrementa S en 1
Analoga
Tipos de Semaforos
BINARIO: Un semforo binario es un indicador de condicin (S) que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: O y 1. Si, para un semforo binario. S=1 entonces el recurso est disponible y la tarea lo puede utilizar; si S=0 el recurso no est disponible y el proceso debe esperar.
GENERALES:
proteger un recurso que pueden compartir varios procesos, pero cuando lo que hay que proteger es un conjunto de recursos similares, se puede usar una versin ms general del concepto de semforo que lleve la cuenta del numero de recursos disponibles. En este caso el semforo se inicializa con el nmero total de recursos disponibles (n) y las operaciones de espera y seal se disean de modo que se impida el acceso al recurso protegido por el semforo cuando el valor de ste es igual que cero.
Ventajas
Sincronizar procesos, de modo que su ejecucin se realice de forma ordenada y sin conflictos entre ellos. Restringir o permitir el acceso a recursos compartidos.
Son componentes de muy bajo nivel de abstraccin, de fcil comprensin y con una gran capacidad funcional.
Resuelven los problemas que presenta la concurrencia.
Desventajas
Es fcil cometer errores. Los semforos son una herramienta debajo nivel, que requiere un uso disciplinado y cuidadoso.
Un solo Down o Up mal colocado puede hacer que el programa funcione incorrectamente. Es mejor usar mecanismos ms abstractos y fiables.