¿Cuál es la diferencia entre ‘progreso’ y ‘espera limitada’, que son los dos requisitos para manejar el problema de la sección crítica en un sistema operativo?

Trataré de explicarlo en base a mi comprensión.

El progreso significa que el proceso eventualmente debería poder completarse.

La espera acotada significa que ningún proceso debe esperar un recurso por una cantidad de tiempo infinita.

Si consideramos live-lock, esta es una condición cuando la espera acotada es verdadera pero el progreso no lo es. Tomando un ejemplo de la vida real, supongamos que en una carretera dos vehículos se mueven uno hacia el otro. Ambos intentan dar un paso moviéndose hacia un lado.

El Vehículo A libera el lado izquierdo de la carretera para el Vehículo B, lo que significa que el vehículo B no tiene que esperar indefinidamente. Entonces la espera acotada está satisfecha.

Sin embargo, el Vehículo B también se mueve hacia su lado izquierdo, para dejar el lado derecho hacia A. Entonces, nuevamente, ambos están uno frente al otro y no es posible avanzar. Si continúan moviéndose al mismo lado de la carretera, esta situación será algo similar a lo que llamamos live-lock.

Si tomamos los lados del camino como recursos, y los vehículos como procesos, entonces ambos están liberando sus recursos y adquiriendo otros nuevos dentro del tiempo limitado, pero aún no tenemos progreso. Esto se llama live-lock, ya que ambos procesos realizan algunos cambios y no están atascados en el mismo estado, pero como un sistema completo no puede completar su ejecución.

Progreso: los procesos que no se ejecutan en la sección restante (sección no crítica) solo pueden ingresar en la sección crítica (los procesos que realmente requieren una sección crítica)

En espera: el intervalo de tiempo entre el proceso ha solicitado una sección crítica y se ha otorgado para la sección crítica. Durante este tiempo, otro proceso puede entrar en la sección crítica por un número limitado de veces.

El progreso significa que el proceso eventualmente debería poder completarse.

La espera acotada significa que ningún proceso debe esperar un recurso por una cantidad de tiempo infinita.

Tomando un ejemplo de la vida real, supongamos que en una carretera dos vehículos se mueven uno hacia el otro. Ambos intentan dar un paso moviéndose hacia un lado.

El Vehículo A libera el lado izquierdo de la carretera para el Vehículo B, lo que significa que el vehículo B no tiene que esperar indefinidamente. Entonces la espera acotada está satisfecha.

Sin embargo, el Vehículo B también se mueve hacia su lado izquierdo, para dejar el lado derecho hacia A. De nuevo, ambos están uno frente al otro y no es posible avanzar. Si continúan moviéndose al mismo lado de la carretera, esta situación será algo similar a lo que llamamos live-lock.