Beruflich Dokumente
Kultur Dokumente
Stefan Ebener
M.A. IT-Management
SS 2012
Highest-Response-Ratio-Next (HRN)
Round-Robin:
- Verallgemeinerung von FCFS
- Prozesse werden in Reihenfolge ihrer Ankunft am Ende
Bereit-Warteschlange eingeordnet. Schlange wird zyklisch
nach FIFO abgearbeitet, wobei Prozess, die CPU entzogen
bekommen haben am Ende der Schlange wieder eingeordnet
werden
- Am weitesten verbreiteter Algorithmus mit
Vorrangunterbrechung; Vor allem bei Zeitscheiben-Verfahren
Beispiel:
Prozess: Bedienzeit:
P1 8 Ø Wartezeit:
P2 4 ((16-4)+(4)+(25-8)+(24-4))/4
P3 9 = 13,25
P4 5
Zeitachse: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
RR:
SJF (mit): P1 P1 P1 P1 P2 P2 P2 P2 P3 P3 P3 P3 P4 P4 P4 P4 P1 P1 P1 P1 P3 P3 P3 P3 P4 P3
x x x x
Beachte:
- Verfahren hat Vorteile von FCFS
- Ist bzgl. der Wartezeit nicht optimal, erlaubt aber eine faire und
kontinuierliche Bedienung eines jeden Prozesses
- Verbraucht allerdings mehr unnütze Verwaltungszeit, da es
häufiger zu Prozesswechsel kommen kann
+ Sollte nach Möglichkeit durch zusätzliche Hardware unterstützt
werden, dass Prozesswechsel möglichst billig werden z.B. viele
Registerbänke
- Performanz und Ø-Wartezeit hängt stark von der größe der
Zeitscheibe ab. Wird Zeitscheibe sehr groß gewählt, nähert
sich RR dem Verhalten des FCFS-Verfahrens. Zu kleine
Zeitscheibe – Overhead steigt!
Beispiel:
Beispiel:
Prozess: Ankunftszeit: Bedienzeit:
P1 0 8
P2 2 4
P3 5 9
P4 9 5
Die Ø Wartezeit ist nur deshalb so kurz, weil nach relativ kurzer Zeit keine neuen Prozesse mehr
ins System gekommen sind
Multilevel Queue
Threads
Threads
* genauer: Stackzeiger
Sequentielle Abarbeitung:
while(true)
{
DoSomething(); // irgendwas berechnen
if(QueryEvent()) // ist ein Ereignis angekommen?
{
e = ReceiveEvent(); // dann Ereignis abholen
ProcessEvent(e); // und bearbeiten
}
} // und wieder von vorne
Nebenläufige Abarbeitung
…
pthread_create(&p1, NULL, thread_1, *arg1);
pthread_create(&p2, NULL, thread_2, *arg2);
…
- Einfacherer Code
- Komplexere Vorbereitung und Koordination
Apr-12 Stefan Ebener M.A., Betriebssysteme Theorie 159
Prozesse und Threads
Prozessinteraktion
Prozess-Interaktion
- Sonderfall: Synchronisation
+ Steuerung der zeitlichen Reihenfolge von Aktivitäten (meist:
Zugriffe auf gemeinsame Ressourcen)
+ Problem: Verklemmungen (Deadlocks) durch zyklische
Wartebeziehungen
- Die letzten beiden Punkte dienen der Stabilität, sie sollen eine
Prozessverklemmungen verhindern.
- Die Leserzähler-
variable "RC"
speichert dabei die
Anzahl der aktiven
Leseprozesse. Der
Zugriff auf diese
Variable soll
synchronisiert erfolgt.
Monitor::Enter(o);
try
{
// Code that needs to be protected by the monitor
}
finally
{
// Always use Finally to ensure that you exit the monitor
Monitor::Exit(o);
}
Deadlocks
Deadlock vs. Livelock
- Am Beispiel Petri-Netz:
- Das bedeutet:
+
+
+
- Das bedeutet:
+
+
+
- Vogel-Strauß-Algorithmus
+
- Deadlock-Avoidance(Deadlock-Vermeidung)
+
- Deadlock-Prevention(Deadlock-Verhinderung)
+
- Praktikable Gegenmaßnahmen:
+ Erkennung und Abbruch eines Prozesses (z.B. bei Datenbank-
Transaktionen)
+ Deadlock-Avoidance (vorsichtige Ressourcen-Zuteilung: nur
dann, wenn dadurch garantiert kein Deadlock entsteht)
+ Deadlock-Prevention
+ Spooling: vermeidet wechselseitigen Ausschluss
+ Festlegen einer Belegungs-Ordnung auf den Ressourcen