6 - Systemprogrammierung 2 [ID:10890]
50 von 791 angezeigt

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

Teil einer Videoserie :

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen