Hallo zusammen,
ich habe den Versuch 5 untersucht und eine Sache ist mir nicht klar.
/* Prozess 0 */
while (1) {
flag[0] = true; turn = 1;
while ((flag[1] == true) && (turn == 1)) ;
/* do nothing */
/* kritischer Abschnitt */
flag[0] = false;
/* nichtkrit. Abschnitt */
}
/* Prozess 1 */
while (1) {
flag[1] = true;
turn = 0;
while ((flag[0] == true) && (turn == 0)) ;
/* do nothing */
/* kritischer Abschnitt */
flag[1] = false;
/* nichtkrit. Abschnitt */
}
Lass uns annehmen, Prozess 0 wird erstes durchgeführt and setzt flag[0] == true, turn = 1 und gibt CPU ab.
Prozess 1 setzt flag[1] == true und auf irgendein problem wird sie unterbrochen und kann nicht mehr laufen. Zum beispiel bie Anwendungen durch 'CLOSE' geschlossen.
Da es nur Prozess 0 aktive ist fürt die CPU sie durch.
Also weil flag[1] auf true gesetzt wird und Prozess 1 nicht mehr weiter machen kann, kann Deadlock passieren.
Ist meine Behauptung richtig oder ist so angenommen, dass solche Situationen nicht passieren dürfen?