Codeanalyse mit 5 Prozessen und 6 Semaphoren?
Hallo,
ich bin Informatikstudent und versuche gerade eine Übungsaufgabe über Synchronisation und Deadlocks zu lösen(Bild im Anhang). Die Prozesse laufen parallel. Die Aufgabe lautet kann hier ein Deadlock entstehen? Begründe. Ein Deadlock ist meiner Ansicht nach, ein Status, bei dem sich mehrere Prozesse sich gegenseitig blockieren und demnach ihre Ressourcen nicht freigeben können.Wie gehe ich aber bei so einer Aufgabe vor?
Danke schonmal im Voraus!
2 Antworten
Kein Deadlock möglich, da die Locks immer in derselben Reihenfolge angefordert werden, ein Ressourcenkonflikt bereits beim ersten konkurrierenden Lock gelöst wird.
Zum Vorgehen kann ich dir da gerade keine wieteren Tipps geben, eigentlich ist das recht intuitiv.
Du musst schauen ob ein Prozess auf ein Lock wart, das nicht freigegeben werden kann. Da er selbst direkt oder indirekt die Freigabe eines Locks blockiert, auf das der Prozess, der das Lock hält, wartet.
Gibt auch irgendwelche Codeanalyseverfahren dafür, aber die wurden im Studium glaube ich nicht besprochen.
Also wenn ich die Pseudo-Funktionen richtig verstehe, befinden sich alle Tasks von Anfang an im Deadlock. Jeder Task wartet hier einfach nur auf ein Signal. Der kritische Bereich wird also niemals und in keinem Task erreicht.