¿Qué es Semaphore? Contando, tipos binarios con ejemplo
¿Qué es Semaphore?
Semaphore es simplemente una variable que no es negativa y se comparte entre subprocesos. Un semáforo es un mecanismo de señalización y un subproceso que está esperando un semáforo puede recibir señales de otro subproceso. Utiliza dos operaciones atómicas: 1) Esperar y 2) Signal para la sincronización de procesos.
Un semáforo permite o no permite el acceso al recurso, lo que depende de cómo esté configurado.
Caracteristico de Semaphore
Aquí, son característicos de 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.
- Semaphore siempre tendrá un valor entero no negativo.
- Semaphore Se puede implementar utilizando operaciones de prueba e interrupciones, que deben ejecutarse utilizando descriptores de archivos.
Tipos de Semaphores
Los dos tipos comunes de semáforos son
- Contando semáforos
- Semáforos binarios.
Cálculo Semaphores
Este tipo de Semaphore Utiliza un recuento que ayuda a adquirir o liberar una tarea varias veces. Si el recuento inicial es 0, el semáforo de recuento debe crearse en estado no disponible.
Sin embargo, si el recuento es> 0, el semáforo se crea en el estado disponible y la cantidad de tokens que tiene es igual a su recuento.
Binario Semaphores
Los semáforos binarios son bastante similares a los semáforos de conteo, pero su valor está restringido a 0 y 1. En este tipo de semáforo, la operación de espera funciona solo si el semáforo = 1, y la operación de señal tiene éxito cuando el semáforo = 0. Es más fácil de implementar que los semáforos de conteo.
Ejemplo de Semaphore
El programa que se proporciona a continuación es una implementación paso a paso, que implica el uso y la declaración del semáforo.
Shared var mutex: semaphore = 1; Process i begin . . P(mutex); execute CS; V(mutex); . . End;
Espera y Signal Operaciones en Semaphores
Ambas operaciones se utilizan para implementar sincronización de procesosEl objetivo de esta operación de semáforo es lograr la exclusión mutua.
Esperar Operadesarrollo
Este tipo de operación de semáforo le ayuda a controlar la entrada de una tarea en la sección crítica. Sin embargo, si el valor de espera es positivo, entonces el valor del argumento de espera X se decrementa. En el caso de un valor negativo o cero, no se ejecuta ninguna operación. También se denomina operación P(S).
Después de disminuir el valor del semáforo, que se vuelve negativo, el comando se mantiene hasta que se cumplan las condiciones requeridas.
Copy CodeP(S) { while (S<=0); S--; }
Signal Inteligente
Este tipo de Semaphore La operación se utiliza para controlar la salida de una tarea de una sección crítica. Ayuda a incrementar el valor del argumento en 1, lo que se denota como V(S).
Copy CodeP(S) { while (S>=0); S++; }
Cálculo Semaphore vs binario Semaphore
A continuación, se muestran algunas diferencias importantes entre el conteo y el semáforo binario:
Cálculo Semaphore | Binario Semaphore |
---|---|
Sin exclusión mutua | Exclusión mutua |
Cualquier valor entero | Valor sólo 0 y 1 |
Más de una ranura | Solo una ranura |
Proporcionar un conjunto de procesos. | Tiene un mecanismo de exclusión mutua. |
Diferencia entre Semaphore frente a exclusión mutua
parámetros | Semaphore | Mutex |
---|---|---|
Mecanismo | Es un tipo de mecanismo de señalización. | Es un mecanismo de bloqueo. |
Tipo de datos | Semaphore es una variable entera. | Mutex es solo un objeto. |
Modificación | Las operaciones de espera y señal pueden modificar un semáforo. | Es modificado únicamente por el proceso que puede solicitar o liberar un recurso. |
Gestión de recursos | Si no hay ningún recurso libre, el proceso requiere un recurso que debe ejecutar la operación de espera. Debe esperar hasta que el recuento del semáforo sea mayor que 0. | Si está bloqueado, el proceso tiene que esperar. El proceso debe mantenerse en cola. Solo es necesario acceder a este cuando el mutex está desbloqueado. |
Hilo | Puede tener múltiples hilos de programa. | Puedes tener varios subprocesos de programa en mutex, pero no simultáneamente. |
Propiedad del activo: | El valor puede cambiarse mediante cualquier proceso que libere u obtenga el recurso. | El bloqueo del objeto lo libera únicamente el proceso que ha obtenido el bloqueo sobre él. |
Tipos | Tipos de Semaphore están contando semáforos y semáforos binarios y | Mutex no tiene subtipos. |
Operadesarrollo | Semaphore El valor se modifica mediante las operaciones wait() y signal(). | El objeto Mutex está bloqueado o desbloqueado. |
Ocupación de recursos | Está ocupado si se están utilizando todos los recursos y el proceso que solicita el recurso realiza la operación de espera () y se bloquea hasta que el recuento de semáforos sea> 1. | En caso de que el objeto ya esté bloqueado, el proceso que solicita recursos espera y el sistema lo pone en cola antes de que se libere el bloqueo. |
Ventajas de Semaphores
Aquí están los pros y los beneficios de usar Semaphore:
- Permite que más de un hilo acceda a la sección crítica.
- SemaphoreLos s son independientes de la máquina.
- SemaphoreLos s se implementan en el código independiente de la máquina del microkernel.
- No permiten que múltiples procesos ingresen a la sección crítica.
- Como hay mucha espera en el semáforo, nunca se desperdician tiempo ni recursos en el proceso.
- Son independientes de la máquina, por lo que deben ejecutarse en el código independiente de la máquina del microkernel.
- 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 prioridad.
- El sistema operativo debe realizar un seguimiento de todas las llamadas al semáforo de espera y de señalización.
- Su uso nunca se impone, sino que es únicamente por convención.
- Para evitar bloqueos en el semáforo, se deben esperar y Signal Las operaciones deben ejecutarse en el orden correcto.
- Semaphore La programación es complicada, por lo que existen posibilidades de no lograr la exclusión mutua.
- Tampoco es un método práctico para uso a gran escala ya que su uso conduce a una pérdida de modularidad.
- Semaphore es más propenso a errores del programador.
- Puede causar punto muerto o violación de exclusión mutua debido a un error del programador.
Resumen
- Semaphore se define como una variable que no es negativa y se comparte entre subprocesos.
- Es un mecanismo que se puede utilizar para proporcionar sincronización de tareas.
- El semáforo de conteo utiliza un conteo que ayuda a que la tarea se adquiera o libere numerosas veces.
- Los semáforos binarios son bastante similares a los semáforos contadores, pero su valor está restringido a 0 y 1.
- La operación de espera le ayuda a controlar la entrada de una tarea en la sección crítica
- Signal La operación de semáforo se utiliza para controlar la salida de una tarea de una sección crítica.
- Cálculo Semaphore no tiene exclusión mutua mientras que Binary Semaphore tiene exclusión mutua
- Semaphore significa un mecanismo de señalización mientras que Mutex es un mecanismo de bloqueo
- Semaphore permite que más de un hilo acceda a la sección crítica
- Una de las mayores limitaciones de un semáforo es la inversión de prioridad.