|
|
Zeile 26: |
Zeile 26: |
|
| |
|
| <br /> | | <br /> |
|
| |
| == Einstufige Seitentabellen ==
| |
| <p> | | <p> |
| <loop_index>Seitentabelle, einstufig|einstufige Seitentabelle</loop_index>
| | == So geht es weiter: == |
| Damit die Hintergründe zu einstufigen Seitentabellen verstanden werden können, sind zunächst einige Umrechnungen nötig. Dies geschicht in der folgenden Aufgabe:
| |
| </p> | | </p> |
|
| |
| <br />
| |
| == Aufgabe 1 ==
| |
| <p> | | <p> |
| <loop_area type="task"> | | <loop_area type="arrangement"><loop_toc> </loop_toc></loop_area> |
| <loop_task title="Wenn du es umrechnen kannst, dann kannst du es auch verstehen!"> | |
| <p>
| |
| Ein Computersystem arbeitet mit der virtuellen Speicherverwaltung. Es gelten folgende Voraussetzungen:
| |
| * Physikalischer Adressraum:<br />Der (in den Rechner eingebaute) physikalische Speicher habe eine Größe von 512 [[Speicherwerk#2er-_oder_10er-Potenzen|MiB]].
| |
| * Virtueller Adressraum:<br />Der (jedem Prozesess zugeordnete) virtuelle Speicher habe eine Größe von 4 [[Speicherwerk#2er-_oder_10er-Potenzen|GiB]].
| |
| * Ein Seitenrahmen (Pageframe) habe eine Größe von 64 [[Speicherwerk#2er-_oder_10er-Potenzen|KiB]].
| |
| * Eine (virtuelle) Seite hat per Definition die gleiche Größe wie ein Seitenrahmen, also auch 64 [[Speicherwerk#2er-_oder_10er-Potenzen|KiB]].
| |
| </p>
| |
| <p>
| |
| Berechne:
| |
| </p>
| |
| <p>
| |
| * Aus wievielen Seitenrahmen besteht der physikalische Adressraum?<br /><small>Gib die Antwort sowohl als Dezimalzahl, als auch als 2er-Potenz an!</small>
| |
| </p>
| |
| <p>
| |
| * Aus wievielen Seiten besteht ein virtueller Adressraum?<br /><small>Gib die Antwort sowohl als Dezimalzahl, als auch als 2er-Potenz an!</small>
| |
| </p>
| |
| <p>
| |
| * Wieviele Byte ergeben 64 [[Speicherwerk#2er-_oder_10er-Potenzen|KiB]] umgerechnet?<br /><small>Gib die Antwort sowohl als Dezimalzahl, als auch als 2er-Potenz an!</small>
| |
| </p>
| |
| </loop_task>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| Die bei den Umrechnungen ermittelten Werte werden in dem folgenden Video wieder aufgegriffen. Es erklärt die Hintergründe einer einstufigen Seitentabelle und wie die MMU diese nutzt.
| |
| </p>
| |
| | |
| <br />
| |
| | |
| == Adressumrechnung mit einstufiger Seitentabelle ==
| |
| <p>
| |
| <loop_index>Adressumrechnung mit einstufiger Seitentabelle</loop_index>
| |
| <loop_media type="video" title="MMU: Adressumrechnung mit einstufiger Seitentabelle (06:32)" description="http://youtu.be/aSSmsETQARw" copyright="CC-BY" index=true show_copyright=true>
| |
| {{#ev:youtube|aSSmsETQARw|700}}
| |
| </loop_media>
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| <loop_index>Länge, virtuelle Adresse|Länge, physikalische Adresse|virtuelle Adresse, Länge|physikalische Adresse, Länge</loop_index>
| |
| Das im Video erläuterte Beispiel geht davon aus, dass in den betrachteten Rechner ein physikalischer Speicher (RAM) von 512 [[Speicherwerk#2er-_oder_10er-Potenzen|MiB]] eingebaut ist. Jedem Prozess wird vom Betriebssystem ein virtueller Speicher von 4 [[Speicherwerk#2er-_oder_10er-Potenzen|GiB]] zugewiesen. Aus diesen Voraussetzungen ergeben sich die Adresslängen:
| |
| * Länge einer virtuelle Adresse: 32 Bit
| |
| * Länge einer physikalische Adresse: 29 Bit
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| <loop_area type="important">
| |
| <p>
| |
| Basiert das betrachtete Rechnersystem auf anderen (physikalischen und virtuellen) Speichergrößen, so ändern sich auch die Adresslängen!<br />
| |
| <br />
| |
| <small>([[Seitentabellen#Aufgabe_3|Siehe Aufgabe 3 unten.]])</small>
| |
| </p>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| | |
| == Beispiel einer Seitentabelle ==
| |
| <p>
| |
| In der folgenden Abbildung sieht man die im [http://youtu.be/aSSmsETQARw Video] gezeigte Seitentabelle. Sie besitzt insgesamt 65.536 Zeilen.
| |
| </p>
| |
| | |
| <p>
| |
| <loop_figure title="Die im Video gezeigte Seitentabelle" description="" copyright="CC-BY" index=true show_copyright=true>
| |
| [[Datei:Seitentabelle-4gb.jpg|700px]]
| |
| </loop_figure>
| |
| </p>
| |
| | |
| <br />
| |
| == Seitentabelleneintrag ==
| |
| <p>
| |
| <loop_index>Seitentabelleneintrag</loop_index>
| |
| Jede Zeile der Seitentabelle nennt man einen sogenannten '''Seitentabelleneintrag'''. Nach dem bisherigen Kenntnisstand besteht ein Seitentabelleneintrag also aus einer Seitenrahmen-Nummer und dem Present-/Absent-Bit.
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| <loop_area type="notice">
| |
| <p>
| |
| In der Praxis besteht ein Seitentabelleneintrag üblicherweise noch aus einigen weiteren Informationen. Bildlich gesprochen enthält die Seitentabelle also noch weitere Spalten. Wir kommen später darauf zurück.
| |
| </p>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| == Aufgabe 2 ==
| |
| <p>
| |
| <loop_area type="task">
| |
| <loop_task title="Eine Seitentabelle hat es in sich">
| |
| <p>
| |
| Betrachte die [http://vfhcab.oncampus.de/mediawiki/images/vfhcab/3/39/Seitentabelle-4gb.jpg Seitentabelle aus der vorangegangenen Abbildung].
| |
| </p>
| |
| <p>
| |
| * Warum besitzt die Tabelle genau 65.536 Zeilen?
| |
| </p>
| |
| <p>
| |
| * Unter welchen Umständen ist es erlaubt, dass eine Seitenrahmen-Nr. mehrfach in der Tabelle vorkommt? <small>(Siehe ''0 0000 0000 0000'', es wären aber auch andere doppelte Nummern denkbar.)</small>
| |
| </p>
| |
| <p>
| |
| * In der Spalte mit dem Present-/Absent-Bit: Wieviele Einsen könnten in dieser Spalte maximal auftreten? Warum nicht mehr?
| |
| </p>
| |
| <p>
| |
| * Wie realistisch ist es in der Praxis, dass in der Spalte mit dem Present-/Absent-Bit tatsächlich einmal die Maximalzahl an Einsen auftritt? Erläutere!
| |
| </p>
| |
| </loop_task>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| == Aufgabe 3 ==
| |
| <p>
| |
| <loop_area type="task">
| |
| <loop_task title="Nur 64 KiB RAM">
| |
| <p>
| |
| Ein Rechnersystem besitzt einen physikalischen Speicher (RAM) von 64 [[Speicherwerk#2er-_oder_10er-Potenzen|KiB]]. Das Betriebssystem weist jedem Prozess einen virtuellen Speicher von 128 [[Speicherwerk#2er-_oder_10er-Potenzen|KiB]] zu.
| |
| * Welche Länge hat eine physikalische Adresse?
| |
| * Welche Länge hat eine virtuelle Adresse?
| |
| * Wie ist die einstufige Seitentabelle in diesem Fall aufgebaut?
| |
| * Wie viele Zeilen besitzt die Seitentabelle?
| |
| * Erkläre an einem Beispiel, wie die Umrechnung einer virtuellen in eine physikalische Adresse funktioniert.
| |
| * Gehe in deinem Beispiel davon aus, dass das zehnte Byte innerhalb der betreffenden virtuellen Seite adressiert wird.
| |
| </p>
| |
| <p>
| |
| Hinweis:<br />
| |
| Wenn du schon ein gewisses Verständnis für dieses Thema entwickelt hast, dann hast du bereits bemerkt, dass innerhalb dieser Aufgabe eine wichtige Vorraussetzung nicht genannt wurde. In dem [http://youtu.be/aSSmsETQARw Video] ist sie hingegen genannt!
| |
| </p>
| |
| <p>
| |
| Denke erst nach, schaue dir das [http://youtu.be/aSSmsETQARw Video] nochmals an, und diskutiere in deiner Lerngruppe. Dann brauchst du den folgenden Tipp sicher nicht.
| |
| </p>
| |
| <spoiler text="Tipp">
| |
| <p>
| |
| HA! Du brauchst den Tipp ja doch!
| |
| </p>
| |
| <p>
| |
| Du kannst die Aufgabe nur dann vollständig lösen, wenn du die Größe eines Seitenrahmens festlegst. In dem [http://youtu.be/aSSmsETQARw Video] wurde das getan, aber der dort verwendete Wert ist für diese Aufgabe viel zu groß. Wähle lieber einen sinnvollen kleineren Wert.
| |
| </p>
| |
| <p>
| |
| Bedenke auch, dass die Größe eines Seitenrahmens identisch mit der Größe einer virtuellen Seite sein muss.
| |
| </p>
| |
| </spoiler>
| |
| </loop_task>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| <cite>Mandl+2013</cite> zeigt in Kap. 7.2.1, Abb 7-14, ein Beispiel für eine Adressumsetzung mit Hilfe einer einstufigen Seitentabelle. Die folgende Aufgabe fordert Ähnliches:
| |
| </p>
| |
| | |
| <br />
| |
| == Aufgabe 4 ==
| |
| <p>
| |
| <loop_area type="task">
| |
| <loop_task title="Du bist jetzt die MMU">
| |
| <p>
| |
| Betrachte die [http://vfhcab.oncampus.de/mediawiki/images/vfhcab/3/39/Seitentabelle-4gb.jpg einstufige Seitentabelle oben].
| |
| </p>
| |
| <p>
| |
| Rechne mit Hilfe der Seitentabelle die folgenden virtuellen Adressen in physikalische Adressen um:
| |
| * 0000 0000 0000 0010 1111 0000 0101 0000
| |
| * 0000 0000 0000 0011 1000 0110 0111 0111
| |
| * 0000 0000 0000 0101 1100 0100 1110 1111
| |
| </p>
| |
| <p>
| |
| Hinweis:<br/>
| |
| Gehe davon aus, dass die [http://vfhcab.oncampus.de/mediawiki/images/vfhcab/3/39/Seitentabelle-4gb.jpg Zeilen in der Seitentabelle] von unten nach oben durchnummeriert sind:
| |
| * Die Zeile ganz unten ist die ''Zeile Nr. 0''.
| |
| * Die Zeile ganz oben ist die ''Zeile Nr. 65.535''.
| |
| </p>
| |
| </loop_task>
| |
| </loop_area>
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| Wie bereits erwähnt können alternativ zu ''einstufigen'' Seitentabellen auch ''mehrstufige'' Seitentabellen zum Einsatz kommen.
| |
| </p>
| |
| | |
| <br />
| |
| == Mehrstufige Seitentabellen ==
| |
| <p>
| |
| <loop_index>Seitentabelle, mehrstufig|mehrstufige Seitentabelle</loop_index>
| |
| Mehrstufige Seitentabellen sind zu Optimierungszwecken entwickelt worden. An dieser Stelle wird jedoch nicht näher darauf eingegangen, es sei auf die weiterführende Literatur verwiesen.
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| <loop_area type="notice">'''Weiterführende Literatur'''
| |
| <p>
| |
| <cite>Mandl+2013</cite> erläutert in Kapitel 7.2.1 den Aufbau und die Funktionsweise von mehrstufigen Seitentabellen. Die Lektüre dieser Quelle sei dem geneigten Leser überlassen.
| |
| </p>
| |
| <p>
| |
| <small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small>
| |
| </p> | |
| </loop_area> | |
| </p> | | </p> |
|
| |
|