Hauptspeicherverwaltung - Memory Management Operating Systems I SS21 Prof. H.D.Clausen - unisal 1 Speicherhierarchie Verarbeitung cache Sekundär- Speicher Primär- Speicher ALU SS21 Prof. H.D.Clausen - unisal 2 1
Namen, Adressen, Binden Namen - Logische Bezeichnungen für Speicherplätze und Programmstellen - symbolischen Adressen Adressen - Angabe der Stelle im Speicher; man unterscheidet logische (virtuelle) und physische (reale) Adressen Binden - die Zuordnung von Namen zu Adressen; ist ein mehrstufiger Vorgang, der 3 Phasen unterscheidet Binden zur Übersetzungszeit (Assembler, Compiler) Binden zur Zeit des Ladens (Linkage Edit und Load) Binden zur Laufzeit (statisch, dynamisch) SS21 Prof. H.D.Clausen - unisal 3 Adressbindung - #1 Übersetzungszeit Source Code - Symbolische Adressen (Namen) Compiler/Assembler Object Module Modulrelative Adressen Compile Time Binding Linker/Binder SS21 Prof. H.D.Clausen - unisal 4 2
Adressbindung - #2 Ladezeit Object Module/ Modulrelative Adressen Object Module/ Modulrelative Object Module/ Adressen Modulrelative Object Module/ Adressen Modulrelative Adressen Linker/Binder Linkage Time Binding Load Module/ Relozierbare Adressen System Library/ Relozierbare Adressen Loader Load Time Binding Load Module/Logische Adressen SS21 Prof. H.D.Clausen - unisal 5 Adressbindung - #3 Laufzeit Loader Load Module/Logische Adressen (virtuelle Adressen) Load Time Binding DLL Module statische Adressumsetzung dynamische Adressumsetzung binärer Programmcode und physische/reale Adressen Datenbereiche im Speicher SS21 Prof. H.D.Clausen - unisal 6 3
Dynamische Speicherzuteilung Umfangreiche Programme laufen oftmals in Phasen ab und benötigen mehr logischen Speicher als real vorhanden. Beispiel: Assembler: Pass 1 7K Pass 2 8K Symboltabelle 2K Basismoduln 3K Summe = 2K Ansatz: nur den Bereich laden, der für die jeweilige Phase benötigt wird. a) unter Kontrolle des Programmierers b) unter Kontrolle durch das SS21 Prof. H.D.Clausen - unisal 7 Beispiel - Overlays symbol table 15K common modules overlay driver pass_1 pass_2 SS21 Prof. H.D.Clausen - unisal 8 4
Relozierung - Relocation #1 Physischer Adressraum 15K Logischer Adressraum 27354 357 1. Statische Adresszuordnung CPU Basisadresse 4 4357 SS21 Prof. H.D.Clausen - unisal 9 Relozierung - Relocation #2 Logischer Adressraum 357 27354 357 2. Dynamische Adresszuordnung 15K Physischer Adressraum 28357 externer Verschnitt interner Verschnitt 28 Limitregister 4357 CPU Basisregister 4 28 SS21 Prof. H.D.Clausen - unisal 1 5
Hardware Unterstützung Limitregister CPU logical address yes < + physical address Basisregister trap: addressing error SS21 Prof. H.D.Clausen - unisal 11 Speichereinteilung Benutzerprozess 512K frei Speicher - memory SS21 Prof. H.D.Clausen - unisal 12 6
Scheduling - Beispiel Job Queue 4K process memory time 216K frei P_2 P_5 6 K 1 K 3 K 7 K 5 K 1 5 2 8 15 256K SS21 Prof. H.D.Clausen - unisal 13 Speicherorganisation I Segmentierung Basis Segment_1 Limit Basis Segment_2 Limit SS21 Prof. H.D.Clausen - unisal 14 7
4 K Scheduling - Beispiel 4 K 4 K terminates 1 K 1 K 1 K P_2 P_2 terminates allocate 17 K 2 K 23 K 2 K 23 K 2 K 23 K 256 K 256 K 256 K SS21 Prof. H.D.Clausen - unisal 15 4 K Scheduling - Beispiel 4 K 4 K 1 K terminates 1 K allocate P_5 9 K 1 K P_5 17 K 17 K 17 K 2 K 23 K 2 K 23 K 2 K 23 K 256 K 256 K 256 K SS21 Prof. H.D.Clausen - unisal 16 8
4 K 9 K 1 K 17 K 2 K 23 K Externer und Interner Verschnitt P_5 interner Verschnitt internal fragmentation compact externer Verschnitt external fragmentation 256 K SS21 Prof. H.D.Clausen - unisal 256 K 17 4 K 9 K 16 K 19 K P_5 66 K Fragmentierung und Verdichtung interner Verschnitt entsteht durch Unterschiede zwischen der Zuteilungsgröße für Segmente (partition) und Programmgröße externer Verschnitt entsteht dynamisch durch Auffüllen von frei werdenden Partitionen (holes) Verdichtung (compaction) ist nicht immer möglich und erfordert Unterstützung durch Hardware (relocation registers) SS21 Prof. H.D.Clausen - unisal 18 9
Auslagern - Swapping User_1 Prozess Stack Daten User Prozess User_2 Prozess Programm Code Auslagern eines Prozesses auf den Hintergrundspeicher und späteres Wiedereinlagern. swap-out/ -in auch: roll-out/ -in SS21 Prof. H.D.Clausen - unisal 19 3 K 5 K 6 K 1 K 12 K 15 K Speicherverdichtung - compact P_2 4 K 3 K 3 K 5 K 6 K 8 K 12 K P_2 9 K 3 K 5 K 6 K 1 K 12 K P_2 9 K 3 K 5 K 6 K 15 K P_2 9 K 19 K 19 K 21 K 21 K 21 K 21 K SS21 Prof. H.D.Clausen - unisal 2 original moved 6 K moved 4 K moved 2 K 1
Freispeicherliste 5 2 next 3 K 5 K 6 K 8 K P_2 8 9 K 7 next 15 K start length 19 K 21 K next 21 K SS21 original Prof. H.D.Clausen - unisal 21 moved 2 K Belegungsstrategien First Fit: - der erste freie und ausreichend grosse Speicherblock wird belegt; Next Fit: - wie First Fit, beginnt aber die Suche an der Stelle, wo die letzte Suche beendet wurde - vermeidet zu starke Fragmentierung am Anfang des Freispeichers; Best Fit: - Durchsuchen der gesamten Freispeicherliste und Bestimmen des am besten passenden freien Blocks; Worst Fit: - Bestimmen des größten freien Blocks sodaß ein möglichst großer Restblock (Fragment) bleibt; Quick Fit: - Aufteilen der Freispeicherliste in mehrere Listen unterschiedlich großer freier Blöcke und Zuteilung aus der Liste, die der Anforderung am besten entspricht; Buddy System: - Strategie wie Quick Fit aber mit Listen von Blöcken der Größe 2 k. SS21 Prof. H.D.Clausen - unisal 22 11
Fragmentierung - I Segment Loch Durch die Strategie für das Laden weiterer Segmente wird die Anzahl der Löcher erhöht (bei Einfügen in der Mitte des Lochs) unverändert gelassen (bei Einfügen am Rand des Lochs) erniedrigt (bei exaktem Einfügen) SS21 Prof. H.D.Clausen - unisal 23 Fragmentierung - II Segment Loch Durch das Löschen wird die Anzahl der Löcher: erhöht (falls das Segment von 2 Segmenten umgeben war) unverändert bleiben (falls es von einem Loch und einem Segment umgeb en war) erniedrigt werden (falls es von 2 Löchern umgeben war. SS21 Prof. H.D.Clausen - unisal 24 12
Speicherbelegung Im Gleichgewicht enthält der Speicher Löcher und Segmente in statistischer Verteilung (checkerboarding); Knuth s 5% Regel: Falls im Gleichgewicht die Anzahl der Löcher h und die der Segmente n ist (n und h groß), so gilt: h n / 2 Begründung: die Wahrscheinlichkeit für ein Loch als rechten Nachbarn eines Segments ist p =,5, da im Mittel die Hälfte der Operationen rechts neben diesem Segment Einfügungen und die Hälfte Löschungen sind. Die Anzahl der Segment mit Löchern als rechten Nachbarn ist daher n/2. Regel über ungenutzten Speicher: k f k+2 mittlere Größe der Löcher k*s SS21 Prof. H.D.Clausen - unisal 25 Buddy System Segment Loch Speicher wird nur in Blöcken der Größe 2k zugeteilt; alle Anforderungen werden auf die nächst grössere Potenz von 2 aufgerundet. Ist kein passender Block frei, wird ein Block der nächsten Größe gesplittet und die Hälfte zugeteilt; beide Blöcke (buddies) sind eindeutig identifizierbar. Wird ein Block freigegeben, so wird geprüft, ob sein buddy belegt ist; wenn nicht, werden beide wieder zu einem Block der nächsten Größe zusammengefügt und SS21 Prof. H.D.Clausen - unisal 26 freigegeben. 13
Speicherorganisation Rückblick: Segmentierung Basis Segment_1 Limit Basis Segment_2 Limit SS21 Prof. H.D.Clausen - unisal 27 Speicherorganisation Seiteneinteilung - Paging Relativadresse Paging - Aufteilung des logischen Adressraumes in Seiten fester Größe (z.b. 124 oder 496 Bytes) und Adressierung über Seitennummer und Distanz p d p = Seitennummer d = Distanz (offset) Seite SS21 Prof. H.D.Clausen - unisal 28 14
logischer Speicher Speicherorganisation II Paging - Seiteneinteilung physischer Speicher page Seite frame Kachel page number offset frame number offset logische Adresse physische Adresse SS21 Prof. H.D.Clausen - unisal 29 Speicherorganisation II Paging - Seiteneinteilung logischer Speicher page Seite frame Kachel physischer Speicher map physische Adresse frame number offset page number offset SS21 Prof. H.D.Clausen - unisal 3 logische Adresse 15
Paging - Hardware frame Kachel realer Speicher logische Adresse physische Adresse CPU page number offset frame number offset p f Hardware Support SS21 Prof. H.D.Clausen - unisal 31 Hardware Support page table hardware support: register file page table base register (PTBR) translation look-aside buffers (TLBs) hit ratio: Wahrscheinlichkeit, eine gesuchte Seitenadresse im Assoziativspeicher zu finden Beispiel: hit ratio 8%, 1 nsec Speicherzugriff, 2 nsec Zugriffszeit für TLB effektive Zugriffszeit =,8 12 +,2 22 = 14 [nsec] hit ratio 98% effektive Zugriffszeit = 122 [nsec] SS21 Prof. H.D.Clausen - unisal 32 16
CPU Assoziativspeicher - TLB logische Adresse page number offset page number frame number valid invalid realer Speicher TLB hit TLB miss p f frame number offset physische Adresse valid invalid SS21 Prof. H.D.Clausen - unisal 33 logische Adresse page number offset p 1 p 2 d Two-level Page Table outer page table SS21 Prof. H.D.Clausen page - unisal 34 table memory 17
Address Translation for Two-level Paging logische Adresse page number offset p 1 p 2 1 1 d 12 p 1 p 2 d outer page table page of page table SS21 Prof. H.D.Clausen - unisal 35 Multi-level Paging Schemes VAX Adresse section s 2 page p 21 offset d 9 64-bit address outer page p 1 42 inner page offset p 2 d 1 12 64-bit address three-level 2nd outer page outer page p 1 p 2 32 1 inner page p 3 1 offset d 12 SS21 Prof. H.D.Clausen - unisal 36 18
Invertierte Paging Tabelle realer Speicher logische Adresse physische Adresse CPU pid p d i d Suche i pid p inverted page table SS21 Prof. H.D.Clausen - unisal 37 Virtueller Speicher Dynamische Speicherverwaltung SS21 Prof. H.D.Clausen - unisal 38 19
SS21 Prof. H.D.Clausen - unisal 39 page Virtueller Speicher page 1 page 2 page 3 P_ page 4 P_2 P_2 memory map page n physischer Speicher SS21 Prof. H.D.Clausen - unisal 4 virtueller Speicher backup store 2
Demand Paging page page 1 page 2 valid/invalid 1 P_ page 3 2 page 4 4 v 3 i page 5 6 v 4 i 5 P_2 i 6 9 v 7 i 8 memory map 9 P_5 1 page n physischer Speicher SS21 Prof. H.D.Clausen - unisal 41 virtueller Speicher backup store Demand Paging die Seiten eines Prozesses sind nur zum Teil im realen Speicher geladen die CPU kann nur auf Seiten zugreifen, die im realen Speicher liegen (memory resident) beim Versuch auf eine Seite zuzugreifen, die nicht memory-resident ist, erfolgt ein page fault Interrupt dieser Interrupt stösst den Seitentransport an, der für das Nachladen und den Seitenwechsel zuständig ist. SS21 Prof. H.D.Clausen - unisal 42 21
Seitentransport 1. Feststellen, ob der Zugriff gültig oder ungültig ist; 2. falls der Zugriff ungültig: Prozess abbrechen; 3. andernfalls die Seitenwechselprozedur ausführen: 4. Bestimmen einer freien Kachel; 5. falls keine zu finden ist, das Auslagern eine Seite starten; 6. nach Beendigung des Auslagerns das Einlesen der benötigten Seite einleiten; 7. nach Beendigung des Einlagerns die internen Tabellen des Systems und Prozesses aktualisieren; 8. die unterbrochene Instruktion wieder starten. SS21 Prof. H.D.Clausen - unisal 43 Referenz- und Modify Bits Referenzb Modify Bedeutung it bit Seite wurde kürzlich nicht benützt und nicht modifiziert (sehr billig) 1 Seite wurde kürzlich nicht benützt wurde aber modifiziert (teuer) 1 Seite wurde kürzlich benützt aber nicht modifiziert (billig) 1 1 Seite wurde kürzlich benützt und auch modifiziert (sehr teuer) Valid/Invalid bit; Read/Write/Execute bit SS21 Prof. H.D.Clausen - unisal 44 22
Seitenwechsel Seitenladeablauf: Interruptbearbeitung des Page-fault Signals Einlesen der fehlenden Seite Siederanlauf des unterbrochenen Prozesses Seiten-Ersetzungs-Strategie Bestimmen einer Opfer -Seite (eigener Prozess, R/M-Bits, Referenz-Sequenz) Auslagern der Seite (Schreiben/Überschreiben) Seite Nachladen SS21 Prof. H.D.Clausen - unisal 45 Referenzfolge Dynamische Abfolge der referenzierten Adressen (Daten und Instruktionen) - aber nur Seitennummern. Beispiel: 1, 432, 11, 612, 12, 13, 14, 11, 611, 12, 13, 14, 11, 61, 12, 13, 14, 11, 69, 12, 15,... bei 1 Bytes pro Seite ergibt das die Referenzfolge: 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1,... SS21 Prof. H.D.Clausen - unisal 46 23
Referenzfolge 16 14 12 1 8 6 4 2 1 2 3 4 5 6 SS21 Prof. H.D.Clausen - unisal 47 Seitenfehler Interrupts in Abhängigkeit von der Anzahl Kacheln Seitenersetzungs-Strategien optimale Strategie (Belady) FIFO Strategie second chance Strategie NRU - not recently used LRU - least recently used NFU - not frequently used LFU - least frequently used SS21 Prof. H.D.Clausen - unisal 48 24
Modellierung und Analyse optimale Seitenlänge optimale Seitenanzahl working set thrashing - Seitenflattern SS21 Prof. H.D.Clausen - unisal 49 Seitenersetzung - Belady RAM 1 2 3* 4* 1 5* 6* 1 RAM - 1 1 1 4 1 1 6 RAM - - 1 4 1 6 Disk 2 3 3 3 4 5 5 5 Disk 2 2 2 3 4 4 4 Disk 2 3 3 3 Disk 2 2 2 t t 1 t 2 t 3 t 4 t 5 * - neu ersetzte Seiten Referenzfolge:, 1, 2, 3, 4,, 1, 5, 6,, 1, 2, 3, 4,... SS21 Prof. H.D.Clausen - unisal 5 25
Seitenersetzung - Belady RAM 1 2 3* 4* 1 5* 6* 1 RAM 1 1 1 4 1 1 6 RAM 1 4 1 6 Disk 2 3 3 3 4 5 5 5 Disk 2 2 2 3 4 4 4 Disk 2 3 3 3 Disk 2 2 2 t t 1 t 2 t 3 t 4 t 5 * - neu ersetzte Seiten SS21 Prof. H.D.Clausen - unisal 51 26