Saltar al contenido

¿Qué es el semáforo? Tipos de conteo binario con ejemplo

¿Qué es el semáforo?

Semáforo variables que no son negativas y se dividen entre subprocesos. Un semáforo es un mecanismo de señalización, y un hilo que espera en un semáforo se puede firmar con otro hilo. Utiliza dos operaciones atómicas, 1) esperar y 2) señal para la sincronización del proceso.

Un semáforo permite o no permite el acceso al recurso, que depende de cómo esté configurado.

En este tutorial de sistema operativo (SO), aprenderá:

Característica del semáforo

Estos se caracterizan por un semáforo:

Tipos de semáforos

Los dos tipos más comunes son los semáforos.

Contando semáforos

Este tipo de semáforo utiliza el conteo, lo que a menudo ayuda a encontrar o liberar una tarea. Si el recuento inicial es = 0, el semáforo de recuento debe crearse en la condición de no disponible.

Sin embargo, si el recuento es> 0, el semáforo se crea en la condición disponible y el número de tokens que tiene es igual a su recuento.

Semáforos binarios

Los semáforos binarios son bastante similares a contar semáforos, pero su valor está limitado a 0 y 1. En este tipo de semáforo, la operación de espera solo funciona si el semáforo = 1, y la operación de señal tiene éxito cuando semáforo = = La aplicación es más fácil de implementar que contar semáforos.

Ejemplo de semáforo

El siguiente programa es una implementación paso a paso, que incluye el uso y la confirmación del semáforo.


Shared var mutex: semaphore = 1;
Process i
    begin
    .
    .
    P(mutex);
    execute CS;
    V(mutex);
    .
    .
    End;

Operaciones de señales y ventiladores en semáforos

Ambas operaciones se utilizan para implementar la sincronización de procesos. El objetivo de esta operación de semáforo es obtener la exclusión mutua.

Espere la operación

Este tipo de operación de semáforo le ayuda a controlar la entrada de tareas en la parte crítica. Sin embargo, si el valor de la espera es positivo, se reduce el valor del argumento de espera X. Para un valor negativo o cero, no se realiza ninguna operación. También se llama operación P (S).

Después de reducir el valor del semáforo, que se vuelve negativo, el orden se mantiene hasta que se cumplen las condiciones requeridas.


Copy CodeP(S)
{ 
    while (S<=0);
    S--;
}

Operación de señal

Este tipo de operación de semáforo se utiliza para controlar la salida de una tarea de un departamento crítico. Ayuda a incrementar el valor del argumento en 1, expresado como V (S).


Copy CodeP(S)
{ 
    while (S>=0);
    S++;
}

Contando semáforo vs semáforo binario

Aquí hay algunas diferencias importantes entre el conteo y el semáforo binario:

Recuento de semáforosSemáforo binario
Sin exclusión mutuaExclusión mutua
Cualquier valor enteroSolo valor 0 y 1
Más de una ranuraUna ranura
Proporcionar un conjunto de procesosTiene un mecanismo de exclusión mutua.

Diferencia entre semáforo y mutex

ParámetrosSemáforoMutex
MecanismoEs un tipo de mecanismo de señalización.Es un mecanismo de bloqueo.
Tipo de datosUn semáforo es una variable entera.Mutex es solo un objeto.
ModificaciónPuede modificar las operaciones de señalización y espera del semáforo.Solo se modifica mediante el proceso mediante el cual se puede solicitar o liberar un recurso.
Administracion de recursosSi no hay un recurso libre, entonces el proceso requiere un recurso que debe realizar una operación de espera. Debe esperar hasta que el recuento de semáforos supere 0.Si está bloqueado, el proceso debe esperar. El proceso debe mantenerse en cola. Solo es necesario acceder a este cuando el mutex está desbloqueado.
HiloPuede tener varios hilos.Puede tener varios subprocesos en mutex pero no al mismo tiempo.
PropiedadEl valor se puede cambiar a través de cualquier proceso mediante el cual el recurso se libera o adquiere.Un bloqueo de objetivo solo se libera a través del proceso, que obtuvo el bloqueo.
TiposLos tipos de semáforo cuentan semáforo y semáforo binario yMutex no tiene subtipos.
OperaciónEl valor de un semáforo se modifica mediante el uso de esperando () y señal ().El objeto Mutex está bloqueado o desbloqueado.
Recursos de ocupaciónArgumenta si se están utilizando todos los recursos y si el proceso que requiere recursos funciona () y se bloquea hasta que el semáforo cuenta> 1.Cuando el objeto ya está bloqueado, el proceso que solicita recursos se detiene y el sistema lo apaga antes de que se desbloquee.

Ventajas de los semáforos

Estos son los pros / contras de usar Semaphore:

Desventaja de los semáforos

Aquí están las desventajas / desventajas del semáforo

Resumen: