¿Qué Es Un Semáforo?
Enviado por lolobm • 11 de Octubre de 2014 • 265 Palabras (2 Páginas) • 387 Visitas
¿Qué es un semáforo?
Un semáforo es una estructura diseñada para sincronizar dos o más threads o procesos, de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos.
Un Semáforo es una variable especial que constituye una serie de opciones elementales para poder restringir o garantizar el acceso a los recursos en un Sistema Operativo con un entorno de multiprocesamiento.
¿Cómo se usa?
Se empieza por inicializar la posición de memoria a 1 o al valor correspondiente si ese recurso concreto admite más de un acceso simultáneo. Esto se hace en el inicio del programa principal. A continuación, cada vez que un thread o un proceso quieran acceder a dicho recurso por ejemplo, un fichero, hará primero una petición con la primera de las llamadas disponibles. Cuando el S.O. ejecuta esa llamada, comprueba el valor que hay en la posición de memoria del semáforo, y si es distinta de cero, se limita a restarle 1 y devolver el control al programa; sin embargo, si ya es cero, duerme al proceso que hizo la petición y lo mete en la cola de procesos, en espera de que el semáforo se ponga a un valor distinto de cero.
¿Qué algoritmos implementa?
• Implementación
• Es una variable entera sujeta a dos operaciones: wait y signal
• Estas operaciones se ejecutan de manera indivisible.
• Cuando un proceso modifica el valor del semáforo, otros procesos no pueden
• modificarlo simultáneamente.
• Se inicializa con valor no negativo
• Wait decrementa el valor del semáforo. Si el valor se hace negativo, el proceso se
• bloquea.
• Signal incrementa el valor del semáforo. Si el valor no es positivo, se desbloquea un
• proceso bloqueado por un wait.
...