Kapitel VI. Speicherverwaltung. Vorlesung Betriebssysteme

Ähnliche Dokumente
Speicherverwaltung. Kapitel VI. Adressbindung (2) Adressbindung (1) Speicherverwaltung

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Kapitel VI. Speicherverwaltung. Vorlesung Betriebssysteme

Vorlesung Betriebssysteme

Memory Management. Peter Puschner Institut für Technische Informatik

Tutorium Rechnerorganisation

RO-Tutorien 15 und 16

Virtueller Speicher und Memory Management

Speicherverwaltung (Swapping und Paging)

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

Teil 2: Speicherstrukturen

Leichtgewichtsprozesse

Leichtgewichtsprozesse

(Cache-Schreibstrategien)

Virtueller Speicher WS 2011/2012. M. Esponda-Argüero

Wunschvorstellung der Entwickler vom Speicher

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

Echtzeitbetriebssysteme

Wie groß ist die Page Table?

Zwei Möglichkeiten die TLB zu aktualisieren

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

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Konzepte von Betriebssystem- Komponenten Olessia Usik 20. Juni 2005

Lösung von Übungsblatt 2

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Hauptspeicherverwaltung - Memory Management

Linux Paging, Caching und Swapping

Einführung in die technische Informatik

In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher

Freispeicherverwaltung Martin Wahl,

Übung zu Grundlagen der Betriebssysteme. 14. Übung

Überschrift. Speicherverwaltung. Prof. Dr. Margarita Esponda Freie Universität Berlin 2011/2012

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

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

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

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.

Betriebssysteme I WS 2016/2017. Betriebssysteme / verteilte Systeme Tel.: 0271/ , Büro: H-B 8404

RO-Tutorien 17 und 18

Cache Blöcke und Offsets

2.3 Prozessverwaltung

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Freispeicherverwaltung

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

7. Speicherverwaltung

Rechnergrundlagen SS Vorlesung

é Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus

Echtzeit-Multitasking

Echtzeit-Multitasking

Inhaltsübersicht. Speicherverwaltung Teil I. Motivation. Prinzipielle Arten der Speicherverwaltung

Lösung von Übungsblatt 5

Betriebssysteme Sommersemester Betriebssysteme. 5. Kapitel. Adressumsetzung. Dr. Peter Tröger / Prof. M. Werner. Professur Betriebssysteme

Fachbericht Thema: Virtuelle Speicherverwaltung

virtueller Speicher - Trennung des logischen Speichers der Anwendung vom physikalischen Speicher.

Übung zu Grundlagen der Betriebssysteme. 13. Übung

Betriebssysteme Studiengang Informatik / SAT

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

Speicher- Management

5.5 Virtueller Speicher

Grundlagen der Informatik III Wintersemester 2010/2011

3 Schnittstelle zum Betriebssystem 3.1 Einleitung

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

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

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

Betriebssysteme 1. Thomas Kolarz. Folie 1

Anbindung zum Betriebssystem (BS)

, 2014W Übungsgruppen: Mo., Mi.,

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Betriebssysteme. Speicherverwaltung - Grundlegende Konzepte. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.

Technische Informatik 2 Speichersysteme, Teil 3

5.5.5 Der Speicherverwalter

Speicher Virtuelle Speicherverwaltung. Speicherverwaltung

Betriebssysteme. Thomas Fahringer. Institut für Informatik Universität Innsbruck. VO Betriebssysteme

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

8. Swapping und Virtueller Speicher

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

4.3 Hintergrundspeicher

Anbindung zum Betriebssystem (BS)

Betriebssysteme (BS)

Übung zu Einführung in die Informatik # 10

9) Speicherverwaltung

Technische Informatik 1 - HS 2017

Grob-Struktur des Prozessor-Speichersystems

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Betriebssysteme I WS 2013/2014. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/ , Büro: H-B 8404

Technische Informatik 2 Speichersysteme, Teil 2

Ein- und Ausgabegeräte

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Definitionen zum Verschnitt

1. Speicher. Typische Nutzung eines Adreßraums. Systemsoftware. Textbereich relativ klein. Sehr großer Abstand zwischen Heap und Stack

Rechnernutzung in der Physik. Betriebssysteme

Adreßräume. Motivation. Seitenersetzung (Paging) Systemsoftware. = Referenzlokalität. Seite 2.1. Instruktionen werden wiederholt ausgeführt

Grundlagen der Informatik III Wintersemester 2010/2011

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

Speicherverwaltung und Cache Erläuterungen

Transkript:

Kapitel VI Speicherverwaltung V 1

Speicherverwaltung Computer exekutiert Programme (mit Daten) im Hauptspeicher. Hauptspeicher: Großes Array von Wörtern (1 oder mehrere Bytes) Jedes Wort hat eine eigene Adresse. Ausführungszyklus einer Programminstruktion: CPU holt Instruktion aus Hauptspeicher basierend auf Programmzähler. Instruktion wird dekodiert. Operanden werden von Hauptspeicher/Register geholt. Resultate werden im Hauptspeicher/Register gespeichert. Meistens werden mehrere Programme zugleich exekutiert. Hauptspeicher hat zuwenig Platz für alle Programme und Daten. Festplatte als Backup-Speicher für Hauptspeicher.

Adressbindung (1) Programm liegt auf Festplatte als Binärcode. Programm wird geladen (von Festplatte in Hauptspeicher) und von Prozess exekutiert. Prozesse, die darauf warten, geladen zu werden, befinden sich in der Eingabewarteschlange. Ein Prozess wird aus der Warteschlange ausgewählt und geladen. Prozess greift auf Instruktionen und Daten im Speicher zu. Prozess terminiert und gibt Speicher frei. Programm kann an viele Stellen im Speicher geladen werden. Die Adressbindung von Instruktionen und Daten kann auf verschiedene

Adressbindung (2) Zur Übersetzungszeit Programmstartadresse im Speicher zur Übersetzungszeit bekannt. Kann absolute Adressen generieren Bei Änderung der Startadresse muss neu übersetzt werden. Zur Ladezeit Startadresse des Programms nicht zur Übersetzungszeit bekannt. Übersetzer erzeugt relocatable Code. Adressbindung erst zur Ladezeit Bei Änderung der Startadresse muss neu geladen werden. Zur Laufzeit Prozess kann während Exekution im Speicher verschoben werden. Adressbindung erst zur Laufzeit. Spezielle Hardware notwendig (dynamische Adressberechnung)

Verarbeitung eines Programms zur Übersetzungszeit Eingabeprogramm Symbolische Adressen z.b. Zähler Übersetzer oder Assembler Objektmodul Relocatable Adressen z.b. 14 Bytes nach Beginn dieses Speichermodul

erarbeitung eines Programms zur Ladezei Objektmodul Weitere Objektmodule Linker Lademodul Lader Systembibliothek

erarbeitung eines Programms zur Laufzeit Lader Dynamisch geladene Systembibliothek Binärcode (Image) absolute Adressen

Dynamisches Laden und Linken Dynamisches Laden: Dynamisches Laden, um Speicher optimal auszunützen Alle Routinen sind auf der Platte in relocatable Format. Eine Code-Routine wird erst bei Gebrauch zur Laufzeit geladen. Dynamisches Linken (meist für Sprach- oder Systembibliotheken): Linken von Routinen mit Benutzerprogramm zur Laufzeit. Statt Routine wird Stub in den Binärcode inkludiert. Stub weiß wo sich Routine (bereits geladen) befindet, oder wie man Routine lädt. Stub ersetzt sich selbst mit der Adresse der Routine und exekutiert diese. Bei der nächsten Verwendung einer Routine ist diese bereits im Speicher.

Overlays Was ist, wenn ein Prozess mehr Speicher benötigt, als physikalisch verfügbar ist? Verwende Overlays: Lege nur jene Befehle im Speicher ab, die gerade benötigt werden. Alle anderen Befehle bleiben auf der Platte. Bei Bedarf ersetze geladene Befehle, die möglichst nicht mehr verwendet werden. Programme werden dazu in Segmente zerlegt. Ein Overlay ist eine Sequenz von Segmenten, die vollständig im Speicher exekutiert werden kann.

Logische und Physikalische Adressen Logische (virtuelle) Adressen aus der Sicht der CPU Physikalische Adressen aus der Sicht des Speichers Logische Adressen werden zur Laufzeit von der Memory Management Unit (MMU) in physikalische Adressen übersetzt. MMU ist ein Hardware-Bauteil. Relocation Register Hauptspeicher CPU logische 14000 physikalische Adresse Adresse 346 14346 MMU +

Speicherverwaltung (1) Was tun, wenn der Hauptspeicher nicht ausreicht? Teil des Speichers könnte auf die Platte ausgelagert werden. Platte ist größer, dafür langsamer als der Hauptspeicher. Mehrere Programme zugleich im Speicher CPU ist besser ausgelastet (Prozess wird exekutiert, während andere Prozesse auf I/O warten) Mehrere Programme exekutieren zugleich. Übersetzer, Editor, Debugger Textverarbeitungs-, Spreadsheet- und Zeichenprogramm Prozesse müssen untereinander vor unerlaubtem Speicherzugriff geschützt werden. Verwende virtuelle Adressen Werden wie herkömmliche Adressen verwendet Hardware übersetzt diese in physikalische Adressen.

Speicherverwaltung (2) 2 grundlegende Ansätze: Swapping virtueller Speicher Swapping jeder Prozess vollständig im Speicher läuft eine gewisse Zeit wird auf Plattenspeicher ausgelagert virtueller Speicher Teile eines Programms befinden sich im Speicher

Swapping (1) Prozess muss sich im Hauptspeicher befinden, bevor er exekutiert wird. Swapping: Transfer von vollständigem Prozess aus Hauptspeicher in den Plattenspeicher und umgekehrt Prozess kann temporär auf Plattenspeicher ausgelagert werden: Multitasking gute Ausnutzung der CPU Laufzeiten sollen im Vergleich zu den Swap-Intervallen lang sein. Betriebssystem muss jederzeit die Größe des dynamisch alloziierten Speichers eines Programmes kennen. Prozesse mit hoher Priorität haben Vorrang. Swapping ist teuer! Zu wenig Hauptspeicher Swap-Speicher der Platte ist separater (getrennt von Filesystem) Bereich, um Zugriffszeiten zu optimieren. Prozess wird wieder von Platte in Hauptspeicher kopiert.

Swapping (2)

Swapping Änderung der Speicherallokation Veränderung der Speicherallokation, wenn Prozess in den Hauptspeicher geladen wird Hauptspeicher verlässt

Speicherverwaltung mit Bitmaps oder Freibereichslisten Teil eines Speichers mit 5 Prozessen und 3 Leerräumen Bit im Bitmap entspricht einer Einheit (Wörter, einige Kilobytes) freie Einheiten als schraffierte Flächen Bitmap versus verkettete Liste

Speicherverwaltung mit verketteten Listen

Swapping dynamische Speicherblöcke Speichervergabe für dynamisch wachsende Datensegmente Speichervergabe für wachsenden Stack und Datensegmente

Problem: dynamische Speichervergabe rfüllen einer Speicheranfrage von n Bytes unter Verwendung der reibereichsliste First-fit: erster Freibereich, der groß genug ist Best-fit: kleinster Freibereich, der groß genug ist; gesamte Liste muss durchsucht werden; sortiere Freibereich nach der Größe. Worst-fit: größter Freibereich; muss gesamte Liste durchsuchen. First-fit und Best-fit sind besser als Worst-fit im Bezug auf Geschwindigkeit und Speicherverbrauch. First-fit ist das schnellste Verfahren.

Swap-Space Wo befindet sich der Swap Space? Ist es ein normales File im File-System? Befindet es sich in einem speziellen Bereich auf der Platte? normales File einfache Lösung verhält sich wie ein File leicht zu ändern verwende herkömmliche Tools langsam wegen File-System-Overhead spezieller Plattenbereich Schneller Änderungen sind schwierig, da neuer Plattenbereich benötigt wird.

Paging Virtueller Speicher meist durch Paging implementiert Physikalischer Speicher (Haupt- und Plattenspeicher) wird in Blöcke (Frames - Seitenrahmen) gleicher Größe unterteilt. Logischer Speicher wird in Blöcke (Seiten) mit derselben Größe wie Frames unterteilt. Typische Seitengrößen liegen zwischen 512 Bytes und 16 MBytes Bei der Exekution eines Prozesses durch die CPU werden nur jene Seiten in de Speicher geladen, die tatsächlich verwendet werden. Zwischen Speicher und Platte werden immer ganze Seiten übertragen. Tabelle für die Adresskonvertierung von virtuellen in physikalische Adressen Betrachte eine 32-Bit Adresse 4096 Byte Seiten (12 Bits für die Adressierung innerhalb der Seite) 2^20 Seiten (20 Bits) tuelle Adresse Position Present Rd/Write 20 bits 12 bits Seiten- Tabelle + Hauptspeicher

Virtueller Speicher Paging

Paging Relation zwischen virtuellen und physikalischen Adressen

Seitentabellen MMU Adressumwandlung mit 16 4 KB Seiten

Vorteil der virtuellen Adressierung Programme können nicht zusammenhängende Bereiche eines physikalischen Speichers verwenden. Ein Programm kann nur auf seinen eigenen Speicherbereich (Seiten) zugreifen. Kann mehr virtuelle Seiten verwenden, als im physikalischen Speicher vorhanden sind. Seiten, die nicht in den Speicher passen, können auf der Platte gespeichert werden. Jedes Programm kann bei der (virtuellen) Adresse 0 beginnen. Größe des Speichers unwichtig aus der Sicht des Programmierers

Paging Benutzer- versus Systemsicht Unterschied zwischen Adressbereich den der Benutzer sieht, und dem tatsächlichen physikalischen Speicher Für den Benutzer: kontinuierlicher Speicher ohne Lücken Tatsächlich: Benutzerprogramm über physikalischen Speicher verstreut Hardware-Adressierungsmodus als Schnittstelle zwischen beiden Adressbereichen Paging nutzt den Speicher optimal aus, da Seiten nicht kontinuierlich im Speicher abgelegt sein müssen.

Paging Seitengrößen: Vor- u. Nachteile Normalerweise hat jeder Prozess seine eigene Seitentabelle. 1 Eintrag pro Seite, die der Prozess verwendet Betriebssystem verwaltet physikalischen Speicher. Seitengrößen mit Vor- und Nachteilen Prozesse benötigen nicht immer das Vielfache einer Seite als Speicher. Letzte Seite meist mit Redundanz Kleine Seitengrößen bedeuten weniger Redundanz. Je kleiner die Seiten, desto größer die Seitentabellen Mehr Aufwand für Verwaltung der Seitentabellen Transfer von Frames aus Plattenspeicher effizienter für große Seiten

Probleme mit Seitentabellen Eine Seitentabelle kann sehr groß werden. 2 20 Einträge für die meisten Programme. Wobei die meisten Einträge leer sind. Beachte, dass jeder Prozess eigene Seitentabelle hat. Lösung 1: Verwende eine Hierarchie von Seitentabellen (Pagen der Seitentabelle). Virtuelle Adresse 12 bits 10 bits Seitenverzeichnis Pg Tbl Ptr 10 bits Seitentabelle physik. Seitennr. + Hauptspeicher

Invertierte Seitentabellen Lösung 2: 1 Tabelle (invertierte Seitentabelle) für alle Prozesse statt eigener Tabelle für jeden Prozess Wenn eine Speicheradresse von der CPU <prozess-id, seiten-nr, offset> angesprochen wird, so wird die invertierte Seitentabelle durchsucht (Hash-Funktion). Ein Eintrag pro Seite des physikalischen Speichers in inv. Tabelle <prozess-id, seiten-nr> Prozess-Id gibt an, wem die Seite gehört. Wenn ein Eintrag in der invertierten Seitentabelle gefunden wird, dann generiere die physikalische Adresse <i, offset>. Die invertierte Seitentabelle speichert keine Informationen über Seiten, die nicht im Hauptspeicher sind. Zugriffszeiten sind länger wegen Hash-Suchvorgang.

Invertierte Seitentabelle: Beispiel 4 16 12 Physikal. Adr. CPU PID Seiten # Offset i Offset virtuelle Adr. Haupt- Speicher Hash Funktion 1 i invertierte Seitentabelle PID Seiten # 1 Seitentabelle pro System

Schnellere Abbildung von virtuellem auf physikalischen Speicher Benötige Hardware für die Konvertierung von virtuellen in physikalische Adressen kann mehrere Speicherzugriffe verursachen (Tabelle + Adresse) Geschwindigkeit kann problematisch sein. Lösung: Translation Look-Aside Buffer (TLB) als HW-cache Speichert bereits gefundene Adressabbildungen Zusätzlich zur Seitentabelle, die im Speicher ist Assoziative Tabelle für die Adresskonvertierung Normalerweise 8 bis 4096 Einträge valid virtual page physical page

Gemeinsamer Speicher Gemeinsame Verwendung von Seiten Mehrere Prozesse verwenden denselben Code oder dieselben Daten. Mehrere Seiten können mit dem selben Frame assoziiert sein. Bei read-only-daten ist das Teilen von Seiten immer sicher. Schreiboperationen auf gemeinsamen Seiten sind problematisch. Copy-on-write: Seiten werden häufig gemeinsam verwendet, bis ein Prozess eine Schreiboperation ausführt. Beim Schreiben einer gemeinsame Seite wird ein neuer Frame angelegt. Schreibender Prozess besitzt modifizierte Seite. Alle anderen Prozesse besitzen Originalseite. Synchronisiere Zugriff auf gemeinsame Seite. z.b. Semaphore

Virtuelle Adresse ohne physikalische Adresse: Seitenfehler Das nennt man einen Page Fault (Seitenfehler). Software Interrupt (Trap) in das Betriebssystem aus der Hardware Verursacht durch: Erste Verwendung einer Seite (Demand Paging) Betriebssystem holt Seite von Platte, und Prozess macht weiter. Lese Daten von der Platte oder initialisiere Datenseite mit 0. Referenz auf eine ungültige Seite Programm wird mit einer Segmentation Violation terminiert. Seite ist auf der Platte. Hole Seite von Platte, lade diese in eine physikalische Seite des Hauptspeichers, und setze mit dem Programm fort. Copy-on-Write Seite (neuer Frame bei Schreiboperation)

ustand von Seiten (Hardware Perspektive) Seiten-Frame Zähler (Position der Seite im Speicher oder auf der Platte) Valid Bit Seite im Hauptspeicher vorhanden Modify oder Dirty Bit Von Hardware beim Schreiben einer Seite gesetzt Spezifiziert ob der Inhalt einer Seite seit dem Laden in den Hauptspeicher geändert worden ist. Wenn Seite nicht verändert worden ist, muss die Seite nicht auf die Platte geschrieben werden (um Platz für andere Seiten zu machen). Reference (Use) Bit Von Hardware beim Lesen oder Schreiben gesetzt Vom Betriebssystem änderbar Kann für Ersetzungsalgorithmen von Seiten verwendet werden. Sicherungsattribute (Protection)

Betriebssystem Sicherungsattribute (Windows) NOACCESS: Lesen, Schreiben oder Ausführen verursacht Access Violation (Verletzung von Zugriffsrechten). READONLY: Schreiben oder Ausführen dieser Speicherregion verursacht Access Violation. READWRITE: Ausführen dieser Speicherregion verursacht Access Violation. EXECUTE: Lesen oder Schreiben dieser Speicherregion verursachen Access Violation. EXECUTE_READ: Schreiben dieser Speicherregion verursachen Access Violation. EXECUTE_READ_WRITE: Keine Aktion bei dieser Seite. WRITE_COPY: Betriebssystem gibt Prozess eigene Kopie einer Seite bei einem Schreibversuch. Bei einem Versuch der Ausführung wird Access Violation verursacht. EXECUTE_WRITE_COPY: Betriebssystem gibt Prozess eigene Kopie einer Seite bei einem Schreibversuch. Kann keine Access Violation

Behandlung von Seitenfehlern Überprüfe, ob Adresse gültig ist. Wenn nicht, dann terminiere diesen Prozess. Finde Frame für die Seite. Wenn kein Frame frei, muss der Inhalt eines Frames auf Platte ausgelagert werden. Lade Seite von der Platte Während diese Seite geladen wird, können andere Prozesse exekutiert werden. Modifiziere Seitentabelleneintrag für diese Seite. Starte die Instruktion neu, die zu Seitenfehler geführt hat. Hardware beendet solche Instruktionen. Kehre zur korrekten Position ausgehend vom Trap zurück.

eitenfehler ohne zusätzliche physikalische Seite Muss eine Seite aus Hauptspeicher entfernen. Eine dirty Seite muss zuerst auf die Platte gespeichert werden. Dirty Seiten wurden seit Transfer von Platte geschrieben. Welche Seite soll aus Hauptspeicher entfernt werden? Brauche passenden Algorithmus globale Seite (gehört anderem Prozess) lokale Seite (gehört dem Prozess mit Seitenfehler)

Algorithmus für das Ersetzen von Seiten Optimale Strategie (OPT) ersetzt die Seite, deren nächste Referenz am weitesten in der Zukunft liegt erzeugt die wenigsten-seitenfehler keine reale Strategie wird zur Bewertung anderer Strategien herangezogen

Beispiel für OPT (Speicher mit 3 Frames) Zugriffsmuster: 1,2,3,4,1,2,5,1,2,3,4,5 Zugriff 1 (1) nicht vorhanden Zugriff 2 (1,2) nicht vorhanden Zugriff 3 (1,2,3) nicht vorhanden Zugriff 4 (1,2,4) nicht vorhanden, ersetze Zugriff 1 (1,2,4) vorhanden Zugriff 2 (1,2,4) vorhanden Zugriff 5 (1,2,5) nicht vorhanden, ersetze Zugriff 1 (1,2,5) vorhanden Zugriff 2 (1,2,5) vorhanden Zugriff 3 (3,2,5) nicht vorhanden, ersetze Zugriff 4 (4,2,5) nicht vorhanden, ersetze Zugriff 5 (4,2,5) vorhanden 6 Seitenfehler

Algorithmus für das Ersetzen von Seiten FIFO Ersetze die älteste Seite im Hauptspeicher. Aufpassen: Auf alte Seiten kann häufig zugegriffen werden. Anzahl der Seitenfehler kann stark ansteigen, wenn die Anzahl der Frames erhöht wird - Belady s Anomaly. einfache Implementierung: Pointer, der zyklisch über die Seitenrahmen des Prozesses wandert.

Algorithmus für das Ersetzen von Seiten LRU (least-recently-used) Ersetze die Seite, die am längsten nicht verwendet worden ist. Annahme: Seite wird auch in der Zukunft nicht referenziert (Lokalitätsprinzip) Anzahl der Seitenfehler kaum höher als bei OPT Implementierung kann teuer sein. Verwalte Stack, wobei jedes Stack-Element einer Seite entspricht. Seite kommt auf Top-of-Stack, wenn diese angesprochen wird.

Beispiel für FIFO (Speicher mit 3 Frames) Zugriffsmuster: 1,2,3,4,1,2,5,1,2,3,4,5 Zugriff 1 (1) nicht vorhanden Zugriff 2 (1,2) nicht vorhanden Zugriff 3 (1,2,3) nicht vorhanden Zugriff 4 (2,3,4) nicht vorhanden, ersetze Zugriff 1 (3,4,1) nicht vorhanden, ersetze Zugriff 2 (4,1,2) nicht vorhanden, ersetze Zugriff 5 (1,2,5) nicht vorhanden, ersetze Zugriff 1 (1,2,5) vorhanden Zugriff 2 (1,2,5) vorhanden Zugriff 3 (2,5,3) nicht vorhanden, ersetze Zugriff 4 (5,3,4) nicht vorhanden, ersetze Zugriff 5 (5,3,4) vorhanden 9 Seitenfehler

Beispiel für FIFO (Speicher mit 4 Frames) Zugriffsmuster: 1,2,3,4,1,2,5,1,2,3,4,5 Zugriff 1 (1) nicht vorhanden Zugriff 2 (1,2) nicht vorhanden Zugriff 3 (1,2,3) nicht vorhanden Zugriff 4 (1,2,3,4) nicht vorhanden Zugriff 1 (1,2,3,4) vorhanden Zugriff 2 (1,2,3,4) vorhanden Zugriff 5 (2,3,4,5) nicht vorhanden, ersetze Zugriff 1 (3,4,5,1) nicht vorhanden, ersetze Zugriff 2 (4,5,1,2) nicht vorhanden, ersetze Zugriff 3 (5,1,2,3) nicht vorhanden, ersetze Zugriff 4 (1,2,3,4) nicht vorhanden, ersetze Zugriff 5 (2,3,4,5) nicht vorhanden, ersetze 10 Seitenfehler

Beispiel für LRU (Speicher mit 3 Frames) Zugriffsmuster: 1,2,3,4,1,2,5,1,2,3,4,5 Zugriff 1 (1) nicht vorhanden Zugriff 2 (1,2) nicht vorhanden Zugriff 3 (1,2,3) nicht vorhanden Zugriff 4 (2,3,4) nicht vorhanden, ersetze Zugriff 1 (3,4,1) nicht vorhanden, ersetze Zugriff 2 (4,1,2) nicht vorhanden, ersetze Zugriff 5 (1,2,5) nicht vorhanden, ersetze Zugriff 1 (2,5,1) vorhanden Zugriff 2 (5,1,2) vorhanden Zugriff 3 (1,2,3) nicht vorhanden, ersetze Zugriff 4 (2,3,4) nicht vorhanden, ersetze Zugriff 5 (3,4,5) nicht vorhanden, ersetze 10 Seitenfehler

Beispiel für LRU (Speicher mit 4 Frames) Zugriffsmuster: 1,2,3,4,1,2,5,1,2,3,4,5 Zugriff 1 (1) nicht vorhanden Zugriff 2 (1,2) nicht vorhanden Zugriff 3 (1,2,3) nicht vorhanden Zugriff 4 (1,2,3,4) nicht vorhanden Zugriff 1 (2,3,4,1) Zugriff 2 (3,4,1,2) Zugriff 5 (4,1,2,5) nicht vorhanden, ersetze Zugriff 1 (4,2,5,1) Zugriff 2 (4,5,1,2) Zugriff 3 (5,1,2,3) nicht vorhanden, ersetze Zugriff 4 (1,2,3,4) nicht vorhanden, ersetze Zugriff 5 (2,3,4,5) nicht vorhanden, ersetze 8 Seitenfehler

Algorithmus für das Ersetzen von Seiten Clock Policy FIFO-Variante Ringpuffer mit Frames, die für Austausch in Frage kommen + Positionszeiger nach Seitenfehler: Zeiger wird auf den folgenden Frame im Ringpuffer gesetzt Use Bit pro Frame, wird auf 1 gesetzt, wenn Seite geladen oder referenziert wird bei Seitenfehler: Suche erste Seite ab Zeigerpos. mit Use Bit = 0 Diese Seite wird ausgelagert und neue Seite auf dieser Position abgelegt. Setze dabei Use Bits mit Wert 1 von 1 auf 0

Clock Policy 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 kaum mehr Seitenfehler als LRU mehr Frames pro Prozess: bessere Annäherung an LRU wenn alle Use Bits gesetzt sind --> FIFO

Resident Set Resident Set: Seiten eines Prozesses, die sich im Hauptspeicher befinden Größe des Resident Set: Wie viele Frames sollen dem Prozess zugeteilt werden? wenige Frames -> viele Seitenfehler viele Frames -> reduziere Anzahl der Prozesse im Hauptspeicher (Einschränkung der Parallelität) Fixed Allocation Variable Allocation

Working Set und Seitenersetzung Programme haben in der Regel Lokalität von Referenzen. temporäre Lokalität Wiederholter Zugriff auf dieselbe Speicherposition räumliche Lokalität Zugriffe auf Speicherpositionen, die nahe beieinander liegen Design von Speicherhierarchien hängt stark von Lokalität ab. Working Set Menge von Seiten in den letzten N Seitenreferenzen Approximation der Lokalität eines Programms. Klein Größe des Working Sets Groß Sehr schnell Sehr langsam

Working Set Strategie (1) Variable Allokation von Seiten für einen Prozess basierend auf Lokalitätsannahme Working Set eines Prozesses zum Zeitpunkt t: W(k, t) = Menge der Seiten des Prozesses, auf die in den letzten k virtuellen Zeiteinheiten zugegriffen wurde virtuelle Zeit: bezieht sich auf bestimmten Prozess k Zeitfenster (Window of Time) W(k, t) beschreibt Lokalität des Prozesses

Working Set Strategie (2) k

Working Set Strategie: ein Beispiel Seitenreferenztabelle 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 3 4... k=10 k=10 (k, t 1 ) = {1,2,5,6,7} t 1 W(k, t 2 ) = {3,4} t 1 schlechte Lokalität gute Lokalität enn der Working Set eines Prozesses mehr Seiten umfasst, als Frames ur Verfügung stehen, dann kommt es zum Trashing.

Working Set Strategie (3) rmittlung der Größe des Resident Set: eobachtung des Working Set der Prozesse eriodisches Löschen der Seiten, die sich nicht im Working Set efinden enn Resident Set < Working Set Anfrage nach fehlenden Frames vom Betriebssystem sind nicht genügend Frames verfügbar, suspendiere einen Prozess und probiere Allokation später nochmals orking Set Strategie versucht Trashing zu verhindern und aximiert Grad des Multiprogrammierens.

Working Set Strategie (4) robleme bei der Realisierung: Mitloggen der Zugriffe auf Seiten Ordnen der Seitenzugriffe optimales k ist zur Laufzeit unbekannt und variiert erhindern von Trashing: Beobachtung der Anzahl der eitenfehler pro Prozess statt Working Set

Überblick: Seitenersetzungsalgorithmen

Thrashing Virtueller Speicher kann zu hohen Speicherzugriffskosten führen. Thrashing: Wenn ein Prozess nicht genügend Frames hat, kann das System die gesamte Zeit dazu verwenden, Seiten von der Platte in den Hauptspeicher zu laden und umgekehrt. Muss versuchen, 1 oder mehrere Prozesse auszulagern (Swapping). Swapping Schreibe den gesamten Speicher eines Prozesses auf die Platte Vermeide Ausführung dieses Prozesses für eine Weile. Woher weiß man, wann Thrashing stattfindet? Überprüfe Auslastung der CPU und das Auslagern von Seiten (Paging). Geringe Auslastung der CPU + hohe Paging Rate bedeutet Thrashing.

Vermeiden von Thrashing Versuche den Working Set im Hauptspeicher zu halten Wenn die Anzahl der Working Sets aller Prozesse im Hauptspeicher größer als die Anzahl der zur Verfügung stehenden Frames ist, muss ein Prozess ausgelagert werden. Berechung von Working Sets Abschätzung durch Use-Bit

Segmentierung (1) Segmentierung: Jeder Prozess bekommt mehrere unabhängige geschützte Speicherbereiche (Segment) mit unterschiedlicher Länge. Segmente enthalten Code und/oder Daten. Beim Laden des Prozesses werden seine Segmente beliebig im Speicher positioniert. 1 Segmenttabelle pro Prozess: für jedes Segment 1 Eintrag (Start, Länge) Zugriff auf Segment wird kontrolliert: Zugriffspriorität, Zugriffsrechte (Schreiben, Lesen, etc.) Überlappende und nicht-überlappende Segmente sind möglich: Nicht-überlappende Segmente um Programmfehlern entgegenzuwirken Separater Code und Daten-Stack-Segmente

Segmentierung (2) Nicht-überlappende Segmente können verwendet werden, um erweiterten Adressbereich zu realisieren: 16-Bit-Architekturen (8086 Prozessor) haben Segmente mit 16- Bit Adressen Verteilte Netzwerke mit mehreren 32-Bit Maschinen können Segmentierung verwenden, um einen einheitlich großen Adressraum zu realisieren. Segmente können identische Adressbereiche realisieren. Windows NT und Windows95 verwenden 4 Gbyte Codesegmente, Stack-Segmente und Datensegmente Mehrere Prozesse (Threads) können gemeinsamen Speicher verwenden.

1-dimensionaler Adressraum 1-dim Adressraum mit wachsenden Tabellengrößen Tabellen wachsen ineinander

Segmentierung separate Segmente: 2-dim. Adressbereich Jede Tabelle kann unabhängig von anderen Tabellen wachsen und schrumpfen.

Paging versus Segmentierung

Implementierung einer konventionellen Segmentierung a)-(d) Checkerboarding

Zusammenfassung artitionierung des Hauptspeichers Aufteilung auf mehrere Prozesse elocation logische Adressierung irtual Memory logischer Speicher > physikalischer Speicher Paging, Segmentierung Adressübersetzungstabellen und -hardware Lade- und Austauschstrategien