3 - Systemprogrammierung 2 [ID:10887]
50 von 1030 angezeigt

Also willkommen zur heutigen Systemprogrammierungsvorlesung und wir wollen uns heute etwas weiter mit dem

Thema Prozessverwaltung beschäftigen. Wir hatten ja vor zwei Wochen in der letzten Vorlesung

uns schon so ein bisschen über das Thema Scheduling, Einplanungsverfahren oder Einplanung überhaupt

unterhalten und heute geht es jetzt im Wiesen nicht einfach darum, wie macht man es denn

nun konkret, welche Strategien gibt es da, was sind Kriterien dafür überhaupt, wie

man vorgeht. Und als erstes will ich mal so eine Klassifikation von verschiedenen Scheduling-Strategien,

denn es gibt da doch eine sehr breite Palette davon, vorstellen und dann anschließend einige

konkrete Verfahrensweisen, also konkrete Strategien vorstellen und auch darauf eingehen,

wie die sich im einzelnen Verhalten, was so ihre Charakteristika sind, wofür man sie

auch verwendet, denn für unterschiedliche Einsatzzwecke sind eben auch unterschiedliche

Strategien einfach dann mehr oder weniger gut geeignet. Je nachdem, wie wir in der Zeit

gehen, müssen wir sehen, dieses Kapitel hat einen Anhang, wo ein paar Fallstudien sind,

also das Scheduling-Strategie, so eine traditionelle alte Unix-Scheduling-Strategie, dann eine

eigentlich sehr moderne, die nur einen Nachteil hat, nämlich, dass sie patentgeschützt ist

aus dem Solaris-System, also von Sun Microsystems entwickelt, die heute vor allem in großen

kommerziellen Systemen eingesetzt wird und die Fallstudien befassen sich dann auch noch

mit den Scheduling-Strategien, wie sie in der Praxis heute in zwei verschiedenen Lidungsvarianten

eingesetzt werden. Und da muss man mal schauen, je nach Zeit gehe ich darauf ein und ansonsten

ist das im Prinzip so ein bisschen Hintergrundmaterial, dass sie sich halt einfach mal durchgucken

können. So, nochmal so zur Erinnerung, ganz allgemein, beim Scheduling, es geht letztendlich

darum, es gibt eine Warteschlange, in dieser Warteschlange befinden sich alle Prozesse,

die im Zustand bereit sind und es gibt irgendwelche Betriebsmittel und diese Betriebsmittel,

typischerweise die CPU, aber ganz allgemein betrachtet, können es natürlich irgendwelche

Dinge einfach sein, also irgendwelche Ressourcen, die eben Prozessen zur Verfügung gestellt

werden sollen und Prozesse müssen eventuell darauf warten und wenn sie eben die Ressourcen,

die sie zur Bearbeitung brauchen, haben, dann arbeiten sie eben, werden unter Bestand fertig

und dann ansonsten werden sie möglicherweise auch wieder in die Warteschlange zurückgestellt

für den Fall, dass sie eben erneut auf irgendwelche Ressourcen, die gleichen oder andere warten

müssen. Das ist also so ganz abstrakt gesehen einfach so das Konzept, um das es geht und

so ein konkreter Scheduling-Algorithmus ist letztendlich dadurch charakterisiert, in

welcher Reihenfolge werden die Prozesse in die Warteschlange gesteckt und unter welchen

Bedingungen werden sie da reingetan. So und wenn man jetzt diese verschiedenen Einplanungsverfahren

allgemein erstmal kategorisiert, dann ist für eine erste Unterscheidung kooperativ

bzw. präemptiv und der Souverän, also derjenige der im Prinzip die Entscheidungen trifft,

ist im einen Fall, im Fall des kooperativen Schedulings die Anwendung und beim präemptiven

Scheduling ist es das Betriebssystem. Kooperatives Scheduling heißt also, ich habe also voneinander

unabhängige Prozesse und ein unkooperativer Prozess könnte die CPU monopolisieren. Das

heißt also, wenn ein Prozess da nicht mitspielt, bei diesem kooperativen Scheduling, dann

haben die anderen im Endeffekt keine Chance. Man ist also darauf angewiesen, dass die Prozesse

kooperativ sind. Diese Kooperation erfolgt im Wesentlichen eigentlich dadurch, dass jeder

Prozess in regelmäßigen Abständen einfach mal durch diesen Scheduling-Algorithmus durchläuft

und nachdem das Scheduling-Algorithmus typischerweise eben eine Funktion des Betriebssystems ist,

muss man davon ausgehen, dass also während der Programmausführung immer wieder mal das

Betriebssystem aufgerufen wird. Wenn Sie jetzt also einen Prozess in so einer Menge

von kooperativen Prozessen haben und ein Prozess kommt auf die Idee, ich berechne jetzt mal

Pi und gebe auch irgendwelche Zwischenergebnisse nicht zwischendurch mal aus, würde also sagen

man immer, wenn er zehn Stellen ausgerechnet hat, die ausgeben, wäre das eine feine Sache,

weil dann macht er nach in regelmäßigen Abständen eine Ausgabeoperation, das ist ein Systemaufruf

und dann funktioniert das, aber wenn er sagt, ok ich berechne einfach mal Pi solange ich

rechnen darf, um Pi zu berechnen braucht man keine Systemaufrufe, dann wird er sehr unkooperativ

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:23:20 Min

Aufnahmedatum

2012-11-08

Hochgeladen am

2019-05-02 01:09:03

Sprache

de-DE

  • Grundlagen von Betriebssystemen (Adressräume, Speicher, Dateien, Prozesse, Koordinationsmittel; Betriebsarten, Einplanung, Einlastung, Virtualisierung, Nebenläufigkeit, Koordination/Synchronisation)
  • Abstraktionen/Funktionen UNIX-ähnlicher Betriebssysteme

  • Programmierung von Systemsoftware

  • C, Make, UNIX-Shell (Solaris, Linux, MacOS X)

Lernziele und Kompetenzen:

Die Studierenden

  • erwerben fundierte Kenntnisse über Grundlagen von Betriebssystemen

  • verstehen Zusammenhänge, die die Ausführungen von Programmen in vielschichtig organisierten Rechensystemen ermöglichen

  • erkennen Gemeinsamkeiten und Unterschiede zwischen realen und abstrakten (virtuellen) Maschinen

  • erlernen die Programmiersprache

  • entwickeln Systemprogramme auf Basis der Systemaufrufschnittstelle UNIX-ähnlicher Betriebssysteme

Einbetten
Wordpress FAU Plugin
iFrame
Teilen