¿Cuál es la diferencia entre un convoy de bloqueo y una contención de bloqueo/subproceso?

Aug 18 2020

De wikipedia en lock convoy:

Un convoy de bloqueo se produce cuando varios subprocesos de igual prioridad compiten repetidamente por el mismo bloqueo. A diferencia de las situaciones de interbloqueo y de interbloqueo, los subprocesos en un convoy de bloqueo sí progresan; sin embargo, cada vez que un subproceso intenta adquirir el bloqueo y falla, renuncia al resto de su cantidad de programación y fuerza un cambio de contexto. La sobrecarga de cambios de contexto repetidos y la infrautilización de los cuantos de programación degradan el rendimiento general.

De wikipedia en contención de contención de bloqueo/hilo:

contención de bloqueo: esto ocurre cada vez que un proceso o subproceso intenta adquirir un bloqueo retenido por otro proceso o subproceso. Cuanto más detallados sean los bloqueos disponibles, es menos probable que un proceso/subproceso solicite un bloqueo del otro. (Por ejemplo, bloquear una fila en lugar de toda la tabla, o bloquear una celda en lugar de toda la fila);

¿Podría alguien elaborar un poco más sobre ambas cosas? Para mí, parece que son esencialmente lo mismo, o si no lo son, entonces seguramente la contención de bloqueo provoca un convoy de bloqueo. ¿Es ese el caso o son conceptos separados e independientes? Además, no entiendo la oración "renuncia al resto de su cantidad de programación y fuerza un cambio de contexto".

Respuestas

1 ajit Sep 03 2020 at 13:30

Hay dos enfoques de bloqueo que se utilizan en los algoritmos de bloqueo cuando un bloqueo está ocupado . girar esperar o bloquear (ir a dormir, abandonar el procesador y esperar a que el sistema operativo despierte el hilo y vuelva a programar). Bloquear el convoy como se mencionó ocurrirá cuando se use la estrategia de bloqueo.
El sistema operativo programa subprocesos en un núcleo en forma de intervalos de tiempo . Cada subproceso obtiene el procesador por un intervalo de tiempo determinado, digamos 2 ms. SO en un round-robinmoda programar todos los subprocesos en la cola lista uno por uno. Si dice un subproceso después de que obtenga el cronograma y comience su ejecución, digamos después de 100 us, solicite un bloqueo. Si el bloqueo está ocupado, el subproceso no puede obtener el bloqueo, bloquea y abandona el procesador. Por lo tanto, el segmento de tiempo restante de 1,9 ms (2 ms-100 us) no es utilizado por el subproceso. Incluso después de que el sistema operativo lo active cuando el bloqueo está libre, el subproceso tiene que esperar su turno en la cola de turno rotativo. El número de subprocesos activos podría ser de 100.

La contención de bloqueo provoca el efecto de convoy.