www.wikidata.de-de.nina.az
Der Algorithmus von Peterson auch bekannt als die kanadischen Prozesse ist eine Losung des Problems des wechselseitigen Ausschlusses Mutex in der dezentralen Steuerung von Prozessen Prozesssynchronisation Er wurde 1981 von Gary L Peterson formuliert 1 und gewahrleistet dass stets nur ein Prozess in einen kritischen Abschnitt gelangen kann Sequentialisierung In der hier beschriebenen Form kann er nur 2 Prozesse wechselseitig ausschliessen Inhaltsverzeichnis 1 Ablaufschema 2 Funktionsweise 2 1 Beispiel 1 2 2 Beispiel 2 3 Bedeutung 4 Siehe auch 5 EinzelnachweiseAblaufschema BearbeitenIn C Code kann der Algorithmus von Peterson wie folgt dargestellt werden 2 define FALSE 0 define TRUE 1 define N 2 Anzahl der Prozesse volatile int turn Gibt an wer gerade an der Reihe ist volatile int interested N Alle Werte mit 0 FALSE initialisieren void enter region int process int other Prozessnummer des anderen Prozesses other 1 process Der andere Prozess interested process TRUE Interesse zeigen turn other Flag setzen while interested other TRUE amp amp turn other Leeranweisung Aktives Warten void leave region int process Prozess der die kritische Region verlasst interested process FALSE Zeigt den Ausstieg aus dem kritischen Bereich an Funktionsweise BearbeitenBevor eine kritische Region betreten wird ruft jeder Prozess enter region int process mit seiner eigenen Prozessnummer 0 oder 1 als Parameter auf Der Eintritt in die kritische Region wird damit so lange verzogert bis er sicher ist Sobald ein Prozess die kritische Region wieder verlasst ruft er leave region int process mit seiner eigenen Prozessnummer als Parameter auf Jetzt kann ein anderer Prozess die kritische Region betreten sofern er das mochte Beispiel 1 Bearbeiten Es befindet sich kein Prozess in der kritischen Region Der Prozess mit der Prozessnummer 0 ruft enter region int process mit seiner Prozessnummer 0 als Parameter auf Durch das Setzen von interested process TRUE wobei process 0 zeigt dieser Prozess sein Interesse an die kritische Region zu betreten Mittels turn other gibt er dem anderen Prozess die Gelegenheit bei Interesse die kritische Region zu betreten Da der Prozess mit der Prozessnummer 1 nicht interessiert ist die kritische Region zu betreten kehrt die Funktion enter region int process ohne das Ausfuhren der while Schleife sofort zuruck Damit betritt der Prozess mit der Prozessnummer 0 die kritische Region Bekundet der Prozess mit der Prozessnummer 1 jetzt Interesse daran die kritische Region zu betreten muss er so lange warten bis der Prozess mit der Prozessnummer 0 leave region int process mit seiner eigenen Prozessnummer als Parameter aufruft um die kritische Region zu verlassen Beispiel 2 Bearbeiten Zwei Prozesse rufen fast gleichzeitig enter region int process mit ihren Prozessnummern als Parameter auf Somit werden beide Komponenten des interested Array auf TRUE gesetzt Einer der beiden Prozesse sagen wir der Prozess mit der Prozessnummer 1 speichert den Wert der Variable turn als letzter und setzt ihn somit auf 0 turn other Der Prozess mit der Prozessnummer 0 fuhrt somit die while Schleife nicht aus und retourniert sofort Der Prozess mit der Prozessnummer 0 betritt die kritische Region Der Prozess mit der Prozessnummer 1 muss nun warten da sowohl interested other auf TRUE steht als auch turn other Er wartet so lange bis der Prozess mit der Prozessnummer 0 leave region int process aufgerufen hat seine interested Komponente zuruck auf FALSE setzt und die kritische Region somit wieder verlassen hat Bedeutung BearbeitenDer Peterson Algorithmus ist simpler als der Dekker Algorithmus der das Problem des wechselseitigen Ausschlusses ebenfalls lost Dennoch erbt er den bedeutenden Nachteil der dezentralen Steuerung Wartende Prozesse geben den Prozessor nicht ab sondern beanspruchen ihn durch Aktives Warten Gebraucht wird ein Algorithmus wie der Peterson Algorithmus eigentlich nur zur Realisierung von wechselseitigem Ausschluss auf einem Computersystem mit zwei Prozessoren die keine Instruktion wie Test and set oder Compare and swap haben Heutige Prozessoren haben dies aber normalerweise In einer Hochsprache benutzt man ausschliesslich vorhandene Sprachelemente wie Semaphore oder Methoden und Anweisungsfolgen die als synchronized deklariert werden Dies hat den Vorteil dass ein wartender Thread blockiert d h den Prozessor fur andere Aufgaben freigibt Es ist moglich den Peterson Algorithmus zu verallgemeinern so dass das Problem des wechselseitigen Ausschlusses von n parallelen Prozessen gelost werden kann Siehe auch BearbeitenDekker AlgorithmusEinzelnachweise Bearbeiten G L Peterson Myths About the Mutual Exclusion Problem Information Processing Letters 12 3 1981 115 116 Andrew S Tanenbaum Moderne Betriebssysteme 3 aktualisierte Auflage Pearson Studium ISBN 978 3 8273 7342 7 Abgerufen von https de wikipedia org w index php title Algorithmus von Peterson amp oldid 233470607