Guten Morgen zur heutigen Systemprogrammierung.
Das Thema Betriebsmittel wird uns zumindest heute noch beschäftigen, aber dann ist wirklich
Schluss.
Nach all diesen Mechanismen, wie wir jetzt gleichzeitig Zugriffe auf Betriebsmittel
in den Griff bekommen können, geht es heute darum, welche Folgen so einen in den Griff
bekommen, wenn man es dumm anstellt.
Ich werde jetzt noch mal ganz kurz auf dieses Thema Betriebsmittel mit Klassifikation und
wie man sie verwaltet eingehen und dann das zentrale Thema heute sind Verklemmungen.
Wir hatten Betriebsmittel ja in verschiedene Kategorien eingeteilt, einerseits wiederverwendbare,
einerseits konsumierbare Betriebsmittel, einerseits wiederverwendbare, noch mal unterscheidbare,
eine gemeinsame nutzbare, exklusiv nutzbare.
Wenn man es genau betrachtet, dieses gemeinsame Nutzen muss man auch noch mal ein bisschen
differenzieren.
Bosch hatte in seinen Vorlesungen eigentlich an der Stelle immer zwischen teilbaren und
unteilbaren Betriebsmittel unterschieden.
Bei Teilbar ist jetzt natürlich die Frage, wenn man Betriebsmittel teilt, wie teilt
man sie?
Teilt man sie sich zeitlich auf, was ja eine gemeinsame Nutzung wäre?
Typisches Beispiel ist die CPU.
Der eine Prozess kriegt sie ein Stückchen weiter, dann kriegt sie der andere Prozess.
Aber zu einem Zeitpunkt natürlich nur exklusiv.
Aber letztlich ist es eine gemeinsame Nutzung, zeitliche Teilung.
Andere Art der gemeinsamen Nutzung wäre räumliche Teilung, typischerweise bei Speicher.
Ich habe einen großen Speicherbereich und teile ihn auf und gebe Stücken davon an die
einzelnen Prozesse, damit diese Stücken nutzen können.
Typischerweise wird so ein Stück dann aber auch wieder exklusiv genutzt.
Aber der gesamte Speicher, wenn ich ihn als Ganzes betrachte, gemeinsam genutzt.
Ja und schließlich die wirkliche gemeinsame Nutzung im Sinne von zum Beispiel lesenden
Zugriff auf den Speicher, dass wirklich mehrere gemeinsam lesend auf den Speicher zugreifen
können, ohne dabei sich in die Quere zu kommen, weil sie ihn ja nicht modifizieren und dann
ist das ja unproblematisch.
Also insofern ist dieses Thema gemeinsam nutzbar, durchaus nochmal zu differenzieren.
Und auch diese Fragestellung teilen, da gibt es sich auch wieder so, also gerade wenn man
das hier mit dem Englischen vergleicht, entsteht durchaus so eine Mehrdeutigkeit, weil in der
englischen Literatur unterscheidet man zwischen shared resources und divisible resources.
Und sharing heißt natürlich gemeinsam nutzen im Sinne von wirklich gleichzeitig auch gemeinsam
zugreifen können und divisible resources sind welche, die ja eben auch teilbar sind.
Also insofern ist das zwar jetzt hier in dieser Kategorisierung momentan nur ein Punkt und
ich habe mir ja schon mal überlegt, dass man das tatsächlich an der Stelle nochmal
weiter untergliedern sollte, um das deutlich zu machen.
In der Praxis bedeutet es aber ganz ganz andere Sachen.
Ich meine zeitliche Aufteilung halt im Sinne von einem CPU-Scadueling oder räumliche Aufteilung
im Sinne von einer Speicherverwaltung, wie wir sie jetzt dann auch noch kennenlernen
werden, das sind doch sehr sehr unterschiedliche Dinge.
Gut und das sind dann eben so Beispiele für solche Ressourcen und wenn man jetzt nochmal
die Unterscheidung zwischen konsumierbaren und wiederverwendbaren Betriebsmitteln hernimmt,
bei konsumierbaren Betriebsmitteln redet man typischerweise von einer unbegrenzten Anzahl
von solchen Ressourcen, also es kommen immer wieder welche nach und man hat in der Regel
dann an der Stelle auch eine einseitige Synchronisation, das heißt also derjenige der sie produziert,
da kommt es natürlich ja doch beim reinen Konsumieren, derjenige der sie produziert,
Presenters
Zugänglich über
Offener Zugang
Dauer
01:26:20 Min
Aufnahmedatum
2012-12-13
Hochgeladen am
2019-05-01 20:49:02
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