73 - 4 Adressraumbezug [ID:27648]
50 von 161 angezeigt

Nun, die Frage, wie effizient praktisch so eine Abspeicherung der Locheläste geschehen kann,

hängt unter anderem eben auch damit zusammen, wie der Adressraumbelegungsplan eines Betriebssystems

für einen gegebenen Rechner aussieht und nach welchem Adressraummodell das Betriebssystem

organisiert ist. Wir wollen mal hier ein durchaus gängiges Beispiel betrachten. Wir nehmen mal eine

32-bit-Maschine an und betrachten mal einen Hauptspeicher von circa 1 Gigabyte, der praktisch

im realen Adressraum in zwei Blöcken partitioniert ist. Da haben wir einmal so einen, sagen wir mal,

konventionellen Speicher ab der Adresse 0, am Anfang des Hauptspeichers von circa 640 Kilobyte und

denn danach kommend den größeren Teil als erweiterter Speicher ab der Adresse 0x100000.

Wir wollen mal weiter annehmen, dass für das Betriebssystem selbst und der Adressraum des

Betriebssystems eben eine identische Abbildung definiert ist und zwar eine identische Abbildung

von den logischen zu den realen Adressen. Wir schauen uns diese Abbildungstechnik gleich auf

den nächsten Fodi an. Jetzt wollen wir erstmal nur die Organisation dieses Adressraums kurz

beleuchten und dann würden wir ungefähr diese Sicht hier haben. Der gesamte Betriebssystem

Adressraum, die Partition, die für das Betriebssystem dort reserviert ist, geht von 0 bis hier unten 3

ffffff. Das wäre der gesamte Bereich, der wirklich dem Betriebssystem zur Verfügung steht. Das wäre

sozusagen der 1 Gigabyte Bereich. Danach kommt dann in dem Adressraum der Bereich, der für die

Maschinenprogramme vorgesehen ist. Dann sehen wir hier noch sowas wie Memory mapped IO Bereich,

dieser Speicher abgebildeten Ausgabebereich, je nach Hardware und Art und Weise wie die

Peripherie dann etwa angesteuert wird. Diese Adressraum Partition für das Betriebssystem

macht also die unteren 1 Gigabyte aus. Hier unten im konventionellen Speicher nehmen wir mal an,

dass da das gesamte komplette Betriebssystem zumindest von dem Textbestand, also der Code selbst,

Platz hat. Der erweiterte Speicher hier, der große weiße Fleck, den wir hier haben,

soll zur Ablage der Maschinenprogramme bestimmt sein. Das heißt, der Text, der Datenbereich,

die Stacks der Maschinenprogramme liegen alle in diesem erweiterten Speicher. Sehr wohl ist es aber

so, dass der Adressraumbereich für die Maschinenprogramme halt hier eben ab dieser Grenze

existiert. Man muss ja noch mal daran denken, dass die Maschinenprogramme für die Maschinenprogramme

ein logischer oder virtueller Adressraum definiert ist. Da werden diese logischen,

virtuellen Adressen auf die entsprechenden realen Adressen abgebildet, wo denn das jeweilige

Maschinenprogramm liegt. Dieses liegt dann eben in diesem realen Adressbereich, der durch diesen

erweiterten Speicher gegeben ist. Hier in diesem Speicherbereich liegt dann eben auch die Lochliste.

Das wäre die Idee. Initial hätten wir eine Situation, wo dann praktisch wir ein einziges

großes Loch haben in diesem erweiterten Speicher. Das heißt also, das wäre sozusagen der Urzustand,

nachdem das Betriebssystem sozusagen hochgefahren ist und bevor das erste Maschinenprogramm überhaupt

zur Ausführung kommt. Im Betriebssystem wird es dann also irgendeine Variable geben, letztendlich

ein Pointer auf den Anfang dieser Lochliste. Das heißt auf das Kopfelement dieser Lochliste.

Und da sehen wir eben, dass dieses Kopfelement das einzige Element ist. Es gibt keinen Nachfolger,

es ist der Niedelzeiger hier und hier wird dann halt entsprechend der Datenstruktur,

die wir vorhin betrachtet haben, eben die Größe für dieses Loch letztendlich ausgewiesen. Also

diese Zahl, die knapp hier in Gigabyte ausmacht, definiert dann letztendlich die Lochgröße über

diesen gesamten erweiterten Speicherbereich. Das ist die Situation, in der wir uns befinden.

So die identische Abbildung, dieses sogenannte Identity Mapping bedeutet denn letztendlich

nichts weiter, dass eben eine logische virtuelle Adresse immer identisch zu einer entsprechenden

realen Adresse ist. Und das haben wir hier sinnigerweise für den Adressraum des Betriebssystems

vorgenommen, indem denn alle logischen virtuellen Adressen eines Betriebssystems eben eins zu eins

gleichzeitig einer realen Adresse ist. Hier wäre natürlich dann auch entsprechend das Adressraum-

Konzept, die Seitendeskriptoren oder die Segment-Deskriptoren, je nachdem welches Modell

man fährt, entsprechend so programmiert, dass denn die Deskriptoren eine Abbildung von der logischen

virtuellen zur realen Adresse halt machen. Aber es ist eine identische Abbildung. Wenn wir also jetzt

von der Adresse 1024 halt ausgehen würden, logisch, dann würde der Wert 1024 eben auch tatsächlich

als reale Adresse über die Deskriptoren und den Abbildungstabeln als Ergebnis kommen und man dann

Teil eines Kapitels:
12.2 Speicherzuteilung

Zugänglich über

Offener Zugang

Dauer

00:18:00 Min

Aufnahmedatum

2021-01-12

Hochgeladen am

2021-01-12 12:58:37

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen