[005 Conocimientos básicos] ¿Mecanismo de sincronización de Linux?

1. ¿Qué es un mecanismo de sincronización?

La competencia de concurrencia es esencialmente un conflicto en el acceso de múltiples subprocesos a recursos compartidos. Mediante el uso de mecanismos de sincronización (como mutexes, semáforos, etc.), puede asegurarse de que solo un subproceso acceda a los recursos compartidos en cualquier momento. Si no se toman las medidas de sincronización necesarias, algunas estructuras de datos clave se intercalarán y modificarán, lo que conducirá a la inconsistencia del estado de estas estructuras de datos y luego provocará el bloqueo del sistema.

Por lo tanto, para garantizar que el sistema funcione de manera eficiente, estable y ordenada, Linux debe adoptar un mecanismo de sincronización.


2. ¿Cuáles son los mecanismos de sincronización de Linux?

  • operación atómica
  • Bloqueo  giratorioBloqueo giratorio
  • bloqueo de giro de lectura y escritura
  • Bloqueo secuencial (seqlock, solo incluido en el kernel 2.6 y versiones posteriores)
  • semáforo  semáforo
  • Leer y escribir semáforos
  • exclusión mutua 
  • Big Kernel Lock (BKL, Big Kernel Lock, solo incluido en el kernel 2.4, sin mencionar)
  • Lector de bloqueo grande (brlock, solo incluido en el kernel 2.4, no habla)
  • RCU (optimización para bloqueos de lectura y escritura, solo incluida en el kernel 2.6 y versiones posteriores)


3. ¿Qué es un interbloqueo? ¿Cómo evitar el punto muerto?

Definición: interbloqueo se refiere a la situación en la que dos o más procesos o subprocesos se esperan mutuamente para contener recursos y no pueden continuar ejecutándose . En este caso, cada proceso está esperando que otros procesos liberen los recursos que necesita, pero ningún proceso liberará activamente los recursos que tiene, por lo que todos los procesos no pueden avanzar, formando un bucle sin fin, que es un punto muerto.

La generación de interbloqueo generalmente debe cumplir las siguientes cuatro condiciones necesarias:

  1. Condiciones mutuamente excluyentes: un recurso solo puede ser utilizado por un proceso en cualquier momento;

  2. Condiciones de inalienabilidad: Los recursos obtenidos por el proceso no pueden ser privados por la fuerza antes de que se agoten ;

  3. Condiciones de solicitud y espera: Cuando un proceso está bloqueado (durmiendo, interrumpido por una interrupción de alta prioridad) debido a la solicitud de recursos, mantendrá los recursos obtenidos.

  4. Condición de espera circular: se forma un ciclo de espera de proceso y el recurso ocupado por cada proceso en el ciclo es aplicado por otro proceso al mismo tiempo.

Un interbloqueo solo puede ocurrir cuando las cuatro condiciones se cumplen simultáneamente. Por lo tanto, la forma de evitar el interbloqueo es violar una o más de estas cuatro condiciones necesarias.

Prevención de interbloqueo:

Podemos evitar el interbloqueo destruyendo las cuatro condiciones necesarias para la generación de interbloqueos, porque la exclusión mutua de recursos es una característica inherente del uso de recursos y no se puede cambiar.


4. Contenido de referencia

Causas de Interbloqueo y Cuatro Condiciones Necesarias

Cuatro condiciones necesarias para el interbloqueo - Blog de Hyacinth_Dy - Blog de CSDN

Supongo que te gusta

Origin blog.csdn.net/qq_41709234/article/details/131190989
Recomendado
Clasificación