Welcome! » Log In » Create A New Profile

Petersons Algorithmus

Posted by Jonathan 
Petersons Algorithmus
March 24, 2006 02:25PM
Kann mir jemand erklären, was den Unterschied bei präemptivem und nicht-präemptivem Multitasking bei Petersons Algorithmus ausmacht? (Übungsblatt 7, Aufgabe 3)

Wenn ich die Korrektur meines Übungsblattes richtig verstehe, funktioniert der wechselseitige Ausschluss nur bei präemptivem Multitasking... Warum nicht beim nicht-präemptiven? Oder stimmt das auch nicht?

Danke schonmal...

Jonathan
Re: Petersons Algorithmus
March 24, 2006 02:37PM
Hallo,

bei nicht-präemptivem Multitasking kann es zu einem Deadlock kommen!
z.B.:
turn==1, P0 fängt an
wegen nicht-präemptivem Multitasking gibt P0 nie ab.
Busy Waiting von P0 und Deadlock

Grüße
Stefan


Stefan Disch
Lehrstuhl für Betriebssysteme
Geb. 051 / Raum 02-031
Nachfrage
March 24, 2006 05:52PM
Hallo,

ich muss nochmal nachhaken.

turn==1 bedeutet doch, dass der Prozess 1 "dran ist", oder?

P0 landet also in einem Deadlock, das sehe ich ein.

Aber bei "wegen nicht-präemptivem Multitasking gibt P0 nie ab" muss es "P1" heissen, oder?

Danke schonmal für die schnelle erste Antwort!

Jonathan
Sven Wehner
Re: Petersons Algorithmus
March 24, 2006 06:30PM
turn==1 heißt eigentlich nur, dass er in den KA dürfte (Konjunktiv!). Aber nicht, dass er jetzt gerade an der Reihe ist.

Die Situation ist die folgende: P0 durchläuft endlos die Schleife und "tut nichts" (busy waiting), was aber immer noch nicht heißt, dass er P1 mal dranlässt.

Naja, der Algorithmus funktioniert ja nur deshalb (präemptiv), weil irgendwann diese Endlosschleife (vom Scheduler) unterbrochen wird und der andere Prozess an die Reihe kommt.
Bei einem nicht-präemptivem System ist jedoch nicht gesichert, dass der Prozess die Endlosschleife unterbricht, um den anderen Prozess arbeiten zu lassen.

Würde man jedoch das "tue nichts" durch ein "gebe die Rechenzeit ab" ersetzen, sollte es wieder funktionieren.

CYa Sven
Sorry, you do not have permission to post/reply in this forum.