Semaforo

Solo disponible en BuenasTareas
  • Páginas : 4 (898 palabras )
  • Descarga(s) : 9
  • Publicado : 20 de junio de 2010
Leer documento completo
Vista previa del texto
os 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 valorinferior 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 la operació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ásentendible, 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" significa incrementar 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 elnúmero de unidades del recurso que están disponibles (si sólo hay un recurso, se utiliza un "semáforo binario" con los valores 0 y 1).

Si hay n recursos, se inicializará el semáforo al número n.Así, cada proceso, al ir solicitando un recurso, verificará que el valor del semáforo sea mayor de 0; si es así es que existen recursos libres, seguidamente acaparará el recurso y decrementará el valordel semáforo.

Cuando el semáforo alcance el valor 0, significará que todos los recursos están siendo utilizados, y los procesos que quieran solicitar un recurso deberán esperar a que el semáforo seapositivo, esto es: alguno de los procesos que están usando los recursos habrá terminado con él e incrementará el semáforo con un signal o V(s).

Inicia se utiliza para inicializar el semáforo...
tracking img