Speicherverwaltung
Transcrição
Speicherverwaltung
Speicherverwaltung Robert K. Akakpo CNAM, WS 2010/2011 Agenda g Grundlagen Monoprogrammierung Mehrprogrammbetrieb Virtuelle Speicherverwaltung CNAM, WS 2010/2011 Grundlagen • Die verschiedenen Arten von Speicher CNAM, WS 2010/2011 Grundlagen • Damit ein Computer ein Programm ausführen kann, muss sich das Programm in einem Speicher befinden, auf den die CPU direkt zugreifen kann. p muss so g groß sein, dass das entsprechende p ((Teil-)) Programm g in • Der Speicher ihm Platz hat. • Nur der Hauptspeicher erfüllt beide Bedingungen • Nachteile des Hautpspeichers: - langsam - flüchtig - nicht gross genug Îhierarchische Organisation der Speicherarten als Lösung CNAM, WS 2010/2011 Speicherhierarchie Zugriffszeit Größe 0,5 nsec ~2 kb 0,5 - 1 nsec 20 - 50 nsec 8 - 64 kb bis 1 GB ¾ Unterschied U t hi d zwischen i h d den verschiedenen Speicherarten drückt sich aus in - Kosten K t 8- 15 msec bis 1 TB - Performance PC Stand Juni 2002 CNAM, WS 2010/2011 Speicherverwaltung • MemoryManager: das für Speichermanagement verantwortliche Betriebssystemteil • Aufgaben der Speicherverwaltung - Bereitstellung und Zuteilung von Speicher an Prozesse, Prozesse ggf Entzug - Effiziente Organisation freier und belegter Speicherbereiche g von Beschränkungen g ((Virtualisierung) g) - Verbergen - Schutz vor fehlerhaften / unerlaubten Zugriffen - Datenverschiebung zwischen den Speicherhierarchien • Strategien der Speicherverwaltung - Monoprogrammierung - Multiprogrammierung CNAM, WS 2010/2011 Monoprogrammierung • die einfachste Speicherverwaltungsstrategie • nur ein Prozess im freien RAM - einem einzelnen Programm wird ein fester zusammenhängender Bereich (Speicherzellen) zugeteilt --> direkte Adressierung, d.h. Programmadresse = reale Speicheradresse Beispiel: mov Register1, 1000 - kein Speicherschutz • Benutzerprogramm kann seinen Speicherbedarf selber organisieren z B Overlay von Programmen (Programm wird in mehreren Phasen geladen) z.B. • Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme CNAM, WS 2010/2011 Monoprogrammierung Betriebsystem im ROM Gerätetreiber im ROM (BIOS) Benutzerprozess Benutzerprozess Benutzerprozess Betriebsystem im RAM Mainframe Microcomputer bis 1960 Betriebsystem im RAM Eingebetete Systeme PC vor 1980 CNAM, WS 2010/2011 Multiprogrammierung • Motivation - Hauptspeicher besteht aus mehr als zwei Teilen (dynamische Aufgabe der Speicherverwaltung - Hauptspeicher muss mehreren Prozessen gleichzeitig zur Verfügung gestellt werden • Einfache Speicherverwaltungstechniken - Mehrere Prozesse werden vollständig im Hauptspeicher gehalten ¾ Aufteilung des Hauptspeichers in Partitionen fester oder variabler Größe für jeden Prozess. Anzahl der Partitionen ist fest --> statische Speicherverwaltung ¾ Einteilung des Speicher in dynamische Partitionen --> dynamische Speicherverwaltung - Relokation / Swapping (Auslagern und Wiedereinlagern ganzer Prozesse aus und in den Speicher) als Beispiele dynamischer Speicherverwaltung CNAM, WS 2010/2011 Partitionierung g • Feste Partitionen mit gleicher Größe Problem: - Viel zu große Programme sind ausgeschlossen ¾ alternativ: Programmerstellung durch Overlays nötig - Viel zu kleine Programme verschwenden Speicher ¾ Interne I t Fragmentierung: F ti Teile T il der d Partitionen P titi bl bleiben ib unbenutzt b t t - Einsatz im OS/360 von IBM: MFT CNAM, WS 2010/2011 Partitionierung g • Feste Partitionen mit unterschiedlicher Größe - Programme in die am besten passende Partitionen - Eine oder mehrere Warteschlangen zur Verwaltung des Speichers ¾ Best-Fit mit einer Prozess-Queue pro Partition ¾ Eine Prozess-Warteschlange Prozess Warteschlange für alle Partitionen (Best (Best-Fit Fit sonst First-Fit) First Fit) - Problem: externe Fragmentierung: einzelne, nicht zugewiesene Speicherbereiche sind zu klein, um die Anforderungen wartender Prozesse erfüllen zu können. - Einsatz im OS/360 von IBM: MVT CNAM, WS 2010/2011 Partitionierung g Verwaltung fester Partitionen Partition 4 Partition 4 Partition 3 Partition 3 Partition 2 Partition 2 getrennte Warteschlangen für jede Partition kommt ein Auftrag, kann er an die Warteschlange für die kleinste Partition angehängt werden, die groß genug für ihn ist. eine i gemeinsame i Warteschlange W hl für alle Partitionen Partition 1 Betriebssystem Best-Fit sonst First-Fit Partition 1 Betriebssystem CNAM, WS 2010/2011 Partitionierung g • Dynamische Partitionierung - Einteilung des Speichers in Partitionen variabler Länge und variabler Anzahl - Programm erhält genau so viel Speicher wie es benötigt und nicht mehr OS 128 K OS 128 K OS 128 K OS P1 350 K P1 350 K P1 350 K P2 224 K P2 224 K Konsequenzen: 322 K P3 256 K Zunehmende externe 896 K 546 K 128 K 66 K g g Fragmentierung Dynamische Relokation OS P1 128 K 350 K OS P1 128 K 350 K OS P1 128 K 350 K OS 128 K P2 224 K erforderlich 126 K P2 P3 224 K 256 K 66 K P4 160 K P4 64 K P3 256 K 66 K 160 K P4 160 K 64 K P3 256 K 64 K P3 256 K 66 K 66 K CNAM, WS 2010/2011 Relokation und Speicherschutz p • Programme werden an unterschiedlichen Stellen im Hauptspeicher ausgeführt • Beim Laden des Programms in eine Partition müssen die Adressen angepasst werden, welche im Programmcode enthalten sind. Dies ist möglich durch Liste in Programmdatei, die angibt wo sich Adressen im Code befinden angibt, • Realisierung: nur mit Hardwareunterstützung möglich: CPU mit zwei speziellen, privilegierten Registern ausgestattet: - Basisregister: Anfangsadresse der Partition - Limitregister: Länge des Programms - Register werden vom Betriebssystem beim Prozesswechsel aktualisiert • Funktionsweise: bei jedem Speicherzugriff: - Vergleich logische Adresse mit dem durchs Limitregister bestimmten Wert Falls Adresse ≥ Wert --> Fehler - sonst wird Basisregister zur logischen Adresse addiert - somit wird verhindert verhindert, dass ein Prozess auf Partitionen anderer Prozesse zugreifen kann • Beispiel: CDC 6600, Intel 8088 CNAM, WS 2010/2011 Swapping pp g • einfache Speicherverwaltung mit dynamischer Partitionierung • Prinzip - (blockierte) Prozesse werden auf die Festplatte ausgelagert p in den Hauptspeicher p p eingelagert g g - wartende Prozesse werden von der Festplatte - jeweils vollständiger Prozess als Ganzes - im Betriebssystem realisierbar ohne zusätzliche Hardwareunterstützung - Betriebssystemscheduler sogt fürs Ein- und Auslagern - wurde von MS Windows 3.* benutzt, um Prozesse auszulagern und bei UNIXy Systemen • Probleme: Ein- und Auslagern ist sehr zeitaufwendig • Anforderung von freiem Speicher: bei Neustart eines weiteren Prozesses bzw. zur Laufzeit eines Prozesses (Subprozess); auch dynamisches Anfordern • Anforderung hat nur selten genau die Größe eines freien Speicherbereiches p p g ist notwendig, g um ((dynamisch) y ) neue Prozesse in • Freispeicherplatzverwaltung freigegebene Speicher effizient zu laden CNAM, WS 2010/2011 Swapping pp g • Speicherbelegungsstrategien: ein Beispiel Anforderung 16 K 8K 8K 14 K 14 K 24 K First-Fit FF 8K Letzter alloziierter Block (14 K) 8K 8K 10 K 10 K BF Next-Fit NF 38 K 18 K 22 K Best-Fit BF 2K CNAM, WS 2010/2011 Fazit • Nachteile der bisherigen Konzepte - Prozess komplett im Hauptspeicher, obwohl oft nur ein kleiner Teil benötigt wird - Platz für Programme und Daten ist durch Hauptspeicherkapazität begrenzt - zusammenhängende Speicherbelegung für einen Prozess verschärft Fragmentierung - Speicherschutz muss vom Betriebssystem explizit implementiert werden • Lösung: virtueller Speicher - Prozessen mehr Speicher zuordnen als eigentlich vorhanden - nur bestimmte Teile der Programme werden in Hauptspeicher geladen - Rest wird auf dem Hintergrundspeicher (Festplatte) abgelegt - Prozesse werden ausgeführt, obwohl nur zum Teil im Hauptspeicher eingelagert - physischer Adressraum wird auf einen virtuellen (logischen) Adressraum abgebildet CNAM, WS 2010/2011 Virtuelle Speicherverwaltung p g • Grundlage G dl - Virtueller Speicher: strikte Trennung zwischen logischem (virtuellem) und physischem (realem) Speicher - Adressraum, den die Befehle des Prozessors referieren, ist der logische Adressraum g des virtuellen Speichers p ist zwischen CPU-Adressbus und - zur Realisierung Speicher eine programmierbare Memory Management Unit (MMU) geschaltet. - Idee: bei jedem Speicherzugriff wird die vom Prozess erzeugte logische Adresse physische y Adresse abgebildet g durch MMU auf eine p ¾ logische Adresse (virtuelle Adresse): Adresse, die ein Maschinenspracheprogramm sieht (CPU-Sicht) ¾ Physische Adresse Adresse, tatsächliche Adresse im Speicher (MMU (MMU-Sicht) Sicht) • Techniken g g ((wichtigste g Technik)) - Paging - Segmentierung CNAM, WS 2010/2011 Paging g g • Prinzip - ein Programm wird in Seiten fester Größe (Pages) aufgeteilt - der reale Hauptspeicher wird in Seitenrahmen (Frames / Kachel) fester Größe aufgeteilt - jeder Kachel kann eine Page aufnehmen - Seiten können nach Bedarf in freie Kachel (im Hauptspeicher) eingelagert werden - die Zuordnung von Seiten zu Seitenrahmen übernimmt die Memory Management Unit (MMU) mit Hilfe einer Seitentabelle (page table), die vom BS erstellt und Seitenrahmennr. 0 aktualisiert wird 1 Page 0 Page 0 0 1 2 Page 1 1 4 3 Page 2 2 3 4 Page g 1 3 7 5 Page 2 6 Page 3 Seitentabelle Virtueller Speicher 7 Page 3 ph sischer Speicher physischer CNAM, WS 2010/2011 Paging g g • Adressumsetzung mittels Seitentabelle: Funktion der MMU - eine Seitentabelle enthält zusätzlich zur Seitennummer als Index Seitendeskriptoren ¾ Seitenrahmennummer (physische Adresse der Seite im Hauptspeicher) ¾ Presence-Bit (P-Bit): ist die Seite im Speicher? ¾ Schutzbits (regeln Art des Zugriffs) ¾ Referenced-Bit (R-Bit), Dirty-Bit (D-Bit), Cache-Disable-Bit (C-Bit) - eine Adresse wird immer als 2-Tupel aufgefasst ¾ Seitennummer (welche Seite im virtuellen Adressraum ist gemeint?) ¾ Offset (welche Adresse in der Seite ist gemeint?) - Die MMU interpretiert die niederwertigsten Bits einer virtuellen Adresse als Offset, die höherwertigen ö Bits legen die S Seite ffest - Presence-Bit auf 1 gesetzt ⇔ Seitenrahmennummer vorhanden ¾ MMU hängt das Offset der virtuellen virtuelle an Seitenrahmennummer CNAM, WS 2010/2011 Paging g g 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ausgehende physische Adresse (24580) Virtuelle Ad Adresse 15 14 Seitentabelle 000 0 000 0 13 000 0 12 11 000 111 0 1 10 000 0 9 8 101 1 000 7 000 000 0 0 6 0 5 4 3 011 1 100 1 000 1 2 110 001 010 1 1 1 0 110 present/a bsent bit 1 Virtuelle Seite = 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 ankommende k d virtuelle Adresse (8196) CNAM, WS 2010/2011 Paging g g • Paging - Verfahren - die Umsetzung der virtuellen Adresse erfolgt dynamisch - um für die momentan arbeitenden Prozesse genügend Platz zu haben, werden nicht benötigte Seiten auf den Hintergrundspeicher ausgelagert - wird eine Seite benötigt, die nicht im Hauptspeicher sondern nur auf dem Hintergrundspeicher lagert, so tritt ein Seitenfehler (page faults) auf ¾ die benötigte Seite muss in den Hauptspeicher geladen werden --> Laden nach Bedarf (demand paging) ¾ falls der Hauptspeicher schon voll ist, muss eine bzw. mehrere geeignete Seiten ausgelagert werden ¾ Abschließend wird die Seitentabelle entsprechend aktualisiert - Aktionen des Betriebssystem bei Seitenfehlern: Seitenersetzung ¾ Welche Seite kann zuerst entfernt werden? --> unterschiedliche Strategien zur Seitenersetzung CNAM, WS 2010/2011 Paging g g • Seitenersetzungsstrategien: Beispiele Algorithmus Beschreibung First-In First-out (FIFO) Die Seite wird entfernt, die sich am längsten im Hauptspeicher befindet Not Recently Used (NRU) Ausgelagert wird die Seite, die im letzten Zeitintervall (z.B. 20 ms) nicht referenziert wurde: Second Chance Second-ChanceAlgorithmus Hamburg Verbesserung von FIFO: Überprüfung des R-Bit R Bit der älteren Seite. R RAmsterdam Bit nicht gesetzt: kein Zugriff, Seite wird entfernt Düsseldorf Clock-Algorithmus g Berlin Verbesserung Second-Chance-Algorithmus. Seiten in Form Frankfurt einer virtuellen Uhr mit Zeigern g abgebildet. g Zeiger g auf älteste Stuttgart Seite Least Recently Used (LRU) die am längsten nicht benutzte Seite wird entfernt Softwaretechnische Implementierung von LRU: ausgelagert wird die Not Frequently Used (NFU) am wenigsten benutzte Seite Madrid Working-Set g Algorithmus g die wenigen, für einen Prozess relevanten Seiten identifizieren und stets prozessfremde Seiten auslagern WSClock-Algorithmus Kombination aus Clock und Workingset in realen Systemen weit verbreitet CNAM, WS 2010/2011 Paging g g • Implementierung - Realisierungsprobleme: Die Adressabbildung muss sehr schnell sein. Die Umsetzungstabelle kann extrem groß werden werden. (z (z.B. B 32 32-Bit Bit Adressen erfordern bei einer Seitengröße von 4096 Bytes eine Tabelle mit ca. 1 Million Einträgen.) - Hardwareunterstützung erforderlich erforderlich, um 1. Informationen zur Seitenpräsenz und -gültigkeit, Zugriffshäufigkeit, Schreibzugriffen und Zugriffsschutz zu speichern 2. die Adressumsetzung zu beschleunigen - Lösungsansätze: unterschiedliche Organisationsformen der Seitentabelle Naive Lösung: Eine einzige Seitentabelle in der MMU --> Spezialregister (sehr aufwändig wegen Taskwechsel) Seitentabelle im Speicher und ein Cache (TLB - Translation Lookaside Buffer) in der MMU zur Beschleunigung der Adressumsetzung Populäre Lösung: mehrstufige Seitentabelle bzw. invertierte Seitentabelle im Hauptspeicher zur Einschränkung der Größe CNAM, WS 2010/2011 Paging g g • Translation Lookaside Buffer (TBL): - Seitentabellen liegen im Speicher --> für jeden Speicherzugriff mehrere zusätzliche Zugriffe für Adressumsetzung nötig - Optimierung: MMU hält kleinen Teil der Adressabbildung in einem internen Cache-Speicher: TLB - Beispiel TBL Einträge: - Moderne Implementierung: Verwaltung des TBL durch Software : CNAM, WS 2010/2011 Paging g g - Adressumsetzung: wenn Seitennummer im TBL --> Kachelnummer. - MMU erzeugt Fehler, falls für eine Seite kein TLB-Eintrag vorliegt - Fehlerbehandlung durchs Betriebssystem: Durchsuchen der Seitentabellen im Speicher und Ersetzen eines TLB-Eintrags - wird in vielen RISC-Architekturen verwendet, z.B. SPARC, MIPS, Alpha CPU Logische L i h Adresse p d SeitenSeitentabelleneintrag Nr. TLB-Treffer Physische y Adresse f d TBL p TBL- Fehlschlag f Seitenfehler Hauptspeicher Seitentabelle CNAM, WS 2010/2011 Paging g g • mehrschichtige Tabellen - - Motivation: ¾ Speicherplatzbedarfsproblem: z.B. bei virtuellen Adressen mit 32 Bit Länge: 220 Seiten --> für jeden Prozeß wäre eine 4 MB große Tabelle nötig. Typische Windows-Installationen haben 30-60 Prozesse gleichzeitig am Laufen --> Platzbedarf für Umsetzungstabellen: 120 bis 240 MB ! ¾ Alle Seitentabellen werden nicht mehr gleichzeitig im Speicher gehalten werden Adressumsetzung: findet in mehreren Ebenen statt Die virtuelle Adresse wird in mindestens 2 Komponenten aufgeteilt. Mit der ersten Komponente wird ein Seitentabelleneintrag indexiert, dessen Pointer auf eine weitere Seitentabelle zeigt, welche mit der nächsten Komponente indexiert wird. Die letzte Komponente identifiziert die physikalische Adresse. - wird von vielen 32 Bit Architekturen verwendet, wie bei IA32 (2-stufig), Motorola MC68030 (4-stufig) und SPARC (3-stufig) - Problem: mehrschichtige Tabellen sind langsam, da Zugriff auf mehrere Tabellen notwendig. Unterstützung mit TBL CNAM, WS 2010/2011 Paging g g Mehrstufige Seitentabelle: hier zweistufig 31 ... 22 21 ... 12 11 ... 0 Index im Seitenverzeichnis (engl (engl. page directory directory, kurz: PD) Index in der Seitentabelle (engl. page table, kurz: PT) Offset in der Speicherseite CNAM, WS 2010/2011 Paging g g • invertierte Tabellen - Hintergrund: Mehrstufige Seitentabellen für 64-bit Architekturen nicht geeignet - Umsetzung: Seitentabellen, die statt Einträge für virtuelle Seiten, Einträge für Seitenrahmen enthalten. Jeder Eintrag speichert zu dem Seitenrahmen das zugehörige Paar (Prozess p, Seitennummer n) ¾ bei herkömmlichen Seitentabellen: Umsetzungstabelle pro Prozess ¾ Jetzt: nur eine Umsetzungstabelle im System - Nachteil: Adressumsetzung sehr aufwendig, da virtuelle Seitennummer nicht als Index verwendbar - für jeden Speicherzugriff ist eine Suche nach (p,n) nötig - Zur Beschleunigung der Suche: Verwendung einer schnellen Suchtechnik: Hashing - Zur Beschleunigung der Suche: TLB wird verwendet. - Werden in PowerPC, IBM AS/400 und Intel-Itanium-Prozessoren genutzt CNAM, WS 2010/2011 Paging g g Aufbau inverterte Seitentabelle Virtuelle Adresse Seitennr. Reale Adresse Offset Wert vi : Seitenrahmennummern Offset Zeiger Seitennr. Eintrag Überlaufkette ki Schüssel ki : Seitennummern Rahmennr. Hashfunktion kj vj h H(ki) ki Rahmennr. Invertierte Seitentabelle CNAM, WS 2010/2011 Paging g g • Design-Strategien für Paging - was ist für ein leistungsstarkes Paging System nötig? - Einige Strategiebeispiele: lokale und Globale Strategien Nutzung Gemeinsamer Seiten Freigabe-Strategien Seitengröße Hamburg Amsterdam Düsseldorf Berlin Frankfurt Stuttgart Madrid CNAM, WS 2010/2011 Paging g g • Lokale und Globale Strategien - lokale Strategien: bei Seitenfehler wird immer eine Seite desjenigen Prozesses ersetzt, der eine neue Seite anfordert ¾ jeder Prozess bekommt eine konstante Anzahl von Seiten zugewiesen Seitenfehler wirken sich daher nur auf den verursachenden Prozess negativ aus. - globalen Strategien: eine beliebige Seite im Speicher wird bei Seitenfehler ersetzt Hamburg ¾ jeder Prozess wird mit einer sinnvollen Speichergröße ausgestattet, ausgestattet welche Amsterdam während der Ausführung dynamisch angepasst wird. Der Prozess, der viele Berlin Düsseldorf Seitenfehler verursacht, erhält automatisch mehr Speicher Frankfurt -> effizient, da ungenutzte Seiten von anderen Prozessen verwendet werden können Stuttgart ¾ Beispiel: der Page Fault Frequency (PFF) Algorithmus zur Messung der Anzahl der Seitenfehler eines Prozesses in einem Zeitinterval zu hohe Seitenfehlerrate: mehr Speicher zuteilen zu niedrige Seitenfehlerrate: Speicher wegnehmen Madrid - manche Seitenersetzungs-Algorithmen für lokale und globale Strategien anwendbar (FIFO, LRU) - andere nicht (Workingset, WSClock) CNAM, WS 2010/2011 Paging g g • Nutzung gemeinsamer Seiten - Führen zwei Prozesse das selbe Programm aus, ist es effizienter Seiten gemeinsam zu nutzen, als mehrere Kopien der selben Seite im Speicher zu halten. - Seiten, auf die nur lesend zugegriffen wird (z. B. Code), können gemeinsam genutzt werden. - bei Seiten, auf die auch schreibend zugegriffen wird, ist eine gemeinsame Nutzung in der Regel nicht möglich (z. B. Daten). Hamburg Amsterdam - Einfache Lösung: Zwei getrennte Adressräume Berlinfür Daten und Programmcode. Düsseldorf für zwei bzw. mehr Prozesse eine gemeinsame Seitentabelle für Code Frankfurt getrennte Seitentabellen für den Datenraum. Stuttgart - Betriebssystem muss gemeinsame Seiten berücksichtigen Madrid CNAM, WS 2010/2011 Paging g g • Freigabe-Strategien - Voraussetzung fürs gutes Paging: genügend freie Seitenrahmen verfügbar - Wenn alle Seitenrahmen voll sind und eine gebraucht wird --> Auslagerung - Eventuell muss auszulagernde Seite noch zurückgeschrieben werden werden. Das dauert! - Lösung: vorbeugen durch Paging-Daemon - Paging-Daemon ist ein Prozess im Hintergrund, meist inaktiv Hamburg Amsterdam - er wacht regelmäßig auf und prüft Speicherzustand Berlin Düsseldorf - falls nicht genug freie Rahmen --> Paging-Daemon wählt Seiten aus und beginnt sie Frankfurt auszulagern Stuttgart - Bei einem Seitenfehler ist dann immer ein freier Rahmen verfügbar - somit wird die Performance gesteigert Madrid CNAM, WS 2010/2011 Paging g g • Seitengöße - wie groß muss die Seite (Kachel) sein, damit Paging optimal ist? - folgende Punkte sprechen für große Seiten: Je größer die Seiten Seiten, desto kleiner die Seitentabelle Seitentabelle, weniger Verwaltungsaufwand --> Speicher kann gespart werden Die Übertragung von großen Seiten ist effektiver, denn der Aufwand für das Hamburg Einund Auslagern von Seiten ist sehr groß. groß Es ist besser einmal 4 KB zu Amsterdam übertragen als 4x1 KB Berlin Düsseldorf - für kleine Seiten spricht, daß diese nicht soviel Speicher verschwenden. Frankfurt - Am häufigsten werden 4 KB oder 8 KB große Seiten verwendet Stuttgart Madrid CNAM, WS 2010/2011 Danke CNAM, WS 2010/2011