Computer-Systeme Teil 15: Virtueller Speicher

Ähnliche Dokumente
Betriebssysteme Teil 10: Virtueller Speicher

Übersicht. Virtueller Speicher CPU-Modi Virtuelle Maschinen. ISM SS Teil 4/ProtectionI

Echtzeitbetriebssysteme

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

Tutorium Rechnerorganisation

Virtueller Speicher und Memory Management

Leichtgewichtsprozesse

Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging

Speicherverwaltung (Swapping und Paging)

5.4 Segmentierung. Einfachstes Beispiel: 1 Code-Segment + 1 Datensegment. 0 codelength 0 datalength. bs-5.4 1

Teil 2: Speicherstrukturen

RO-Tutorien 15 und 16

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Wie groß ist die Page Table?

[6-1] Engelmann, Lutz (Hrsg.): Abitur Informatik Basiswissen Schule. Duden-Verlag, 2003, S.43-53, , , S.

Echtzeit-Multitasking

Echtzeit-Multitasking

5.4 Segmentierung. Einfachstes Beispiel: 1 Code-Segment + 1 Datensegment. 0 codelength 0 datalength. bs-5.4 1

Linux Paging, Caching und Swapping

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

Lösungsvorschlag für Übung September 2009

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

5 Kernaufgaben eines Betriebssystems (BS)

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Klausur Betriebssysteme

Betriebssysteme Teil 6: Hardware-Schicht II

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

5.5.5 Der Speicherverwalter

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Betriebssysteme Teil 7: Konzept der Threads

Betriebssysteme Vorstellung

Übung zu Einführung in die Informatik # 10

Betriebssysteme 1. Thomas Kolarz. Folie 1

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

5.5 Virtueller Speicher

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Zwei Möglichkeiten die TLB zu aktualisieren

Freispeicherverwaltung

5 Speicherverwaltung. bs-5.1 1

Technische Realisierung (1)

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Rechnergrundlagen SS Vorlesung

Hardware und Gerätetreiber

Technische Informatik 1

Einführung in die technische Informatik

Freispeicherverwaltung Martin Wahl,

Just-In-Time-Compiler (2)

Lehrveranstaltung: PR Rechnerorganisation Blatt 8. Thomas Aichholzer

Technische Informatik 1 - HS 2017

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Klausur Betriebssysteme I

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Klausur Betriebssysteme I

1 pulsierender Speicher

Just-In-Time-Compiler (2)

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Linux Memory Management für MySQL

Speicher- und Cacheverwaltung unter Linux. Ralf Petring & Guido Schaumann

Speicherverwaltung. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach

Teil 1: Prozessorstrukturen

Konzepte von Betriebssystemkomponenten

Betriebssysteme. Tutorium 12. Philipp Kirchhofer

Cache Blöcke und Offsets

Grundlagen Rechnerarchitektur und Betriebssysteme

Betriebssysteme KU - Einführungstutorium

Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset.

5. Aufgabenblatt Speicherverwaltung

Transkript:

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