top of page
Semáforo Función

Semáforo Función

Semáforo Algoritmo

Semáforo Algoritmo

Semáforo

Semáforo

Exclusión de Semáforos

Exclusión de Semáforos

¿ Que es un Semáforo ?

 ¿Semáforo?

Un semáforo es una variable especial que constituye el método clásico para restringir o permitir el acceso a recursos compartidos en un entorno de multiprocesamiento. Fueron inventados por Edsger Dijkstra en 1965 y se usaron por primera vez en el sistema operativo THEOS.

Los semáforos sólo pueden ser manipulados usando las siguientes operaciones:

       Inicia(Semáforo s, Entero v) { s = v; }

En el que se iniciará la variable semá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 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á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" significa incrementar y "Proberen" probar.

La operación V es denominada a veces subir el semáforo (up) y la operación P se conoce también como bajar el semáforo (down), y también son llamadas signl y wait.

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 valor del 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 sea positivo, 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).

 

    Aplicaciones

Los semáforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones críticas) donde se manipulan 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 los mutex. 

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 un recurso.

 

Es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.

La creación de un nuevo hilo es...

Hilos

© 2015 por Ladeshka Maya Salas Herrera.

  • Google+ Social Icon
  • YouTube Social  Icon

Contactame en :

bottom of page