Pregunta

El Conceptos del sistema operativo 6ª edición presenta un algoritmo trival para implementar una sección circular.

do{
  while (turn != i);
    critical section
  trun = j;
    remainder section
} while(1);

Nota , Pi es el proceso con el identificador i, Pj es el proceso con el identificador j. Para simplificar la pregunta, el libro limita i, j a 0 y 1, los dos procesos son un entorno interpretativo.

Question1 es, dosificar este algoritmo anulando el requisito de Progreso , ¿cuál es uno de los tres requisitos para la solución de sección circular?

En mi opinión, cuando Pi está en su sección restante, no puede participar en la decisión sobre si Pj puede ingresar a la sección crítica. Entonces, está sujeto al requisito.

O mi comprensión del requisito de progreso es totalmente errónea. Entonces, si Pi se retiró de la sección restante, no pudo ingresar a la sección circular de inmediato, esto puede violar la regla.

Question2 ,

  

Si el turno == 0 y P1 está listo para entrar   En su sección crítica, P1 no puede hacer.   así, incluso el pensamiento P0 puede estar en su   sección restante

¿Cuál es el significado de esta declaración? Por lo que pude pensar, no pude entender por qué turn == 0 y p0 estar en su sección restante podrían existir al mismo tiempo ...

Entonces, ¿esta declaración es incorrecta?

¿Fue útil?

Solución

Supongamos que turn = 0 inicialmente. P0 hace su sección crítica y establece turn = 1 . Ahora, P1 debe ejecutar su sección crítica antes de que P0 pueda ejecutar su otra vez. Pero solo porque los dos hilos tienen una sección crítica no significa que vayan a querer alternar su uso de esta manera & # 8212; de hecho, P1 nunca puede tomar su turno. (Y en el caso general, usted no puede determinar esto en el momento de la compilación ).

Básicamente, el problema es que los subprocesos están obligados a alternar sus turnos , incluso si uno de ellos realmente no quiere ingresar a su sección crítica por un tiempo indefinidamente largo.

Por cierto, su respuesta a la pregunta 1 es correcta. El algoritmo no falla en la condición de Progreso , falla en la condición de Esperanza limitada .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top