¿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:
- Es un mecanismo que se puede utilizar para proporcionar sincronización de tareas.
- Es un mecanismo de sincronización de bajo nivel.
- El semáforo siempre tendrá un valor entero no negativo.
- Se puede implementar un semáforo mediante operaciones de prueba e interrupción, que deben ejecutarse mediante informes de archivo.
Tipos de semáforos
Los dos tipos más comunes son los semáforos.
- Cuenta de semáforos
- Semáforos binarios.
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áforos | Semáforo binario |
Sin exclusión mutua | Exclusión mutua |
Cualquier valor entero | Solo valor 0 y 1 |
Más de una ranura | Una ranura |
Proporcionar un conjunto de procesos | Tiene un mecanismo de exclusión mutua. |
Diferencia entre semáforo y mutex
Parámetros | Semáforo | Mutex |
Mecanismo | Es un tipo de mecanismo de señalización. | Es un mecanismo de bloqueo. |
Tipo de datos | Un semáforo es una variable entera. | Mutex es solo un objeto. |
Modificación | Puede 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 recursos | Si 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. |
Hilo | Puede tener varios hilos. | Puede tener varios subprocesos en mutex pero no al mismo tiempo. |
Propiedad | El 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. |
Tipos | Los tipos de semáforo cuentan semáforo y semáforo binario y | Mutex no tiene subtipos. |
Operación | El 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ón | Argumenta 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:
- Permite que más de un hilo acceda a la parte crítica.
- Los semáforos son independientes de la máquina.
- Los semáforos se implementan en el código independiente de la máquina del micro-kernel.
- No permiten que múltiples procesos entren en la parte crítica.
- Debido a que permanecer en el semáforo está ocupado, nunca se desperdician tiempo y recursos de proceso.
- Son independientes de la máquina, que deben ejecutarse en código independiente de la máquina del micro-kernel.
- Permiten una gestión flexible de los recursos.
Desventaja de los semáforos
Aquí están las desventajas / desventajas del semáforo
- Una de las mayores limitaciones de un semáforo es la inversión de prioridades.
- El sistema operativo debe realizar un seguimiento de todas las llamadas para esperar y señalar al semáforo.
- Su uso nunca se impone, sino solo a través de una convención.
- Para evitar interbloqueos en el semáforo, es necesario completar las operaciones de Ventilador y Señal en el orden correcto.
- La programación de semáforos es compleja, por lo que existe la posibilidad de que no se logre la exclusión mutua.
- Tampoco es un método práctico para uso a gran escala ya que la modularidad se pierde como resultado de su uso.
- El semáforo es más propenso a errores del programador.
- Puede prevenir o violar la exclusión mutua debido a un error del programador.
Resumen:
- Un semáforo se define como una variable que no es negativa y se divide entre hilos.
- Es un mecanismo que se puede utilizar para proporcionar sincronización de tareas.
- Un recuento de semáforos utiliza un recuento que a menudo ayuda a encontrar o liberar una tarea.
- Los semáforos binarios son bastante similares a contar semáforos, pero su valor está limitado a 0 y 1.
- Una operación de espera le ayuda a controlar la entrada de tareas en la parte crítica
- Se utiliza una operación de semáforo de señal para controlar la salida de una tarea de un departamento crítico
- Semaphore Binary no tiene una exclusión mutua, pero Semaphore Binary tiene una exclusión mutua
- Semáforo significa mecanismo de señalización pero Mutex es un mecanismo de bloqueo
- Un semáforo permite que más de un hilo acceda a la parte crítica
- Una de las mayores limitaciones de un semáforo es la inversión de prioridades.