semaforos

Páginas: 5 (1052 palabras) Publicado: 24 de septiembre de 2013
Un sem�foro es una variable especial (o tipo abstracto de datos) que constituye el m�todo cl�sico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del c�digo fuente) en un entorno de multiprocesamiento (en el que se ejecutar�n varios procesos concurrentemente). Fueron inventados por Edsger Dijkstra en 1965 y se usaronpor primera vez en el sistema operativo THEOS.

Los sem�foros pueden ser usados para diferentes prop�sitos, entre ellos:
Implementar cierres de exclusi�n mutua o locks
Barreras
Permitir a un m�ximo de N threads (hilos) acceder a un recurso, inicializando el sem�foro en N
Notificaci�n. Inicializando el sem�foro en 0 puede usarse para comunicaci�n entre threads sobre la disponibilidad de unrecurso
En el siguiente ejemplo se crean y ejecutan n procesos que intentar�n entrar en su secci�n cr�tica cada vez que puedan, y lo lograr�n siempre de a uno por vez, gracias al uso del sem�foro s inicializado en 1. El mismo tiene la misma funci�n que un lock.

usos:
Los semáforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones críticas) donde semanipulan variables o recursos que deben ser accedidos de forma especial. Según el valor con que son inicializados se permiten a más o menos procesos utilizar el recurso de forma simultánea.
Un tipo simple de semáforo es el binario, que puede tomar solamente los valores 0 y 1. Se inicializan en 1 y son usados cuando sólo un proceso puede acceder a un recurso a la vez. Son esencialmente lo mismo que losmutex. Cuando el recurso está disponible, un proceso accede y decrementa el valor del semáforo con la operación P. El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementarlo tenga que esperar. Cuando el proceso que decrementó el semáforo realiza una operación V, algún proceso que estaba esperando comienza a utilizar el recurso.
Para hacer que dos procesos se ejecuten enuna secuencia predeterminada puede usarse un semáforo inicializado en 0. El proceso que debe ejecutar primero en la secuencia realiza la operación V sobre el semáforo antes del código que debe ser ejecutado después del otro proceso. Éste ejecuta la operación P. Si el segundo proceso en la secuencia es programado para ejecutar antes que el otro, al hacer P dormirá hasta que el primer proceso de lasecuencia pase por su operación V. Este modo de uso se denomina señalación (signaling), y se usa para que un proceso o hilo de ejecución le haga saber a otro que algo ha sucedido.

operaciones:

Los semáforos sólo pueden ser manipulados usando las siguientes operaciones (éste es el código con espera activa):
Inicia(Semáforo s, Entero v)
{
s = v;
}
En el que se iniciará la variablesemáforo s a un valor entero v.
P(Semáforo s)
{
if(s>0)
s = s-1;
else
wait();
}
La cual mantendrá en espera activa al regido por el semáforo si éste tiene un valor inferior o igual al nulo.
V(Semáforo s)
{
if(!procesos_bloqueados)
s = s+1;
else
signal();
}
Estas instrucciones pueden modificarse para evitar la espera activa, haciendo que laoperación P duerma al mismo proceso que la ejecuta si no puede decrementar el valor, mientras que la operación V despierta a un proceso que no es quien la ejecuta. En un pseudolenguaje más entendible, la operación P suele denominarse "wait" o "espera" y la operación V "signal" o "señal".
El porqué de los nombres de estas funciones, V y P, tiene su origen en el idioma holandés. "Verhogen" significaincrementar y "Proberen" probar, aunque Dijkstra usó la palabra inventada prolaag [1], que es una combinación de probeer te verlagen (intentar decrementar). El valor del semáforo es el número de unidades del recurso que están disponibles (si sólo hay un recurso, se utiliza un "semáforo binario" cuyo valor inicial es 1).
La verificación y modificación del valor, así como la posibilidad de irse a...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Los Semaforos
  • semaforo
  • Semaforo
  • semaforo
  • SEMAFORO
  • Semáforo
  • Semaforo
  • Semaforo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS