Diferencia entre conteo y semáforos binarios

Requisito previo: semáforos en la
descripción general de sincronización de procesos

Un semáforo es una variable entera que es útil para resolver una variedad de problemas de sincronización. Impone restricciones deliberadas que ayudan a los programadores a evitar errores. Además, hace que la solución esté más organizada, haciendo que los programas sean portátiles y eficientes. Solo se puede acceder a él a través de dos operaciones atómicas estándar: wait() y signal(). Una entidad es aquella que intenta acceder a un recurso compartido. La entidad puede ser un proceso o un hilo. En este artículo, los términos proceso e hilo se cambian indistintamente.

Hay ciertos requisitos que garantizan la sincronización, estos son:

  • Exclusión mutua
  • Progreso
  • Espera limitada

Sobre la base de un rango de contador, un semáforo se puede distinguir en dos partes, una es el semáforo de conteo, mientras que por otro lado, es el semáforo binario. 

1. Semáforo binario:

  1. Un semáforo binario es un semáforo cuyo valor entero oscila entre 0 y 1.
  2. No es nada, pero similar a un candado, con dos valores: 0 y 1. Aquí 0 significa ocupado, mientras que 1 significa libre.
  3. La idea detrás del uso de un semáforo binario es que permite que solo un proceso a la vez ingrese a la sección crítica (lo que le permite acceder al recurso compartido).
  4. Aquí, 0 representa que un proceso o subproceso está en la sección crítica (es decir, está accediendo al recurso compartido), mientras que el otro proceso o subproceso debe esperar a que se complete. Por otro lado, 1 significa que ningún proceso está accediendo al recurso compartido y la sección crítica está libre.
  5. Garantiza la exclusión mutua ya que dos procesos no pueden estar en la sección crítica en ningún momento.
  6. Dado que es solo una variable, que tiene un valor entero, no puede garantizar una espera limitada. Puede suceder que un proceso nunca tenga la oportunidad de ingresar a la sección crítica, lo que puede conducir a su inanición. Y no queremos eso.

2. Contando semáforo:

  1. Un semáforo de conteo es un semáforo que tiene múltiples valores del contador. El valor puede oscilar en un dominio sin restricciones.
  2. Es una estructura, que comprende una variable, conocida como variable de semáforo que puede tomar más de dos valores y una lista de tarea o entidad, que no es más que el proceso o el hilo.
  3. El valor de la variable semáforo es el número de procesos o subprocesos que se permitirán dentro de la sección crítica.
  4. El valor del semáforo de conteo puede oscilar entre 0 y N, donde N es el número del número de procesos libres para entrar y salir de la sección crítica.
  5. Como se mencionó, un semáforo de conteo puede permitir que múltiples procesos o subprocesos accedan a la sección crítica, por lo que no se garantiza la exclusión mutua.
  6. Dado que múltiples instancias de proceso pueden acceder al recurso compartido en cualquier momento, el semáforo de conteo garantiza una espera limitada. Usando tal semáforo, un proceso que ingresa a la sección crítica tiene que esperar a que el otro proceso ingrese a la sección crítica, lo que implica que ningún proceso morirá de hambre.

Usando ambos semáforos, un proceso puede ingresar a la sección crítica, por lo que se realiza un progreso.

Diferencia entre conteo y semáforos binarios:

Criterios

Semáforo binario

Semáforo de conteo

Definición Un semáforo binario es un semáforo cuyo valor entero oscila entre 0 y 1. Un semáforo de conteo es un semáforo que tiene múltiples valores del contador. El valor puede oscilar en un dominio sin restricciones.
Implementación de estructura typedef struct {
      int semáforo_variable;
}semáforo_binario;
typedef struct {      
        int semáforo_variable;
        lista de colas; //Una cola para almacenar la lista de tareas
      }counting_semaphore;
Representación 0 significa que un proceso o subproceso está accediendo a la sección crítica, otro proceso debe esperar a que salga de la sección crítica. 1 representa que la sección crítica está libre. El valor puede variar de 0 a N, donde N es el número de proceso o hilo que tiene que entrar en la sección crítica. 
Exclusión mutua Sí, garantiza la exclusión mutua, ya que solo un proceso o hilo puede ingresar a la sección crítica a la vez. No, no garantiza la exclusión mutua, ya que más de un proceso o subproceso puede ingresar a la sección crítica a la vez.
Espera limitada No, no garantiza una espera limitada, ya que solo un proceso puede ingresar a la sección crítica, y no hay límite sobre cuánto tiempo puede existir el proceso en la sección crítica, lo que hace que otro proceso muera de hambre. Sí, garantiza una espera limitada, ya que mantiene una lista de todos los procesos o subprocesos, utilizando una cola, y cada proceso o subproceso tiene la oportunidad de ingresar a la sección crítica una vez. Así que no se trata de morir de hambre.

Publicación traducida automáticamente

Artículo escrito por duttabhishek0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *