|
|
(25 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| <p> | | |
| | <loop_index id="5fa9787b09a71">Seitentabelle</loop_index><loop_index id="5fa9787b33560">MMU, Seitentabelle</loop_index> |
| Seitentabellen werden benötigt, damit die [[MMU - Memory Management Unit|MMU]] die Umrechnung einer virtuellen Adresse in eine physikalische Adresse vornehmen kann. Da der Begriff ''Seitentabellen'' hier bereits in der Mehrzahl benutzt wird, deutet dies darauf hin, dass es nicht nur eine einzige, sondern mehrere Seitentabellen gibt. | | Seitentabellen werden benötigt, damit die [[MMU - Memory Management Unit|MMU]] die Umrechnung einer virtuellen Adresse in eine physikalische Adresse vornehmen kann. Da der Begriff ''Seitentabellen'' hier bereits in der Mehrzahl benutzt wird, deutet dies darauf hin, dass es nicht nur eine einzige, sondern mehrere Seitentabellen gibt. |
| </p> | | </p> |
|
| |
|
| <br /> | | <br /> |
| ==== Viele Seitentabellen existieren gleichzeitig ====
| | == Viele Seitentabellen existieren gleichzeitig == |
| <p> | | <p> |
| Für jeden einzelnen vom Betriebssystem zu verwaltenden virtuellen Adressraum gibt es jeweils eine zugehörige Seitentabelle. Anders ausgedrückt besitzt jeder Prozess seine eigene Seitentabelle, da ja auch jeder Prozess seinen eigenen virtuellen Adressraum besitzt. | | Für jeden einzelnen vom Betriebssystem zu verwaltenden virtuellen Adressraum gibt es jeweils eine zugehörige Seitentabelle. Anders ausgedrückt besitzt jeder Prozess seine eigene Seitentabelle, da ja auch jeder Prozess seinen eigenen virtuellen Adressraum besitzt. |
| </p>
| |
| <p>
| |
| Je nach Betriebssystem kommen entweder '''einstufige Seitentabellen''' oder '''mehrstufige Seitentabellen''' zum Einsatz.
| |
| </p> | | </p> |
|
| |
|
| <br /> | | <br /> |
|
| |
| ==== Einstufige Seitentabellen ====
| |
| <p>
| |
| 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>
| |
| <br />
| |
| ==== Aufgabe 1 ====
| |
| <p>
| |
| <loop_area type="task">
| |
| <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 Seiten besteht der physikalische Adressraum?<br /><small>Gib die Antwort sowohl als Dezimalzahl, als auch als 2er-Potenz an!</small>
| |
| </p>
| |
| <p> | | <p> |
| * Aus wievielen Seitenrahmen besteht der virtuelle Adressraum?<br /><small>Gib die Antwort sowohl als Dezimalzahl, als auch als 2er-Potenz an!</small>
| | <loop_area type="important"> |
| </p>
| |
| <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>
| | Jeder Prozess besitzt seine eigene Seitentabelle! |
| </p> | | </p> |
| </loop_task>
| |
| </loop_area> | | </loop_area> |
| </p> | | </p> |
Zeile 48: |
Zeile 21: |
| <br /> | | <br /> |
| <p> | | <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.
| | Je nach Betriebssystem kommen entweder '''einstufige Seitentabellen''' oder '''mehrstufige Seitentabellen''' zum Einsatz. |
| </p>
| |
| | |
| <p>
| |
| <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> | | </p> |
|
| |
|
| <br /> | | <br /> |
| <p> | | <p> |
| Das im Video erläuterte Beispiel geht davon aus, dass in den betrachteten Rechner ein physikalischer Speicher (RAM) von 512 KiB eingebaut ist. Jedem Prozess wird vom Betriebssystem ein virtueller Speicher von 4 GiB zugewiesen. Aus diesen Voraussetzungen ergeben sich die Adresslängen:
| | == So geht es weiter: == |
| * virtuelle Adresse: 32 Bit
| |
| * physikalische Adresse: 29 Bit
| |
| </p> | | </p> |
|
| |
| <p> | | <p> |
| Basiert das betrachtete Rechnersystem hingegen auf anderen Speichergrößen, so ändern sich auch die Adresslängen (siehe Aufgabe 3 unten).
| | <loop_area type="arrangement"><loop_toc> </loop_toc></loop_area> |
| </p>
| |
| | |
| <br />
| |
| <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 />
| |
| ==== Aufgabe 2 ====
| |
| <p>
| |
| <loop_area type="task"> | |
| <loop_task title="Nur 64 KiB RAM">
| |
| <p>
| |
| Ein Rechnersystem besitzt einen physikalischen Speicher (RAM) von 64 KiB. Das Betriebssystem weist jedem Prozess einen virtuellen Speicher von 128 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>
| |
| | |
| <p>
| |
| <loop_figure title="Umrechnung einer virtuellen in eine physikalische Adresse" description="" copyright="CC-BY" index=true show_copyright=true>
| |
| [[Datei:Mmu_und_seitentabelle.JPG|700px]]
| |
| </loop_figure>
| |
| </p>
| |
| | |
| <p>
| |
| <cite>Mandl+2013</cite> Kap. 7.2.1, Abb 7-14.
| |
| </p>
| |
| | |
| <br />
| |
| | |
| ==== Mehrstufige Seitentabellen ====
| |
| <p>
| |
| <cite>Mandl+2013</cite> Kap. 7.2.1, Abb 7-15, Abb 7-16.
| |
| </p>
| |
| | |
| <br />
| |
| <p>
| |
| Seitentabelleneintrag: <cite>Mandl+2013</cite> Kap. 7.2.1, Abb 7-17.
| |
| | |
| </p> | | </p> |
|
| |
|