Kapitel 8 Speicherverwaltung

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Ext2. Geschichte Minixerhebliche Beschränkungen extfs ext2erstmals aufhebung aller drängenden Beschränkungen ext3erweiterung um Journaling.
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
Vorlesung Programmieren II
Kapitel 8 Speicherverwaltung
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
Datenbanken Einführung.
Lehrmaterial Grundlagen EDV
3. Kapitel: Komplexität und Komplexitätsklassen
5. Sortier-Algorithmen Vorbemerkungen:
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
On a Buzzword: Hierachical Structure David Parnas.
Kapitel 8.1 Speicherverwaltung - Paging
Systeme 1 Kapitel 3 Dateisysteme WS 2009/10.
Systeme 1 Kapitel 7.1 Deadlocks WS 2009/10.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 5 Scheduling WS 2009/10.
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Kapitel 7.2 Dining philosophers problem
Systeme 1 Kapitel 5.1 Unix Scheduling WS 2009/101.
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Effizienz: Indexstrukturen
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Algorithmentheorie 04 –Hashing
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 1. Quartal 2002.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
2.5. Mikrocontroller-Komponenten
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 10 Mutual Exclusion Peter B. Ladkin Sommersemester 2001 Universität Bielefeld Technische Fakultät.
Vorlesung 2 Rechnerarchitektur Peter B. Ladkin Wintersemester 2001/2002 Universität Bielefeld Technische Fakultät.
Externe Datenstruktur lineare Liste
4. Mikrocontroller-Komponenten
Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow.
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
Referat zum Thema „DLL“
Speicherverwaltung durch Swapping
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Betriebssysteme allgemein
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 10 SS 2000 Quadtrees.
Das Betriebssystem.
Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 8.2 Speicherverwaltung: Paging Segmentierung
Ein Vortrag von Simon Bayer
Präsentation von Lukas Sulzer
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Gaming-Computer-Aufbau
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
2.3 Implementierung von Prozessen
Jakob Dietschy Arnold Huber Karl Philip Schneider Lukas Unterberger Daniel Dötzl Gruppe 2 MEMORY MANAGEMENT.
6.2 Repräsentation auf Platten
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
LVM - Logical Volume Management unter Linux
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
Prozessoren Ein Referat von Maximilian Reisner. Inhalt  Erklärung  Grundbestandteile  Prinzipielle Arbeitsweise eines Prozessors  Werkstoffe  Umweltfreundliche.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
 Präsentation transkript:

Kapitel 8 Speicherverwaltung Systeme 1 Kapitel 8 Speicherverwaltung WS 2009/10

Speicherverwaltung Speicherverwaltung: Aufteilung des verfügbaren Hauptspeichers zwischen Betriebssystem verschiedenen Prozessen. Speicherverwaltung erfordert enges Zusammenspiel von Hardware und Betriebssystem. Zur Erinnerung: Zu jedem Prozess gehört ein Adressraum: zugeordneter Arbeitsspeicher mit minimalen und maximalen Adressen Enthält Ausführbares Programm, Programmdaten und Kellerspeicher (“Stack”)‏. WS 2009/10

Prozesse Hauptspeicher Code Prozess 1 Code Prozess 2 Daten Prozess 1 Activ. rec. Prozess 1 Activ. rec. Prozess 2 Prozesstabelle CPU PC Register Stack pointer WS 2009/10

Speicher Die ersten Computer wurden als Einheit entwickelt. Speicher, CPU, etc. wurden aufeinander abgestimmt entwickelt. Keine großen Geschwindigkeitsunterschiede zwischen den Komponenten. Später standardisiertes Design Erlaubte getrennte und spezialisierte Entwicklung einzelner Subsysteme. Manche Subsysteme konnten schneller und besser optimiert werden als andere. Engpässe („Flaschenhals“) entstanden. insbesondere zwischen CPU und Speicher WS 2009/10

Speicherhierarchie Registers Upper Level faster Instr./Operands Cache Blocks Memory Pages Disk Files Tape larger Lower Level WS 2009/10

Anforderungen an das Betriebssystem Grundlegende Anforderungen an Speicherverwaltung: Bereitstellung von Speicher für Betriebssystem und Prozesse Ziel aus Betriebssystemsicht: Möglichst viele Prozesse im Speicher vorhanden. Multiprogramming! 5 Anforderungen nach Lister / Eager: Relokation Schutz Gemeinsame Nutzung Logische Organisation Physikalische Organisation WS 2009/10

Relokation Relokation = „Verlagerbarkeit“ Motivation: Problem: Mehrere Prozesse gleichzeitig im System Auslagern und Wiedereinlagern ganzer Prozesse aus dem Hauptspeicher soll ermöglicht werden. Ort der Einlagerung zum Zeitpunkt der Programmentwicklung / Programmübersetzung unbekannt! Bindung an alten Ort beim Wiedereinlagern sehr ungünstig! Problem: Speicherreferenzen innerhalb des Programms: Absolute Sprungbefehle Datenzugriffsbefehle WS 2009/10

Prozesskontrollblock Relokation Beginn Prozesskontrollinformationen Prozesskontrollblock Programm Daten Einsprungstelle ins Programm Sprung- befehl Zunehmende Adresswerte Referenz auf Daten Programmende Übersetzung der Speicherreferenzen im Programmcode in tatsächliche physikalische Speicheradressen durch Prozessorhardware Betriebssystemsoftware WS 2009/10

Schutz Schutz von Prozessen gegen beabsichtigte oder unbeabsichtigte Störungen durch andere Prozesse Folge: Überprüfung aller Speicherzugriffe notwendig Schwierigkeit: Nicht zur Übersetzungszeit eines Programms überprüfbar, da: Dynamisch berechnete Adressen Relokation Dynamische Überprüfung nötig Hardwareunterstützung nötig In Zusammenhang mit Relokation gelöst. Nicht in ausschließlich Software lösbar Betriebssystem benötigt für effektiven Schutz Hardwareunterstützung. WS 2009/10

Exkurs: User-/ Kernel-Modell Ein sogenannter Prozessor-Ring schränkt nutzbare Prozessor-Befehle und Speicherbereiche ein. z.B. x86 Prozessoren haben 4 Ringe Meist werden nur 2 genutzt: Ring 0 (Kernel-Mode)‏ Ring 3 (User-Mode)‏ Kontrollierter Wechsel durch Betriebssystem (später mehr!)‏ WS 2009/10

Gemeinsame Nutzung Gemeinsame Nutzung = kontrollierter Zugriff mehrerer Prozesse auf gemeinsam genutzte Bereiche des Speichers Anwendungsbeispiele: Ausführung des gleichen Programms durch eine Reihe von Prozessen Code nur einmal im Speicher Benutzung gemeinsamer Module (z.B. dynamisch gelinkte Bibliotheken)‏ Kooperation von Prozessen über gemeinsam genutzten Datenspeicher („shared memory“)‏ WS 2009/10

Logische Organisation Hauptspeicher ist lineares Feld von Bytes (Wörtern)‏ Dagegen: Logischer Aufbau großer Programme: Sammlung verschiedener Module Unabhängig übersetzt; Referenzen erst zur Laufzeit aufgelöst Verschiedene Module mit verschiedenem Schutz (z.B. nur lesen / ausführen)‏ Gemeinsame Nutzung von Modulen durch verschiedene Prozesse z.B. auch dynamisch gebundene Bibliotheken Betriebssystem muss mit Modulen umgehen können. WS 2009/10

Physikalische Organisation Hier betrachtet: 2 Ebenen: Hauptspeicher (schnell, teuer, flüchtig)‏ Hintergrundspeicher (langsam, billig, nicht flüchtig)‏ Grundproblem: Organisation des Informationsflusses zwischen Haupt- und Sekundärspeicher Prinzipiell möglich: in Verantwortung des Programmierers Aufwändig, erschwert durch Multiprogramming Deshalb: Verwaltung durch das Betriebssystem WS 2009/10

Grundlegende Methoden der Speicherverwaltung Partitionierung Für Speicheraufteilung zwischen verschiedenen Prozessen eher veraltetes Konzept Betriebssysteminterne Nutzung von Partitionierung Paging Einfaches Paging Kombiniert mit Konzept des virtuellen Speichers Segmentierung Einfache Segmentierung WS 2009/10

Partitionierung Partitionierung: Verschiedene Varianten: Aufteilung des Speichers in Bereiche mit festen Grenzen Fester, zusammenhängender Teil des Hauptspeichers für Betriebssystem Pro Prozess ein zusammenhängender Teil des Speichers Verschiedene Varianten: Statische Partitionierung Dynamische Partitionierung Buddy-Verfahren WS 2009/10

Statische Partitionierung Einteilung des Speichers in feste Anzahl von Partitionen 2 Varianten: Alle Partitionen mit gleicher Länge Partitionen mit unterschiedlicher Länge Betriebssystem 8 Mbyte Betriebssystem 8 Mbyte 2 Mbyte 4 Mbyte 12 Mbyte 16 Mbyte WS 2009/10

Statische Partitionierung Probleme: Programm zu groß für Partition Programmerstellung durch Overlays nötig (aufwändig!)‏ Interne Fragmentierung: Platzverschwendung, wenn Programm kleiner als Größe der zugeordneten Partition Fest vorgegebene Anzahl von Prozessen im Speicher Bei Laden von Prozessen in Speicher: evtl. Auslagern von anderen Prozessen Zuweisung von Partitionen an Prozesse: Bei Bereichen mit gleicher Länge: trivial Bei Bereichen mit variabler Länge: Kleinste verfügbare Partition, die gerade noch ausreicht? Wenn Speicherbedarf nicht feststellbar, dann helfen nur Overlays oder virtueller Speicher! WS 2009/10

Dynamische Partitionierung Einteilung des Speichers in Partitionen variabler Länge und variabler Anzahl Prozesse erhalten exakt passende Speicherbereiche Ein- und Auslagern führt zu externer Fragmentierung! (vgl. auch Kapitel Dateisysteme)‏ WS 2009/10

Dynamische Partitionierung BS, 8MB BS, 8MB BS, 8MB BS, 8MB 56 MB Prozess 1 20 MB Prozess 1 20 MB Prozess 1 20 MB 36 MB Prozess 2 14MB Prozess 2 14MB 22MB Prozess 3 18 MB 4 MB BS, 8MB BS, 8MB BS, 8MB BS, 8MB Prozess 1 20 MB Prozess 1 20 MB Prozess 1 20 MB Prozess 2 14 MB 6 MB P. 4, 8MB P. 4, 8MB P. 4, 8MB 6 MB 6 MB 6 MB Prozess 3 18 MB Prozess 3 18 MB Prozess 3 18 MB Prozess 3 18 MB 4 MB 4 MB 4 MB 4 MB WS 2009/10

Dynamische Partitionierung Defragmentierung erforderlich! Aufwändig Speicherverdichtung nur erfolgreich, wenn dynamische Relokation möglich (Speicherreferenzen werden nicht ungültig!)‏ Speicherzuteilungsalgorithmen: Best Fit: Suche kleinsten Block, der ausreicht. First Fit: Suche beginnend mit Speicheranfang bis ausreichender Block gefunden. Next Fit: Suche beginnend mit der Stelle der letzten Blockzuweisung. WS 2009/10

Dynamische Partitionierung Analyse von Speicherzuteilungsalgorithmen: Im Schnitt ist First Fit am besten! Next Fit: Etwas schlechter Typischer Effekt: Schnelle Fragmentierung des größten freien Speicherblocks am Ende des Speichers Best Fit: Am schlechtesten Produziert schnell eine Reihe von sehr kleinen Fragmenten, die ohne Defragmentierung nie mehr benutzt werden können. Zudem: langsames Verfahren WS 2009/10

Buddy-System Nachteil statische Partitionierung: Beschränkte Anzahl nicht-ausgelagerter Prozesse Interne Fragmentierung Nachteil dynamische Partitionierung: Defragmentierung nötig, wegen externer Fragmentierung Buddy-System (Halbierungsverfahren): Kompromiss zwischen statischer und dynamischer Partitionierung Eigenschaften: Anzahl nicht-ausgelagerter Prozesse dynamisch Interne Fragmentierung beschränkt Keine explizite Defragmentierung WS 2009/10

Buddy-System Prinzip: Verwalte Speicherblöcke der Größe 2K, L ≤ K ≤ U 2L = Größe des kleinsten zuteilbaren Blocks 2U = Größe des größten zuteilbaren Blocks (z.B. Gesamtgröße des Speichers)‏ Zu Beginn: Es existiert genau ein Block der Größe 2U. Anforderung eines Blocks der Größe s: Bei 2U-1 < s ≤ 2U: Weise gesamten Speicher zu. Sonst: Teile auf in 2 Blöcke der Größe 2U-1 . Bei 2U-2 < s ≤ 2U-1: Weise einen der beiden Blöcke zu. Sonst: Wähle einen der beiden Blöcke aus und teile. … Fahre fort bis zu Block der Größe 2K mit 2K-1 < s ≤ 2K . Bei resultierendem Block ist der „Verschnitt“ kleiner als die halbe Blockgröße. WS 2009/10

Buddy-System Verwalte f.a. L ≤ K ≤ U Listen mit freien Blöcken der Größe 2K . Allgemeiner Fall: Anforderung eines Blocks der Größe 2i-1 < s ≤ 2i: Vergebe Block aus Liste i, wenn vorhanden. Sonst: Wähle Block aus nächstgrößerer nichtleerer Liste. Teile rekursiv auf, bis ein Block der Größe 2i vorhanden. Wenn nach Freigabe eines Blocks der Größe 2K der entsprechende Partnerblock der Größe 2K ebenfalls frei war: Verschmelze die Blöcke zu einem Block der Größe 2K+1 . Mache rekursiv mit Verschmelzen weiter. WS 2009/10

Buddy-System Beispiel: Annahme: Speicher der Größe 1 GB Folge von Anforderungen und Freigaben: A fordert 100 MB an. B fordert 240 MB an. C fordert 64 MB an. D fordert 256 MB an. Freigabe B Freigabe A E fordert 75 MB an. Freigabe C Freigabe E Freigabe D Annahme: Obergrenze der Blockgröße: 1 GB, Untergrenze: 64 MB WS 2009/10

Buddy-System Zunächst verfügbar: Freie Blöcke: 1 GB: 1 512 MB: 0 256 MB: 0 128 MB: 0 64 MB: 0 1 GB Es folgt Anforderung A: 100 MB, d.h. Block der Größe 128 MB. WS 2009/10

Buddy-System Nach Anforderung A: 100 MB, d.h. Block der Größe 128 MB: Freie Blöcke: 1 GB: 0 512 MB: 1 256 MB: 1 128 MB: 1 64 MB: 0 1 GB A: 128 MB Es folgt Anforderung B: 240 MB, d.h. Block der Größe 256 MB. WS 2009/10

Buddy-System Nach Anforderung B: 240 MB, d.h. Block der Größe 256 MB Freie Blöcke: 1 GB: 0 512 MB: 1 256 MB: 0 128 MB: 1 64 MB: 0 1 GB A: 128 MB B: 256 MB Es folgt Anforderung C: 64 MB, d.h. Block der Größe 64 MB. WS 2009/10

Buddy-System Nach Anforderung C: 64 MB, d.h. Block der Größe 64 MB Freie Blöcke: 1 GB: 0 512 MB: 1 256 MB: 0 128 MB: 0 64 MB: 1 1 GB A: 128 MB C:64MB B: 256 MB Es folgt Anforderung D: 256 MB, d.h. Block der Größe 256 MB. WS 2009/10

Buddy-System Nach Anforderung D: 256 MB, d.h. Block der Größe 256 MB Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 1 128 MB: 0 64 MB: 1 1 GB A: 128 MB C:64MB B: 256 MB D: 256 MB Es folgt Freigabe B. WS 2009/10

Buddy-System Nach Freigabe B: Es folgt Freigabe A. Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 0 64 MB: 1 1 GB A: 128 MB C:64MB D: 256 MB Es folgt Freigabe A. WS 2009/10

Buddy-System Nach Freigabe A: Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 1 64 MB: 1 1 GB C:64MB D: 256 MB Es folgt Anforderung E: 75 MB, d.h. Block der Größe 128 MB. WS 2009/10

Buddy-System Nach Anforderung E: 75 MB, d.h. Block der Größe 128 MB: Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 0 64 MB: 1 1 GB E: 128 MB C:64MB D: 256 MB Es folgt Freigabe C. WS 2009/10

Buddy-System „Buddies“ Bei Freigabe C: Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 0 64 MB: 2 1 GB E: 128 MB D: 256 MB „Buddies“ WS 2009/10

Buddy-System Nach Freigabe C: Es folgt Freigabe E. Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 1 64 MB: 0 1 GB E: 128 MB D: 256 MB Es folgt Freigabe E. WS 2009/10

Buddy-System „Buddies“ Bei Freigabe E: Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 2 128 MB: 2 64 MB: 0 1 GB D: 256 MB „Buddies“ WS 2009/10

Buddy-System „Buddies“ Bei Freigabe E: Freie Blöcke: 1 GB: 0 512 MB: 0 256 MB: 3 128 MB: 0 64 MB: 0 1 GB D: 256 MB „Buddies“ WS 2009/10

Buddy-System Nach Freigabe E: Es folgt Freigabe D. Freie Blöcke: 1 GB: 0 512 MB: 1 256 MB: 1 128 MB: 0 64 MB: 0 1 GB D: 256 MB Es folgt Freigabe D. WS 2009/10

Buddy-System „Buddies“ Bei Freigabe D: Freie Blöcke: 1 GB: 0 512 MB: 1 256 MB: 2 128 MB: 0 64 MB: 0 1 GB „Buddies“ WS 2009/10

Buddy-System „Buddies“ Bei Freigabe D: Freie Blöcke: 1 GB: 0 512 MB: 2 256 MB: 0 128 MB: 0 64 MB: 0 1 GB „Buddies“ WS 2009/10

Buddy-System Nach Freigabe D: Freie Blöcke: 1 GB: 1 512 MB: 0 256 MB: 0 128 MB: 0 64 MB: 0 1 GB Gesamter Speicher wieder als 1 Block verfügbar. WS 2009/10