So, ja dann hallo und Grüß Gott zur heutigen Systemprogrammierung. Wir beschäftigen uns
ja jetzt seit einigen Wochen so mit dieser Thematik, also Prozesse und Synchronisationskonzepte,
sowohl in der Vorlesung als auch bei den Übungen. Ich bitte Sie, das auch noch ein paar zu bemerken,
dass wir in den Übungen eine ganze Menge über, also gerade jetzt mit den Signalen eben auch dieses
Thema besprochen haben. Irgendwann wird in der Evaluation nämlich, kommt immer diese Frage,
Abstimmung von Vorlesungen und Übungen und viele erkennen das dann überhaupt nicht,
dass es da tatsächlich Parallelen gibt. Also nochmal daran erinnern, dass es die tatsächlich gibt.
Gut, ja wir hatten, wenn ich das vielleicht mal nochmal mein, dass das Prozessgebene-Bild hernehme,
an das es sich vielleicht auch nicht dunkel noch erinnern aus der Systemprogrammierung 1,
da hatte Wasch in Kapitel 5 diese Schichtenstruktur vorgestellt und in der letzten Woche,
als wir über Synchronisationsmethoden, also diese Monitore gesprochen haben,
da bewegen wir uns letztendlich hier auf der obersten Ebene, also auf der problemorientierten
Sprachebene, Sprachenebene. Und es gibt eben Sprachen, die dieses Koordinierungskonzept haben.
Und heute wollen wir uns jetzt mal mit Koordinierungsmethoden beschäftigen,
ja etwas weiter unten. Also in der Sprachebene spielt in der Beziehung sicherlich keine weitere
Rolle, aber die Maschinenprogramm-Ebene, also letztendlich die Ebene, auf der zwar Maschinencode
vorliegt, aber es ist noch das Betriebssystem drunter, das heißt wir haben diese Mischung aus
nacktem Maschinencode, der direkt dann von der Maschine, also von der Mikroarchitektur-Ebene
ausgeführt wird, wo also Ebene 2 quasi nur durchreicht und dann diese speziellen Befehle,
also letztendlich die Systemcalls, die zur partiellen Interpretation durch das Betriebssystem führen.
Wo also dann letztendlich ganze Programmsequenzen auf der Betriebssystemebene abgearbeitet werden,
die dann eben weiter runter durchgegeben werden. So und es ist ja bei einem Systemcall nicht nur so,
dass da eben eine längere Befehlsfolge auf der Systemebene abläuft, sondern das Betriebssystem
greift ja gerade im Kontext von Systemcalls eben auch in Prozessabläufe ein. Und was
eben typischerweise passiert, also gerade wenn ich so ein Rowan-Rowan-Scheduling beispielsweise mache
oder überhaupt bei allen Schedulingmethoden eigentlich, dass im Kontext von einem Systemcall
beispielsweise wenn das Systemcall zu einer Blockade führt eben ein Prozesswechsel stattfindet
oder am Ende von einem Systemcall bevor zurückgeschaltet wird in das Anwendungsprogramm,
das nochmal überprüft wird, ist die Zeitscheibe abgelaufen oder hat der noch die beste Priorität
und im Zweifelsfall eben eine Prozessumschaltung, also ein Dispatching passiert. Dispatching haben
wir jetzt zwar nicht im Detail betrachtet, aber letztendlich verbirgt sich dahinter eben die
Umschaltung von einem Prozess auf einen anderen. So und all diese Mechanismen spielen natürlich
eine Rolle, wenn man sich über Koordinierungen Gedanken macht, eben über Koordinierung auf
dieser Ebene direkt oberhalb vom Betriebssystem. Und damit wollen wir uns also heute beschäftigen.
Und nächste Woche gehen wir dann noch einen Schritt weiter runter und gucken uns noch mal
auf der Hardware-Ebene an. Denn letztendlich, also Monitore kann ich ja nicht bauen, wenn ich
nicht solche Mechanismen wie Locker und Unlock habe oder P&V, also so eine Selma-Fohre, also ich muss
ja irgendwas haben, um Monitor zu betreten. Auch wenn das auf der programmiersprachlichen Ebene eben
ein abstraktes Konstrukt ist, muss ja der Compiler irgendwelche Befehle erzeugen daraus. Und die
müssen natürlich von den Ebenen drunter dann irgendwie realisiert werden. Und da wäre natürlich
die Maschinenprogramm-Ebene eine sinnvolle Sache. So, also das Wesentliche auf dieser
Abstraktionsebene, dieser Maschinenprogramm-Ebene ist eben, die durch das Betriebssystem erreichte
funktionale Anreichungen der CPU. Einerseits eben, was ich gerade erzählt hatte, durch Einführung
des Prozesskonzepts und natürlich auch hinsichtlich der Art und Weise, wie Prozesse verarbeitet werden,
wann Prozesse dran kommen. Und die Techniken zur Synchronisation gleichzeitig an Prozesse können
natürlich jetzt auf dieser Ebene noch auf Konzepte zurückgreifen, die die befehls-, die nackte
Befehlsatz-Ebene gar nicht bietet. Und das funktioniert zum einen dadurch, dass ich jetzt
die Möglichkeit habe, Prozessinstanzen, also konkrete Prozesse ganz kontrolliert schlafen zu
legen und zum späteren Zeitpunkt wieder aufzuwecken. Das kann ich also im Kontext von Bedingungsvariablen
machen. Wenn ich dieses Weight bei der Bedingungsvariable habe, dass ich dann einfach sage, ok, dann lege ich
Presenters
Zugänglich über
Offener Zugang
Dauer
01:27:00 Min
Aufnahmedatum
2012-11-29
Hochgeladen am
2019-05-02 00:49: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