Version [22411]
Dies ist eine alte Version von BSys04Synchronisation erstellt von RonnyGertler am 2013-03-26 16:17:42.
Betriebssysteme (Betriebssystemtheorie) - Kapitel 4 - Synchronisation
Inhalte von Dr. E. Nadobnyh
4.1. Einführung
Grundbegriffe
1) Eine Nebenläufigkeit ist die parallele bzw. pseudoparallele Ausführung von Prozessen. Es gibt zwei Formen von
nebenläufigen Prozessen:
- voneinander unabhängige Prozesse, die nur um die gemeinsamen Betriebsmittel konkurrieren,
- voneinander abhängige Prozesse, die zur Erfüllung einer gemeinsamen Aufgabe kooperieren.
2) IPC (interprocess communication) ist eine Kooperation zwischen Prozessen oder Threads. IPC ist ein Oberbegriff für Synchronisation und Kommunikation.
3) Eine Synchronisation ist eine zeitliche Abstimmung der abhängigen Prozesse.
4) Eine Kommunikation ist ein Datenaustausch zwischen abhängigen Prozessen.
Klassifikation
Problem des wechselseitigen Ausschlusses
Synonyme: gegenseitiger Ausschluss, Mutual-Exclusion-Problem, Counter-Problem.
Das Problem entsteht im System mit mehreren Prozessen, die die gemeinsamen Ressourcen ändern können.
Eine verlorene Aktualisierung (Lost-Update) ist ein Datenverlust beim unkoordinierten Zugriff auf eine Ressource von mehreren nebenläufigen Prozessen.
Ein zeitkritischer Ablauf (Race Condition) ist eine Situation, bei der mehrere Prozesse:
- gemeinsame Betriebsmittel nutzen und
- das Ergebnis der Nutzung von der zeitlichen Reihenfolge der Operationen abhängt.
⇒ Demo 1.
Ein kritischer Bereich (kritischer Abschnitt) ist ein Codeabschnitt, in dem der Prozess eine gemeinsame Ressource ändert.
Ein wechselseitiger Ausschluss bedeutet, dass ein kritischer Bereich zu einer Zeit nur durch einen der Prozesse durchlaufen werden darf.
Die zeitliche Reihenfolge von Prozessen, die den kritischen Bereich betreten wollen, und die Betretensanzahl ist unwichtig.
Prozesse, die einen kritischen Abschnitt ausführen wollen, müssen warten, bis dieser frei ist. Es gibt zwei Möglichkeiten das Warten zu realisieren:
- aktives Warten und
- Blockierung.
Sperrvariable
1) Synonyme: Sperre, Lock, Spinlock.
2) Lösungsart. Diese Lösung wurde als Softwarelösung (Selbstverwaltungslösung) benannt. Dabei werden nur die traditionellen programmtechnischen Mittel verwendet.
3) Implementierung. Mehrere Prozesse oder Threads besitzen eine gemeinsame Sperrvariable, z.B.
int lock;
Der Zustand lock=0 bedeutet, dass sich kein Prozess im kritischen Bereich befindet.
4) Eintritt-Operation. Vor dem kritischen Bereich muss jeder Prozess folgende Anweisungen ausführen:
while(lock==1); lock=1;
Beide Anweisungen werden als eine Operation „Sperre testen und setzen“ bezeichnet.
5) Austritt-Operation. Hinter dem kritischen Bereich muss jeder Prozess die Operation „Sperre aufheben“ ausführen:
lock=0;
6) Aktives Warten (busy loop, Polling, Busy Waiting) ist ein ständiges Abfragen der Sperrvariable, z.B. in der Schleife:
while(lock==1);
7) Nachteil der Sperrvariable: Das ist die so genannte naive Lösung mit der gleichen Fehler-Ursache. Die Operation „Sperre testen und setzen“ kann unterbrochen werden und der Prozess kann umgeschaltet werden.
8) Nachteile der Softwarelösungen:
- Sie verwenden aktives Warten.
- Sie führen zu recht komplexen Programmsätzen, besonders bei mehreren Prozessen.
TSL -Befehl
Die meisten Prozessoren unterstützen einen speziellen Maschinenbefehl TSL (Test and Set Lock). Die Operation „Sperre testen und setzen“ wird in einem Befehl ununterbrechbar (atomar) implementiert. Diese Lösungsart wurde als Hardwarelösung benannt.
Die Nachteile:
1)Aktives Warten wird verwendet:
enter: TSL R1, LOCK // kopiere LOCK in R1 // und setze LOCK auf 1 CMP R1, #0 // war LOCK = 0 ? JNZ enter // falls ≠ 0, zur Wiederholung // falls LOCK ≠ 0, ist KB gesperrt
CategoryBSys