10 - SP 2 / Kapitel 12-1 [ID:8692]
50 von 611 angezeigt

Ein schönen guten Morgen zu den Verbliebenen vor Weihnachten.

Schön, dass Sie da sind, dass ich nicht ganz alleine da bin.

Wir verlassen das Thema Prozesse und haben eigentlich den Rest des Semesters jetzt noch das andere große Thema, um das sich Betriebssysteme kümmern, das ist der Speicher.

Im Wesentlichen sind das eigentlich die zwei großen Themen.

Es gibt weitere Themen wie Interprozesskommunikation, was Sie auch in den Übungen im Rahmen dieser ganzen Socketkommunikationsgeschichten kennengelernt haben.

Aber auch Interprozesskommunikation hat im Wesentlichen mit Prozessen zu tun, es hat aber häufig auch mit Speicher zu tun,

denn wenn man nicht gerade über Rechnergrenzen hinweg kommuniziert, ist ein Medium der Interprozesskommunikation natürlich das, dass man gemeinsam Speicher hat.

Da kann man da eine schreibt was rein und die andere kann es rauslesen.

Und mit diesem Thema Speicher, das ja sehr vielfältig ist, es geht also los vom Hauptspeicher des Rechners und wie der einem Prozess zur Verfügung gestellt wird,

da geht es also heute im Wesentlichen im Kapitel über Adressraumkonzepte drum.

Dann ist natürlich auch die Frage, wenn ich Hauptspeicher habe, wie verteile ich ihn?

Das ist grobgranular, feingranular, feingranulare Verteilung haben Sie ja in der Systemprogrammierung 1 schon kennengelernt im Rahmen der Übung mit dieser Haldeprogrammierung.

Auch damit werden wir uns in diesem Zyklus jetzt beschäftigen.

Und dann gehört natürlich als ganz wichtige Geschichte auch der Hintergrundspeicher dazu, das wird dann das letzte Kapitel in der Vorlesung sein, wo wir uns dann mit Datalsystemen beschäftigen.

So jetzt fangen wir erstmal mit der Speicherverwaltung an und als erstes geht es mal um Adressräume.

Und ja, fassen wir das jetzt einfach irgendwo erstmal ein bisschen zusammen, den Leerstoff, worum geht es überhaupt?

Es geht also darum jetzt eben Adressräume zu behandeln und die Bedeutung der verschiedenen Ausprägungen von Adressräumen, wie wir sehen werden, gibt es also da ganz schöne Unterschiede detaillierter erfassen zu können.

Wir haben die realen Adressräume, das ist im Endeffekt eigentlich der real vorhandene Hauptspeicher und wie der adressierbar ist.

Dann gibt es logische Adressräume, das ist so die erste Abstraktionsschicht von dieser direkten Adressierung des Hauptspeichers und letztendlich abstrahieren also logische Adressräume von dieser direkten Adressierung und führen also so eine Zwischenstufe ein.

Sie abstrahieren aber nicht vom Speicher als solchen, es ist also über logischen Speicher immer nur auch realer Speicher adressierbar.

Und dann der virtuelle Speicher, der abstrahiert nicht nur von der Adressierungsart, wie ich also an welche Adresse rankomme, sondern auch vom Speicher selbst, also vom Vordergrund-Hintergrundspeicher.

De facto heißt es, dass ich mit virtuellem Speicher teile meines Hauptspeichers auslagern auf Hintergrundspeicher und bei Bedarf wieder einlagern, sodass ich letztendlich mehr virtuellen Speicher zur Verfügung haben kann, als ich realen Speicher habe, weil ich eben dann Zwischenvordergrund- und Hintergrundspeicher hin und her transferieren kann.

Dann geht es darum, Adressumsetzungstechniken vorzustellen, im Wesentlichen eben Seitenadressierung und segmentierte Adressierung.

Da geht es also im Wesentlichen dann eben darum, wie kann ich eine logische oder eine virtuelle Adresse auf eine reale Adresse abbilden.

Und schließlich geht es um verschiedene Modelle von Mehradressraumsystemen. Mehradressraumsysteme habe ich ja in dem Augenblick, wo ich mehrere Prozesse habe, von denen jeder seinen eigenen virtuellen oder seinen eigenen logischen Adressraum hat, aber überhaupt seinen eigenen Adressraum hat.

Und in dem Moment, wo ich mehrere Prozesse habe, habe ich eben auch mehrere Adressräume.

Und wie man da mit arbeiten kann, die wesentliche Fragestellung ist, oder die wesentliche Unterscheidung ist, habe ich also völlig abgeschottete Adressräume, jeder Prozess hat seinen ganz eigenen Adressraum und es gibt keinerlei Interaktion mit anderen.

Oder habe ich nur partiell private Adressräume und das ist eigentlich so der Normalfall im Alltag.

Ich habe zum einen Adressraumüberschneidungen zwischen Anwendungsprozessen und dem Betriebssystem.

Das Betriebssystem ist ja eigentlich im Prinzip auch nochmal ein eigenes Programm.

Und dieses Betriebssystemprogramm und das Anwendungsprogramm, das in dem Prozess läuft, die haben überlappende Adressräume.

Das hatte ich ja eigentlich bei diesen Skizzen, die ich immer wieder mal gemacht habe.

Ich habe ja Adressräume des Öfteren schon so mal ganz grob anskizziert und da hatte ich ja immer gesagt, so im oberen Bereich irgendwo liegt das Betriebssystem,

dass für das Anwendungsprogramm erstmal so nicht sichtbar ist, dass eben erst im Rahmen eines Systemcalls irgendwo ins Spiel kommt.

Und dieses Betriebssystem ist eben eigentlich in alle Anwendungsprogrammadressräume eingeblendet.

Und dann haben wir natürlich auch die Situation, dass wir durchaus auch Speicherbereiche haben können, die in mehrere Adressräume eingeblendet sind,

sodass sich eben gemeinsam Speicher zwischen verschiedenen Prozessen auch haben kann. Also Scherdmemorie. Gut, auch das wollen wir uns noch anschauen.

Zu den grundlegenden Fragestellungen, wenn es immer um Adressräume und Adressierungen geht, eine Grundfrage ist immer die Referenzfolge.

Also wie greift letztendlich ein laufender Prozess auf den Speicher zu?

Und im Endeffekt, wenn ein Prozess so vor sich hinläuft, dann generiert er ja Folgen von Adressen, auf die er zugreifen möchte.

Das tut er im Endeffekt immer dann, wenn er ein Befehl holt. Das ist letztendlich dann der Program-Counter, der ja auf irgendeine Speicheradresse zeigt,

von der der nächste Befehl gelesen wird. Und es sind natürlich die Adressen der Operanten einer Operation.

Also die variablen Adressen, auf die man immer zugreift, auf die man eben während der Laufzeit eines Prozesses zugreift.

Und wenn man letztendlich diese ganzen Adressen aufschreibt, auf die ein Prozess so darauein auch zugreift,

dann ist das letztendlich die Referenzfolge oder der Referenzstring. Der hat vor allem in der Literatur eine große Bedeutung,

weil man letztendlich, wenn man theoretische Untersuchungen über Speicherzugriffe macht und auch,

also gerade im Kontext von Seitenersetzungsstrategien, wenn man also einzelne Speicherseiten hat.

Und die Fragestellung ist, auf welche Seiten wird oder wie wird auf die Seiten zugegriffen.

Das ist natürlich eine sehr interessante Fragestellung im Kontext von virtuellen Adressräumen.

Wenn es darum geht, welche Seiten lagere ich aus, falls ich nicht genug Speicher habe.

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:29:22 Min

Aufnahmedatum

2017-12-21

Hochgeladen am

2017-12-21 19:51:31

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen