Bedigungen des wechselseitigen Ausschlusses anhand eines Codebeispiels
-
hallo, ich habe folgenden code gegeben und muss überprüfen, ob diese die bedingungen des wechselseitigen Ausschlusses Mutual Exclusion, Progress Requirement und Bounded Waiting erfüllen.
also hier der code:
repeat flag[i] := TRUE // Pi signalisiert, dass er in den KB möchte while(flag[j]){ // falls Pj auch in den KB möchte if (turn !=i){ // bedeutet: turn=j ; also hat Pj den Vortritt flag[i] := FALSE; // Pi will nicht mehr in den KB while (turn !=i){ noop;} // sollange turn = j ist, wartet Pi. daher noop flag[i] := TRUE // nun will wieder Pi in den KB } } kritischer Bereich; turn = j; flag[i] := FALSE; unkritischer Bereich; until FALSE;
was die einzelnen Begriffe Mutual Exclusion, Progress Requirement und Bounded Waiting bedeuten, weiß ich. Aber ich kann es nicht direkt umsetzen und mit dem code erklären, weil ich nicht genau weiß, wie man vorzugehen hat.
edit: meine kommentare zu dem code habe ich in den code eingefügt, wobei die notation Pi den Prozess i darstellt und Pj den Prozess j. Und mit KB meine ich den kritischen Bereich. bezeichnung noop steht für "no operation"
wie geht man vor? was ist der erste schritt, was der zweite und so weiter...bis jetzt habe ich nirgendswo was dazu lesen können, deswegen stehe ich ein wenig aufm schlauch..wäre deshalb für jede hilfe dankbar
vielen dank, schon mla im Voraus
-
Guten morgen.
pac89 schrieb:
wie geht man vor? was ist der erste schritt, was der zweite und so weiter...bis jetzt habe ich nirgendswo was dazu lesen können, deswegen stehe ich ein wenig aufm schlauch..wäre deshalb für jede hilfe dankbar
In aller Regel reichen ein paar Sätze für solche Aufgaben. Ich würde also nicht vermuten, dass man hier ein Kalkül auspacken und die drei Eigenschaften formal spezifizieren und verifizieren muss. (Oder ist das eine Theo Inf Vorlesung in der bereits entsprechende kalküle durchgenommen wurden?)
Schreibe also einfach in Worten nieder, warum oder warum nicht, die Eigenschaften erfüllt sind.Siehe z.B. hier: http://en.wikipedia.org/wiki/Peterson's_algorithm
So ähnlich machst Du das eben für Dekkers Algo. Ok, vielleicht etwas ausführlicher, auf Wiki steht zu viel Definition und zu wenig Erklärung