Computer-Systeme Teil 15: Virtueller Speicher Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 14.01.2013 1
Übersicht Segmente Systemaufrufe Swapping Paging Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 2
Physikalischer Adressraum I - Wiederholung CPU RAM I/O 1 I/O 2 I/O N... BUS I/O-Geräte verhalten sich wie der RAM CPU kommuniziert mit I/O-Geräten wie mit dem RAM Niedrige Adressen Hohe Adressen Betriebssystem Prozesse Lücke I/O-Geräte Physikalischer Adressraum Bereich, in dem RAM vorhanden ist Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 3
Physikalischer Adressraum II - Wiederholung Es wird von nun an Memory-Mapped-I/O zugrunde gelegt: Alle Geräteregister besitzen eine Bus-Adresse und sind daher mit normalen Instruktionen erreichbar. Physikalischer Adressraum = Bereich der Adressen, der über den Adressbus ansprechbar ist In der Regel ist dieser Adressraum in folgende Bereiche von den niedrigen zu den hohen Adressen aufgeteilt: Kernel des Betriebssystems Bereich für Programme Lücke, da der gesamte mögliche Adressraum in der Regel größer als die reale Größe des Arbeitsspeichers ist Bereich der Geräteregister Weiterhin gibt es noch den Bereich für den (E)EPROM/Booter, der bei uns bei den Geräteregistern liegt Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 4
Ziele des virtuellen Speichers Virtueller Speicher = Virtual Memory = Arbeitsspeicher mit simuliertem Eigenschaften: Zugriffsschutz/Separation der Programme untereinander zur Erhöhung der Sicherheit Unabhängigkeit vom Ort im RAM, an dem die Programme und ihre Daten liegen, zur Erhöhung der Flexibilität Der virtuelle Speicher wird mit Hilfe einer Memory Management Unit (MMU) realisiert. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 5
Memory Management Unit (MMU) I Virtuelle Adressen Reale Adressen CPU MMU Memory Management Unit (MMU) als Filter und Umrechnungseinheit RAM I/O 1 I/O 2 BUS Rückmeldung an CPU (trap) Prüfung, ob zu hoch Virtuelle Adresse Funktionsweise der MMU Nicht-Ok OK + Reale Adresse Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 6
Memory Management Unit (MMU) II Die MMU ist ein Filter zwischen CPU und Bus, der folgende Aufgaben hat: Prüfung, ob eine Adresse in dem zulässigen Bereich zwischen 0 und dem definierten Maximum liegt. Verschiebung der von der CPU generierten Adresse auf die richtige Stelle im Adressraum des Busses durch Addition einer Basisadresse. Der Adressraum aller Programme beginnt daher mit der virtuellen Adresse 0 und endet mit der höchsten Adresse. Adressen dazwischen sind gültig, alle anderen ungültig. Adressen der CPU, die von der MMU verarbeitet werden, werden virtuelle Adressen genannt. Die Adressen als Resultat der MMU-Verarbeitung werden physikalische oder reale Adressen genannt. Dies sind die Adressen des Busses. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 7
Aufgaben der MMU Die wesentliche Aufgabe der MMU besteht darin, die einzelnen Programme gegenüber einem gegenseitigen Überschreiben zu schützen. Jedes Segment ist dadurch wie ein Gehege, aus dem das Programm nicht ausbrechen kann. So sind die anderen Programme untereinander sowie der Kernel vor Zugriffen geschützt. Eine andere Aufgabe besteht in der Herstellung der Ortsunabhängigkeit der Segmente, daher können die Segmente an verschiedenen Stellen im physikalischen RAM stehen. Die Realisierung von virtuellen Adressen mit einem unüberwindbaren Schutzmechanismus wie eine MMU ist eines der wichtigsten Schutzkonzepte in Computern. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 8
MMU - Genauer I 0 Max Prozess 1 Virtueller Adressraum (der CPU) 0 Max Prozess 1 Physikalischer Adressraum (des Busses) Nichtzugreifbarer Bereich für Prozess 1 Vom Prozess 1 benutzter Bereich im Physikalischen Adressraum Nicht-zugreifbarer Bereich für Prozess 1 Basisadresse Länge Basisadresse+Länge-1 Die MMU baut für die CPU einen "Käfig", der jeden Zugriff nach außen unterbindet. Versucht ein Prozess nach außen zuzugreifen, wird die Instruktion aufgrund eines Signals von der MMU zur CPU abgebrochen. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 9
MMU - Genauer II Virtuelle Addressräume 0 Max 0 Max 0 Max Prozess 1 Prozess 2 Prozess 3 Physikalischer Adressraum Betriebssystem Prozess 2 Prozess 1 Prozess 3 I/O Die Virtualisierung gilt für jedes Programm einschließlich des Betriebssystems selbst. Daher können unabhängig voneinander mehrere jeweils mit der Adresse 0 beginnende und verschieden lange Programme gleichzeitig im Arbeitsspeicher liegen. Der Kernel wird von der MMU wie ein eigenes Programm behandelt. Damit der Kernel auf alle Geräte und den restlichen RAM zugreifen kann, hat sein Bereich die Basisadresse 0 und die maximal mögliche Länge, d.h. sein virtueller Adressraum überdeckt alles. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 10
Erläuterungen I Segment = Bereich eines Arbeitsspeichers, der virtuell bei Adresse 0 beginnt und eine bestimmte Länge hat. Jedem Segment wird ein Deskriptor zugeordnet, der folgendes enthält: Physikalische Basisadresse Länge des Segments Zugriffsrechte (Lesen/Schreiben/Ausführen) Der Deskriptor wird in einem Registersatz in der MMU gehalten. Die MMU besitzt zwei Registersätze: Einen für den User-Mode Einen für den Kernel-Mode Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 11
Erläuterungen II Durch das Addieren zur Basisadresse sind die Segmente unabhängig von der Position im RAM, d.h. sie können während einer Programmunterbrechung verschoben werden. Dies ist zur Beseitigung von Lücken zwischen den Segmenten erforderlich; die Segmente werden dann zusammen geschoben. Alle Segmente müssen zusammen gleichzeitig in den RAM passen. Ist dieser voll, so kann weder ein neues Segment geschaffen noch ein bestehendes vergrößert werden. Segmente können sich im physikalischen Bereich meist partiell - überdecken. Dies dient der Realisierung von gemeinsam benutzten RAM- Bereichen zwischen Prozessen (shared memory). Das Segment des Betriebssystems überdeckt alles. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 12
Programm, Process und Thread Prozess = Sequentiell ablaufendes Programm mit eigenem und von anderen Prozessen getrennten Adressraum Thread = Sequentiell ablaufendes Programm ohne einen gegenüber anderen Threads abgetrennten Adressraum Innerhalb des Kernels und innerhalb der Prozesse können verschiedene Threads laufen. Ohne MMU gibt es nur Threads, mit MMU nur Prozesse, in denen Threads laufen können. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 13
Feinere Aufteilung in Segmente I Es ist möglich, dass ein Prozess weiter auf mehrere (Teil-)Segmente aufgeteilt wird: Segment für Code Segment für Globale Daten Segment für Stack Damit kann ein Schreibschutz des Codes realisiert werden, (kein Befall von Viren zur Laufzeit möglich). Wenn das Code-Segment schreibgeschützt ist, kann es von mehreren Prozessen gemeinsam benutzt werden (Einsparung von Speicherplatz, Shared Memory). Die Code-Segmente werden dann auf denselben physikalischen Adressbereich abgebildet (haben also dieselbe Basisadresse). Es können aber auch Datenbereiche gemeinsam benutzt werden. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 14
Feinere Aufteilung in Segmente II Virtuelle Adresse 16 bit 16 bit Segment-ID Adresse innerhalb des Segments Beispiel für 32 bit-addressraum Indizierung 0 Länge Erlaubnis Länge Erlaubnis Auswahl des Registersatzes Adressumsetzer Länge Erlaubnis Reale Adresse 0 Max Code Heap Stack Betriebssystem Code (P1) Heap Stack I/O Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 15
Shared Code Prozess P1 Länge Erlaubnis Länge Erlaubnis Prozess P2 Länge Erlaubnis Länge Erlaubnis 0 Max Code 0 Max Daten (P1) 0 Max Daten (P2) Virtuelle Addressräume zweier Prozesse Betriebssystem Code Daten (P1) Daten (P2) I/O Realer Adressraum Gemeinsame Benutzung von P1 und P2 Read/Write Read/Write Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 16
Wenn ein Programm läuft... ist immer der korrespondierende MMU-Deskriptor aktiv. Wenn nun die CPU einem anderen Programm, d.h. einem anderen Segment gegeben werden soll, muss der Deskriptor für das neue Segment über die Geräteregister in die MMU geladen werden. Daher existiert im Kernel eine Tabelle mit allen Deskriptoren aller Segmente im RAM, z.b. in der Thread-Tabelle des Kernels. Diese Tabelle liegt außerhalb des Zugriffs aller Programme, so dass nur der Kernel die Deskriptoren ändern und in die MMU laden kann. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 17
Zugriff auf die MMU-Register Tabelle mit MMU- Deskriptoren Länge Erlaubnis Länge Erlaubnis... Länge Erlaubnis Registersätze sind über besondere Adressbereiche beschrieben Betriebssystem Prozess 1 Prozess 2 Prozess 3 MMU I/O Die Register der MMU werden wie I/O-Geräteregister behandelt. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 18
Syscalls - Wiederholung User-Programm Systemaufruf Trap Fehlerbehandlung Systemaufruf- Verteiler User-Mode Kernel-Mode I/O-System Filesystem Netzwerk- Dienste... Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 19
Beispiel: read (Linux) #include <unistd.h> int read(int fd, void *buf, size_t count) Dies ist in der Programmiersprache C formuliert. Es wird versucht aus der Datei mit dem Filedescriptor fd count Bytes zu lesen und diese in einen Puffer an der Startadresse buf zu schreiben. Es wird die Zahl der tatsächlich gelesenen Bytes zurück geliefert, eine 0 bei EOF oder eine -1. Im letzten Fall gibt die globale Variable errno Auskunft über den Fehler, der mit perror(3) ausgegeben werden kann. int read(fd, buffer, cnt) gelesene Bytes Puffer Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 20
CPU-Arbeitsmodi I - Wiederholung Im Status-Register der CPU befindet sich ein Bit zum Vermerken des globalen Arbeitsmodus der CPU: User-Mode: Normaler, eingeschränkter Modus Kernel-Mode: nur vom Betriebssystem benutzter Modus ohne jede Einschränkung Manchmal sind es mehrere Bits, so dass es mehr als 2 Modi der CPU gibt. Die Einschränkung im User-Mode betrifft die Ausführung folgender Instruktionsgruppen: I/O-Instruktionen (falls vorhanden) Administrationsinstruktionen (Reset, Stop etc.) Setzen des Status-Registers Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 21
CPU-Arbeitsmodi II 0 Max Prozess 1 Virtueller Adressraum (der CPU) User-Mode MMU-Deskriptor 1 I/O Physikalischer Adressraum (des Busses) MMU-Deskriptor 2 Betriebssystem Prozess 1 I/O Virtueller Adressraum (der CPU) Code und Daten des Kernels Zugriffsrechte des Kernels Kernel-Mode Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 22
Was passiert beim Trap? 1. CPU-Modus wechselt in den Kernel-Mode: es wird ein anderer MMU-Deskriptor benutzt 2. CPU rettet den aktuellen SP und lädt den alten Kernel-SP 3. Status-Register wird auf den Kernel-Stack gebracht 4. PC wird (wie beim jsr) auf den Kernel-Stack gebracht 5. Sprung an eine vorher festgelegte Adresse im Kernel Da der Kernel selbst ein Programm mit sich gegenseitig aufrufenden Routinen ist, benutzt er einen eigenen Stack, d.h. mit Segmentwechsel findet noch ein Stackwechsel statt. Der Wechsel vom User-Stack zum Kernel-Stack wird durch Austausch/Änderung des Stack-Registers in der CPU realisiert (Schritt 2), manchmal erfolgt dies durch Hardware. Dass es nun zwei Stacks geben muss, liegt an den Segmenten und der MMU bzw. dem virtuellen Arbeitsspreicher. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 23
Was passiert beim Return-from-Trap? 1. Wiederherstellen des alten PC-Wertes 2. Wiederherstellen des alten SR-Wertes und damit Wechsel in den User-Mode mit anderem MMU-Deskriptor 3. CPU rettet den aktuellen Kernel-SP und lädt den alten User- SP 4. Benutzen des MMU-Deskriptors für User-Modus Analog zum Trap muss auch hier der Stack wieder zurück ausgetauscht werden. Weiterhin werden vor dem Stackwechsel, d.h. vor der RTT- Instruktion die geretteten Register wiederhergestellt. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 24
TRAP und RTT TRAP-Instruktion RTT-Instruktion CPU-Mode:= Kernel Wechsel des MMU-Deskriptors Retten des User-SP Wiederherstellen des Kernel-SP Push Status-Register Push Programm Counter PC:= Spezielle Adresse Setzen des Kernel-Mode im SR Pop Programm Counter Pop Status-Register CPU-Mode:= SR-Wert Wechsel des MMU-Deskriptors Retten des Kernel-SP Wiederherstellen des User-SP Trap-Handler = Routine im Kernel, die aufgrund eines Traps an einer "speziellen Adresse" angesprungen wird Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 25
Mechanismus der Trap-Instruktion I - Wiederholung (1) (5) User-Mode R:......... trap Nr...... (2) (4) Kernel-Mode (3) S:.................. rtt Die Pfeile geben den Weg an, den der PC nimmt. Der Code beider Routinen befindet sich in getrennten Adressräumen Code der Routine R Code der Routine S Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 26
Mechanismus der Trap-Instruktion II - Wiederholung Tabellen und Routinen im Kernel trap Parameter Adressen der Routinen, die die Syscalls realisieren Indizieren Adresse FN... Adresse F4 Adresse F3 Adresse F2 Adresse F1 Syscall F4... RTT Syscall F3... RTT Syscall F2... RTT... Tabelle steht an einer speziellen dafür vorgesehenen Stelle Routinen im Kernel Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 27
Beispiel: Syscall read() I/O Physikalischer Adressraum (des Busses) Prozess 1 trap Virtueller Adressraum (der CPU) Betriebssystem Prozess 1 I/O Syscall Read (2) Kopieren der Daten ins Programm (1) Absetzen des Lese-Kommandos Beim read() wird ein Datenblock von einem Gerät in den RAM eines User- Programms durch das Betriebssystem kopiert (vereinfacht). Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 28
Reaktion bei Speicherverletzungen I 1. Die MMU meldet der CPU eine Speicherverletzung (zu hohe Adresse) während der Ausführung eines Befehls. 2. Es erfolgt als Teil dieser Instruktion das, was einen Trap ausmacht, daher... 3. Wechsel in das Betriebssystem 4. Der Trap-Handler hat nun folgende Möglichkeiten: Abbruch des Prozesses mit eventuellem Erzeugen eines Speicherabzugs (core dump) zur Post-Mortem-Analyse Versuch weiteren Speicher bis zur Adresse, auf die versucht wurde zuzugreifen, bereit zu stellen Bedingung: Prozess muss dann noch in den RAM passen Gelingt das nicht: Abbruch wie oben Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 29
Reaktion bei Speicherverletzungen II Trap-Behandler = Trap handler = Routine im Kernel, die durch den Trap aktiviert wird - rettet die Register etc., so dass nach der Behandlung des Traps das Programm weitergeführt werden könnte. Als Reaktion einer Speicherverletzung wird eine Art Systemaufruf (Syscall) zur Behandlung zur Vergrößerung des Speichers aufgerufen. Kann das Programm weiter ausgeführt werden, wird die abgebrochene Instruktion noch einmal ausgeführt; dazu müssen aber alle bis zum Abbruch getätigten Effekte beachtet werden. Mit diesem Verfahren kann dynamisch der Speicher vergrößert werden. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 30
Dynamische Vergrößerung des Arbeitsspeichers Das geschilderte Verfahren führt zur hoher Speichereffizienz, denn: Ein neuer Prozess bekommt zum Start den kleinst möglichen Speicher zugeordnet. Nur wenn er wirklich mehr Speicher braucht, bekommt er ihn dynamisch durch dieses Verfahren. Eine Speicherverletzung ist daher nicht das Kennzeichen von einem fehlerhaften Programm. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 31
Idee des Swapping Eigenschaften des bisherigen Segment-Konzepts: 1. Alle Segmente müssen in den Arbeitsspeicher passen. 2. Das größtmögliche Segment ist durch die Größe des Arbeitsspeichers bestimmt. Um die 1. Eigenschaft zu beseitigen, wird ein Stück Plattenspeicher als Arbeitsspeichererweiterung benutzt. Dieser Plattenbereich ist um ein Vielfaches größer als der Arbeitsspeicher, so dass nun alle Segmente zusammen in diesen Bereich passen müssen, aber nicht unbedingt zusammen in den Arbeitsspeicher. Vor Aus-/Weiterführung eines Programms wird das Segment in den RAM gebracht (swap in), zur Pause wird es aus dem RAM ausgelagert (swap out). Swapping = Einlagern und Auslagern von Segmenten von einer bzw. auf eine Platte Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 32
Swapping 0 Prozess 1 Max Virtueller Adressraum Betriebssystem Prozess 1 I/O Realer Adressraum Plattenadressraum Prozess 1 Prozess 2 Lücke Prozess 3 Gesamtgröße beschränkt die max. Summe aller Prozesslängen Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 33
Der Schritt zum Paging Bei den Segmenten muss immer noch der gesamte Prozess (Segment) in den RAM passen. Um nur die wichtigen Teile eines Segments einzulagern und alles andere auf dem Swap-Gerät zu lassen, wird das Segment in gleich große Seiten (Pages, Kacheln) eingeteilt, werden nur die Seiten, die gebraucht werden, in den RAM geladen. Seite = Page = Kachel = Gleichgroße Teile eines Segments Typische Seitengrößen liegen bei 4 bis 8 Kbyte. Jetzt brauchen nur noch die tatsächlich benötigten Seiten - das können 2-3 Stück sein - eines Prozesses im RAM liegen. Je weniger es sind, desto langsamer ist das Programm, da dann sehr häufig Seiten nachgeladen werden müssen. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 34
Paging - Swapping 0 Max Code Variablen Stack Prozess P1 Adressbereiche der Seiten/Kacheln (Raster) Betriebssystem x x x x x x x x x I/O Swap-Bereich eingelagerte Seiten von Prozess P1 (x) x x x x x x x x x x x x x x y y y y y y y y y y y Alle Seiten von P1 Alle Seiten von P2 Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 35
Paging Beispiel für Adressumsetzung Virtuelle Adresse Indizierung 20 bit 12 bit Page-ID Adresse innerhalb der Seite Beispiel für 32 bit-addressraum Seitengröße ist 4 KByte 0 Erlaubnis Erlaubnis Erlaubnis Auswahl des Registersatzes Adressumsetzer Reale Adresse Erlaubnis Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 36
Erläuterungen Der virtuelle Adressraum wird durch Aufteilung der virtuellen Adresse in zwei Teilfelder in gleich große Seiten eingeteilt. Jede Seite erhält von der MMU einen eigenen Deskriptor, der jetzt ohne ein Längenfeld auskommen kann, da die Länge konstant ist. Hinzu kommt ein Flag, das anzeigt, ob die Seite im RAM liegt oder nicht. Alle Zugriffe auf eingelagerte Seiten passieren ohne Probleme die MMU. Die eingelagerten Seiten können in beliebiger Reihenfolge im RAM liegen. Die virtuellen Startadressen sind nun von 0 an jeweils ein Vielfaches von der Seitengröße. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 37
Zugriff auf eine ausgelagerte Seite 1. Die MMU zeigt eine Speicherverletzung an, die den Abbruch der Instruktion bewirkt. 2. Es wird der Effekt einer nicht programmierten Trap- Instruktion ausgeführt. 3. Im Kernel wird die fehlende Seite nachgeladen. 4. Der korrespondierende MMU-Deskriptor wird verändert. 5. Anschließend wird in den User-Mode zurückgekehrt und die abgebrochene Instruktion wiederholt. Damit ist das Einlagern von Seiten aus der Sicht des Programms vollkommen transparent. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 38
Ursachen von "Traps" Die Ausführung von "Traps" hat damit verschiedene Ursachen: 1. Als explizit programmierte Instruktion: System-Aufruf 2. Als Folge eines Fehlers, z.b. Division durch 0 3. Als Folge eines Zugriffs auf eine Adresse eines zu kleinen Segments, das vergrößert werden kann 4. Als Folge eines fehlerhaften Zugriffs auf eine Adresse 5. Als Folge eines Zugriffs auf eine nicht geladene Seite, die eingelagert werden soll In allen Fällen entscheidet der Trap-Handler, was passiert. "Traps" sind also NICHT unbedingt Folgen eines Fehlers. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 39
Seitenaustauschverfahren Bei jedem Schreibzugriff durch die CPU wird eine Seite als modifiziert markiert (Setzen des dirty-bits im Deskriptor). Seiten ohne gesetztes dirty-bit brauchen beim Auslagern nicht auf das Swap-Gerät geschrieben werden. Seiten, die am längsten nicht mehr benutzt wurden, sind gute Kandidaten zum Auslagern. Strategie des Paging: Die Verfahren zur Bestimmung, welche Seite ausgelagert und welche eingelagert wird, beeinflussen entscheidend die Performanz. Das Problem, welche Seite ausgelagert werden sollte, ist dasselbe Problem wie bei den Caches. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 40
Hybrid/Mischverfahren Das Seiten- und das Segment-Verfahren lassen sich gut kombinieren, indem Segmente in gleich große Seiten eingeteilt werden, d.h. Segmente haben immer die Länge des Vielfachen einer Seite. Bei der Kombination wird in zwei Stufen vorgegangen: Normales Verfahren bei den Segmenten Dann erst Verfahren mit Kacheln Diese Kombination ist das übliche Verfahren moderner Betriebssysteme. Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 41
Hybrid-Verfahren Virtuelle Adresse 8 bit 12 bit 12 bit Segment-ID Seiten-ID Adresse innerhalb der Seite Indizierung 0 Länge Erlaubnis Page-Adresse Länge Erlaubnis Page-Adresse Auswahl des Registersatzes Adressumsetzer Länge Erlaubnis Page-Adresse Tabelle der Seitendeskriptoren Reale Adresse Länge Erlaubnis Page-Adresse Tabelle der Segmentdeskriptoren Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 42
Nach dieser Anstrengung etwas Entspannung... Computer-Systeme WS 12/13 - Teil 15/Virtueller Speicher 43