28.08.2013 Aufrufe

Speicherverwaltung

Speicherverwaltung

Speicherverwaltung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Speicherverwaltung</strong><br />

Robert K. Akakpo<br />

CNAM, WS 2010/2011


Agenda g<br />

Grundlagen<br />

Monoprogrammierung<br />

Mehrprogrammbetrieb<br />

Virtuelle <strong>Speicherverwaltung</strong><br />

CNAM, WS 2010/2011


Grundlagen<br />

• Die verschiedenen Arten von Speicher<br />

CNAM, WS 2010/2011


Grundlagen<br />

• Damit ein Computer ein Programm ausführen kann, muss sich das Programm<br />

in einem Speicher befinden, auf den die CPU direkt zugreifen kann.<br />

• Der Speicher p muss so ggroß sein, dass das entsprechende p ( (Teil-) ) Programm g in<br />

ihm Platz hat.<br />

• Nur der Hauptspeicher erfüllt beide Bedingungen<br />

• Nachteile des Hautpspeichers:<br />

- langsam<br />

- flüchtig<br />

- nicht gross genug<br />

hierarchische Organisation der Speicherarten als Lösung<br />

CNAM, WS 2010/2011


Speicherhierarchie<br />

Zugriffszeit Größe<br />

0,5 nsec<br />

0,5 - 1 nsec<br />

20 - 50 nsec<br />

8- 15 msec<br />

PC Stand Juni 2002<br />

~2 kb<br />

8 - 64 kb<br />

bis 1 GB<br />

bis 1 TB<br />

UUnterschied t hi d zwischen i h dden<br />

verschiedenen Speicherarten drückt<br />

sich aus in<br />

- KKosten t<br />

- Performance<br />

CNAM, WS 2010/2011


<strong>Speicherverwaltung</strong><br />

• MemoryManager: das für Speichermanagement verantwortliche Betriebssystemteil<br />

• Aufgaben der <strong>Speicherverwaltung</strong><br />

- Bereitstellung und Zuteilung von Speicher an Prozesse Prozesse, ggf Entzug<br />

- Effiziente Organisation freier und belegter Speicherbereiche<br />

- Verbergen g von Beschränkungen g (Virtualisierung)<br />

( g)<br />

- Schutz vor fehlerhaften / unerlaubten Zugriffen<br />

- Datenverschiebung zwischen den Speicherhierarchien<br />

• Strategien der <strong>Speicherverwaltung</strong><br />

- Monoprogrammierung<br />

- Multiprogrammierung<br />

CNAM, WS 2010/2011


Monoprogrammierung<br />

• die einfachste <strong>Speicherverwaltung</strong>sstrategie<br />

• nur ein Prozess im freien RAM<br />

- einem einzelnen Programm wird ein fester zusammenhängender Bereich<br />

(Speicherzellen) zugeteilt<br />

--> direkte Adressierung, d.h. Programmadresse = reale Speicheradresse<br />

Beispiel: mov Register1, 1000<br />

- kein Speicherschutz<br />

• Benutzerprogramm kann seinen Speicherbedarf selber organisieren<br />

zB z.B. Overlay von Programmen (Programm wird in mehreren Phasen geladen)<br />

• Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme<br />

CNAM, WS 2010/2011


Monoprogrammierung<br />

Benutzerprozess<br />

Betriebsystem<br />

im ROM<br />

Benutzerprozess<br />

Gerätetreiber<br />

im ROM (BIOS)<br />

Benutzerprozess<br />

Betriebsystem<br />

Betriebsystem<br />

im RAM<br />

im RAM<br />

Mainframe<br />

Microcomputer<br />

bis 1960<br />

Eingebetete<br />

Systeme<br />

PC vor 1980<br />

CNAM, WS 2010/2011


Multiprogrammierung<br />

• Motivation<br />

- Hauptspeicher besteht aus mehr als zwei Teilen (dynamische Aufgabe der<br />

<strong>Speicherverwaltung</strong><br />

- Hauptspeicher muss mehreren Prozessen gleichzeitig zur Verfügung gestellt<br />

werden<br />

• Einfache <strong>Speicherverwaltung</strong>stechniken<br />

- Mehrere Prozesse werden vollständig im Hauptspeicher gehalten<br />

Aufteilung des Hauptspeichers in Partitionen fester oder variabler Größe<br />

für jeden Prozess. Anzahl der Partitionen ist fest<br />

--> statische <strong>Speicherverwaltung</strong><br />

Einteilung des Speicher in dynamische Partitionen<br />

--> dynamische <strong>Speicherverwaltung</strong><br />

- Relokation / Swapping (Auslagern und Wiedereinlagern ganzer Prozesse aus und<br />

in den Speicher) als Beispiele dynamischer <strong>Speicherverwaltung</strong><br />

CNAM, WS 2010/2011


Partitionierung<br />

• Feste Partitionen mit gleicher Größe<br />

Problem:<br />

- Viel zu große Programme sind ausgeschlossen<br />

alternativ: Programmerstellung durch Overlays nötig<br />

- Viel zu kleine Programme verschwenden Speicher<br />

IInterne t Fragmentierung: F ti Teile T il der d Partitionen P titi bl bleiben ib unbenutzt b t t<br />

- Einsatz im OS/360 von IBM: MFT<br />

CNAM, WS 2010/2011


Partitionierungg<br />

• Feste Partitionen mit unterschiedlicher Größe<br />

- Programme in die am besten passende Partitionen<br />

- Eine oder mehrere Warteschlangen zur Verwaltung des Speichers<br />

Best-Fit mit einer Prozess-Queue pro Partition<br />

Eine Prozess-Warteschlange Prozess Warteschlange für alle Partitionen (Best (Best-Fit Fit sonst First-Fit) First Fit)<br />

- Problem: externe Fragmentierung: einzelne, nicht zugewiesene Speicherbereiche<br />

sind zu klein, um die Anforderungen wartender Prozesse erfüllen zu können.<br />

- Einsatz im OS/360 von IBM: MVT<br />

CNAM, WS 2010/2011


Partitionierung<br />

Verwaltung fester Partitionen<br />

getrennte Warteschlangen<br />

für jede Partition<br />

kommt ein Auftrag,<br />

kann er an die<br />

Warteschlange für die<br />

kleinste Partition<br />

angehängt werden, die<br />

groß genug für ihn ist.<br />

Partition 4 Partition 4<br />

Partition 3 Partition 3<br />

Partition 2 Partition 2<br />

eine i gemeinsame i Warteschlange<br />

W hl<br />

für alle Partitionen<br />

Partition 1 Best-Fit sonst First-Fit<br />

Partition 1<br />

Betriebssystem<br />

Betriebssystem<br />

CNAM, WS 2010/2011


Partitionierung<br />

• Dynamische Partitionierung<br />

- Einteilung des Speichers in Partitionen variabler Länge und variabler Anzahl<br />

- Programm erhält genau so viel Speicher wie es benötigt und nicht mehr<br />

OS 128 K OS 128 K<br />

OS OS<br />

P1<br />

128 K<br />

350 K P1 350 K<br />

896 K<br />

P2 224 K<br />

P2 224 K Konsequenzen:<br />

OS<br />

546 K<br />

322 K<br />

P1<br />

P3<br />

OS<br />

128 K<br />

350 K<br />

256 K<br />

66 K<br />

OS 128 K<br />

128 K OS 128 K<br />

128 K<br />

P1 350 K<br />

P1<br />

350 K<br />

P1 350 K<br />

P2 224 K<br />

126 K<br />

P2 224 K<br />

P4 160 K<br />

64 K<br />

P4 160 K<br />

64 K<br />

P4 160 K<br />

64 K<br />

P3 256 K<br />

P3 256 K<br />

P3 256 K<br />

P3 256 K<br />

66 K 66 K 66 K 66 K<br />

Zunehmende externe<br />

Fragmentierung<br />

g g<br />

Dynamische Relokation<br />

erforderlich<br />

CNAM, WS 2010/2011


Relokation und Speicherschutz<br />

p<br />

• Programme werden an unterschiedlichen Stellen im Hauptspeicher ausgeführt<br />

• Beim Laden des Programms in eine Partition müssen die Adressen angepasst werden,<br />

welche im Programmcode enthalten sind.<br />

Dies ist möglich durch Liste in Programmdatei, die<br />

angibt angibt, wo sich Adressen im Code befinden<br />

• Realisierung: nur mit Hardwareunterstützung möglich: CPU mit zwei speziellen,<br />

privilegierten Registern ausgestattet:<br />

- Basisregister: Anfangsadresse der Partition<br />

- Limitregister: Länge des Programms<br />

- Register werden vom Betriebssystem beim Prozesswechsel aktualisiert<br />

• Funktionsweise: bei jedem Speicherzugriff:<br />

- Vergleich logische Adresse mit dem durchs Limitregister bestimmten Wert<br />

Falls Adresse ≥ Wert --> Fehler<br />

- sonst wird Basisregister zur logischen Adresse addiert<br />

- somit wird verhindert verhindert, dass ein Prozess auf Partitionen anderer Prozesse zugreifen<br />

kann<br />

• Beispiel: CDC 6600, Intel 8088<br />

CNAM, WS 2010/2011


Swapping pp g<br />

• einfache <strong>Speicherverwaltung</strong> mit dynamischer Partitionierung<br />

• Prinzip<br />

- (blockierte) Prozesse werden auf die Festplatte ausgelagert<br />

- wartende Prozesse werden von der Festplatte p in den Hauptspeicher p p eingelagert g g<br />

- jeweils vollständiger Prozess als Ganzes<br />

- im Betriebssystem realisierbar ohne zusätzliche Hardwareunterstützung<br />

- Betriebssystemscheduler sogt fürs Ein- und Auslagern<br />

- wurde von MS Windows 3.* benutzt, um Prozesse auszulagern und bei UNIX-<br />

Systemen y<br />

• Probleme: Ein- und Auslagern ist sehr zeitaufwendig<br />

• Anforderung von freiem Speicher: bei Neustart eines weiteren Prozesses bzw. zur<br />

Laufzeit eines Prozesses (Subprozess); auch dynamisches Anfordern<br />

• Anforderung hat nur selten genau die Größe eines freien Speicherbereiches<br />

• Freispeicherplatzverwaltung p p g ist notwendig, g um ( (dynamisch) y ) neue Prozesse in<br />

freigegebene Speicher effizient zu laden<br />

CNAM, WS 2010/2011


Swapping pp g<br />

• Speicherbelegungsstrategien: ein Beispiel<br />

8 K<br />

14 K<br />

24 K<br />

Letzter alloziierter Block (14 K)<br />

8 K<br />

10 K<br />

38 K<br />

Anforderung 16 K<br />

First-Fit FF<br />

Next-Fit<br />

18 K Best-Fit BF<br />

NF<br />

8 K<br />

14 K<br />

8 K<br />

8 K<br />

10 K<br />

22 K<br />

2 K<br />

BF<br />

CNAM, WS 2010/2011


Fazit<br />

• Nachteile der bisherigen Konzepte<br />

- Prozess komplett im Hauptspeicher, obwohl oft nur ein kleiner Teil benötigt wird<br />

- Platz für Programme und Daten ist durch Hauptspeicherkapazität begrenzt<br />

- zusammenhängende Speicherbelegung für einen Prozess verschärft<br />

Fragmentierung<br />

- Speicherschutz muss vom Betriebssystem explizit implementiert werden<br />

• Lösung: virtueller Speicher<br />

- Prozessen mehr Speicher zuordnen als eigentlich vorhanden<br />

- nur bestimmte Teile der Programme werden in Hauptspeicher geladen<br />

- Rest wird auf dem Hintergrundspeicher (Festplatte) abgelegt<br />

- Prozesse werden ausgeführt, obwohl nur zum Teil im Hauptspeicher eingelagert<br />

- physischer Adressraum wird auf einen virtuellen (logischen) Adressraum abgebildet<br />

CNAM, WS 2010/2011


Virtuelle <strong>Speicherverwaltung</strong><br />

p g<br />

• GGrundlage dl<br />

- Virtueller Speicher: strikte Trennung zwischen logischem (virtuellem) und<br />

physischem (realem) Speicher<br />

- Adressraum, den die Befehle des Prozessors referieren, ist der logische<br />

Adressraum<br />

- zur Realisierung g des virtuellen Speichers p ist zwischen CPU-Adressbus und<br />

Speicher eine programmierbare Memory Management Unit (MMU) geschaltet.<br />

- Idee: bei jedem Speicherzugriff wird die vom Prozess erzeugte logische Adresse<br />

auf eine physische p y Adresse abgebildet g durch MMU<br />

• Techniken<br />

logische Adresse (virtuelle Adresse): Adresse, die ein<br />

Maschinenspracheprogramm sieht (CPU-Sicht)<br />

Physische Adresse Adresse, tatsächliche Adresse im Speicher (MMU (MMU-Sicht) Sicht)<br />

-Paging g g ( (wichtigste g Technik) )<br />

- Segmentierung<br />

CNAM, WS 2010/2011


Paging g g<br />

• Prinzip<br />

- ein Programm wird in Seiten fester Größe (Pages) aufgeteilt<br />

- der reale Hauptspeicher wird in Seitenrahmen (Frames / Kachel) fester Größe<br />

aufgeteilt<br />

- jeder Kachel kann eine Page aufnehmen<br />

- Seiten können nach Bedarf in freie Kachel (im Hauptspeicher) eingelagert werden<br />

- die Zuordnung von Seiten zu Seitenrahmen übernimmt die Memory Management<br />

Unit (MMU) mit Hilfe einer Seitentabelle (page table), Seitenrahmennr. die vom BS erstellt und<br />

0<br />

aktualisiert wird<br />

Page 0<br />

Page 1<br />

Page 2<br />

Page 3<br />

Virtueller Speicher<br />

0<br />

1<br />

2<br />

3<br />

1<br />

4<br />

3<br />

7<br />

Seitentabelle<br />

1 Page 0<br />

2<br />

3<br />

4<br />

5<br />

Page 2<br />

Page g 1<br />

6<br />

7 Page 3<br />

ph physischer sischer Speicher<br />

CNAM, WS 2010/2011


Paging g g<br />

• Adressumsetzung mittels Seitentabelle: Funktion der MMU<br />

- eine Seitentabelle enthält zusätzlich zur Seitennummer als Index<br />

Seitendeskriptoren<br />

Seitenrahmennummer (physische Adresse der Seite im Hauptspeicher)<br />

Presence-Bit (P-Bit): ist die Seite im Speicher?<br />

Schutzbits (regeln Art des Zugriffs)<br />

Referenced-Bit (R-Bit), Dirty-Bit (D-Bit), Cache-Disable-Bit (C-Bit)<br />

- eine Adresse wird immer als 2-Tupel aufgefasst<br />

Seitennummer (welche Seite im virtuellen Adressraum ist gemeint?)<br />

Offset (welche Adresse in der Seite ist gemeint?)<br />

-Die MMU interpretiert die niederwertigsten Bits einer virtuellen Adresse als Offset,<br />

die höherwertigen ö Bits legen die SSeite ffest<br />

- Presence-Bit auf 1 gesetzt ⇔ Seitenrahmennummer vorhanden<br />

MMU hängt das Offset der virtuellen virtuelle an Seitenrahmennummer<br />

CNAM, WS 2010/2011


Paging g g<br />

Seitentabelle<br />

1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0<br />

15<br />

14<br />

13<br />

12<br />

11<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

000<br />

000<br />

000<br />

000<br />

111<br />

0<br />

0<br />

0<br />

0<br />

1<br />

000 0<br />

101<br />

000<br />

000<br />

000<br />

011<br />

100<br />

000<br />

110<br />

001<br />

010<br />

1<br />

0<br />

0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1<br />

1<br />

Virtuelle Seite = 2<br />

110<br />

present/a<br />

bsent bit<br />

0 0 1 0 0 0 0 0 0 0 0 0 0 1<br />

0 0<br />

Virtuelle<br />

Ad Adresse<br />

ausgehende<br />

physische<br />

Adresse (24580)<br />

ankommende<br />

k d<br />

virtuelle<br />

Adresse (8196)<br />

CNAM, WS 2010/2011


Paging g g<br />

• Paging - Verfahren<br />

- die Umsetzung der virtuellen Adresse erfolgt dynamisch<br />

- um für die momentan arbeitenden Prozesse genügend Platz zu haben, werden<br />

nicht benötigte Seiten auf den Hintergrundspeicher ausgelagert<br />

- wird eine Seite benötigt, die nicht im Hauptspeicher sondern nur auf dem<br />

Hintergrundspeicher lagert, so tritt ein Seitenfehler (page faults) auf<br />

die benötigte Seite muss in den Hauptspeicher geladen werden<br />

--> Laden nach Bedarf (demand paging)<br />

falls der Hauptspeicher schon voll ist, muss eine bzw. mehrere geeignete<br />

Seiten ausgelagert werden<br />

Abschließend wird die Seitentabelle entsprechend aktualisiert<br />

- Aktionen des Betriebssystem bei Seitenfehlern: Seitenersetzung<br />

Welche Seite kann zuerst entfernt werden?<br />

--> unterschiedliche Strategien zur Seitenersetzung<br />

CNAM, WS 2010/2011


Paging g g<br />

• Seitenersetzungsstrategien: Beispiele<br />

Algorithmus Beschreibung<br />

First-In First-out (FIFO)<br />

Not Recently Used (NRU)<br />

Second-Chance-<br />

Second Chance<br />

Algorithmus<br />

Die Seite wird entfernt, die sich am längsten im Hauptspeicher<br />

befindet<br />

Ausgelagert wird die Seite, die im letzten Zeitintervall (z.B. 20 ms)<br />

nicht referenziert wurde:<br />

Hamburg<br />

Verbesserung von FIFO: Überprüfung des R-Bit R Bit der älteren Seite. RR-<br />

Bit nicht Amsterdam gesetzt: kein Zugriff, Seite wird entfernt<br />

Düsseldorf<br />

Clock-Algorithmus g<br />

Verbesserung Second-Chance-Algorithmus. Seiten in Form<br />

Frankfurt<br />

einer virtuellen Uhr mit Zeigern g abgebildet. g Zeiger g auf älteste<br />

Seite<br />

Stuttgart<br />

Least Recently Used (LRU) die am längsten nicht benutzte Seite wird entfernt<br />

Not Frequently Used (NFU)<br />

Madrid<br />

Working-Set g Algorithmus g<br />

WSClock-Algorithmus<br />

Berlin<br />

Softwaretechnische Implementierung von LRU: ausgelagert wird die<br />

am wenigsten benutzte Seite<br />

die wenigen, für einen Prozess relevanten Seiten identifizieren und<br />

stets prozessfremde Seiten auslagern<br />

Kombination aus Clock und Workingset<br />

in realen Systemen weit verbreitet<br />

CNAM, WS 2010/2011


Paging g g<br />

• Implementierung<br />

- Realisierungsprobleme:<br />

Die Adressabbildung muss sehr schnell sein.<br />

Die Umsetzungstabelle kann extrem groß werden werden. (z (z.B. B 32 32-Bit Bit Adressen<br />

erfordern bei einer Seitengröße von 4096 Bytes eine Tabelle mit ca. 1 Million<br />

Einträgen.)<br />

- Hardwareunterstützung erforderlich erforderlich, um<br />

1. Informationen zur Seitenpräsenz und -gültigkeit, Zugriffshäufigkeit,<br />

Schreibzugriffen und Zugriffsschutz zu speichern<br />

2. die Adressumsetzung zu beschleunigen<br />

- Lösungsansätze: unterschiedliche Organisationsformen der Seitentabelle<br />

Naive Lösung: Eine einzige Seitentabelle in der MMU --> Spezialregister<br />

(sehr aufwändig wegen Taskwechsel)<br />

Seitentabelle im Speicher und ein Cache (TLB - Translation Lookaside<br />

Buffer) in der MMU zur Beschleunigung der Adressumsetzung<br />

Populäre Lösung: mehrstufige Seitentabelle bzw. invertierte Seitentabelle im<br />

Hauptspeicher zur Einschränkung der Größe<br />

CNAM, WS 2010/2011


Paging g g<br />

• Translation Lookaside Buffer (TBL):<br />

- Seitentabellen liegen im Speicher --> für jeden Speicherzugriff mehrere<br />

zusätzliche Zugriffe für Adressumsetzung nötig<br />

- Optimierung: MMU hält kleinen Teil der Adressabbildung in einem internen<br />

Cache-Speicher: TLB<br />

- Beispiel TBL Einträge: :<br />

- Moderne Implementierung: Verwaltung des TBL durch Software<br />

CNAM, WS 2010/2011


Paging g g<br />

- Adressumsetzung: wenn Seitennummer im TBL --> Kachelnummer.<br />

- MMU erzeugt Fehler, falls für eine Seite kein TLB-Eintrag vorliegt<br />

- Fehlerbehandlung durchs Betriebssystem: Durchsuchen der Seitentabellen im<br />

Speicher und Ersetzen eines TLB-Eintrags<br />

- wird in vielen RISC-Architekturen verwendet, z.B. SPARC, MIPS, Alpha<br />

CPU<br />

LLogische i h<br />

Adresse<br />

p d<br />

SeitenSeitentabellen<br />

Nr. eintrag<br />

TBL<br />

TBL- Fehlschlag<br />

Seitenfehler<br />

p<br />

f<br />

TLB-Treffer<br />

Seitentabelle<br />

Physische y<br />

Adresse<br />

f d<br />

Hauptspeicher<br />

CNAM, WS 2010/2011


Paging g g<br />

• mehrschichtige Tabellen<br />

- Motivation:<br />

Speicherplatzbedarfsproblem: z.B. bei virtuellen Adressen mit 32 Bit<br />

Länge: 2 20 Seiten --> für jeden Prozeß wäre eine 4 MB große Tabelle<br />

nötig. Typische Windows-Installationen haben 30-60 Prozesse<br />

gleichzeitig am Laufen --> Platzbedarf für Umsetzungstabellen: 120 bis<br />

240 MB !<br />

Alle Seitentabellen werden nicht mehr gleichzeitig im Speicher gehalten<br />

werden<br />

- Adressumsetzung: findet in mehreren Ebenen statt<br />

Die virtuelle Adresse wird in mindestens 2 Komponenten aufgeteilt. Mit der<br />

ersten Komponente wird ein Seitentabelleneintrag indexiert, dessen Pointer auf<br />

eine weitere Seitentabelle zeigt, welche mit der nächsten Komponente indexiert<br />

wird. Die letzte Komponente identifiziert die physikalische Adresse.<br />

- wird von vielen 32 Bit Architekturen verwendet, wie bei IA32 (2-stufig), Motorola<br />

MC68030 (4-stufig) und SPARC (3-stufig)<br />

- Problem: mehrschichtige Tabellen sind langsam, da Zugriff auf mehrere<br />

Tabellen notwendig. Unterstützung mit TBL<br />

CNAM, WS 2010/2011


Paging g g<br />

Mehrstufige Seitentabelle: hier zweistufig<br />

31 ... 22 Index im Seitenverzeichnis (engl (engl. page directory directory, kurz: PD)<br />

21 ... 12 Index in der Seitentabelle (engl. page table, kurz: PT)<br />

11 ... 0 Offset in der Speicherseite<br />

CNAM, WS 2010/2011


Paging g g<br />

• invertierte Tabellen<br />

- Hintergrund: Mehrstufige Seitentabellen für 64-bit Architekturen nicht geeignet<br />

- Umsetzung: Seitentabellen, die statt Einträge für virtuelle Seiten, Einträge für<br />

Seitenrahmen enthalten. Jeder Eintrag speichert zu dem Seitenrahmen das<br />

zugehörige Paar (Prozess p, Seitennummer n)<br />

bei herkömmlichen Seitentabellen: Umsetzungstabelle pro Prozess<br />

Jetzt: nur eine Umsetzungstabelle im System<br />

- Nachteil: Adressumsetzung sehr aufwendig, da virtuelle Seitennummer nicht als<br />

Index verwendbar<br />

- für jeden Speicherzugriff ist eine Suche nach (p,n) nötig<br />

- Zur Beschleunigung der Suche: Verwendung einer schnellen Suchtechnik:<br />

Hashing<br />

- Zur Beschleunigung der Suche: TLB wird verwendet.<br />

- Werden in PowerPC, IBM AS/400 und Intel-Itanium-Prozessoren genutzt<br />

CNAM, WS 2010/2011


Paging g g<br />

Aufbau inverterte Seitentabelle<br />

Schüssel k i : Seitennummern<br />

Wert v i : Seitenrahmennummern<br />

Virtuelle Adresse<br />

Reale Adresse<br />

Seitennr. Offset Rahmennr. Offset<br />

k i<br />

Hashfunktion<br />

h<br />

H(k H(ki) )<br />

Seitennr. Eintrag<br />

k j<br />

k i<br />

v j<br />

Rahmennr.<br />

Zeiger<br />

Überlaufkette<br />

Invertierte<br />

Seitentabelle<br />

CNAM, WS 2010/2011


Paging g g<br />

• Design-Strategien für Paging<br />

- was ist für ein leistungsstarkes Paging System nötig?<br />

- Einige Strategiebeispiele:<br />

lokale und Globale Strategien<br />

Nutzung Gemeinsamer Seiten<br />

Freigabe-Strategien<br />

Seitengröße<br />

Madrid<br />

Amsterdam<br />

Düsseldorf<br />

Hamburg<br />

Frankfurt<br />

Stuttgart<br />

Berlin<br />

CNAM, WS 2010/2011


Paging g g<br />

• Lokale und Globale Strategien<br />

- lokale Strategien: bei Seitenfehler wird immer eine Seite desjenigen Prozesses<br />

ersetzt, der eine neue Seite anfordert<br />

jeder Prozess bekommt eine konstante Anzahl von Seiten zugewiesen<br />

Seitenfehler wirken sich daher nur auf den verursachenden Prozess negativ aus.<br />

- globalen Strategien: eine beliebige Seite im Speicher wird bei Seitenfehler ersetzt<br />

Hamburg<br />

jeder Prozess wird mit einer sinnvollen Speichergröße ausgestattet, ausgestattet welche<br />

Amsterdam<br />

während der Ausführung dynamisch angepasst Berlin wird. Der Prozess, der viele<br />

Düsseldorf<br />

Seitenfehler verursacht, erhält automatisch mehr Speicher -<br />

Frankfurt<br />

-> effizient, da ungenutzte Seiten von anderen Prozessen verwendet werden<br />

können<br />

Stuttgart<br />

Beispiel: der Page Fault Frequency (PFF) Algorithmus zur Messung der<br />

Anzahl der Seitenfehler eines Prozesses in einem Zeitinterval<br />

zu hohe Seitenfehlerrate: mehr Speicher zuteilen<br />

Madrid<br />

zu niedrige Seitenfehlerrate: Speicher wegnehmen<br />

- manche Seitenersetzungs-Algorithmen für lokale und globale Strategien anwendbar<br />

(FIFO, LRU)<br />

- andere nicht (Workingset, WSClock)<br />

CNAM, WS 2010/2011


Paging g g<br />

• Nutzung gemeinsamer Seiten<br />

- Führen zwei Prozesse das selbe Programm aus, ist es effizienter Seiten gemeinsam<br />

zu nutzen, als mehrere Kopien der selben Seite im Speicher zu halten.<br />

- Seiten, auf die nur lesend zugegriffen wird (z. B. Code), können gemeinsam genutzt<br />

werden.<br />

- bei Seiten, auf die auch schreibend zugegriffen wird, ist eine gemeinsame Nutzung in<br />

der Regel nicht möglich (z. B. Daten). Hamburg<br />

Amsterdam<br />

- Einfache Lösung: Zwei getrennte Adressräume Berlinfür<br />

Daten und Programmcode.<br />

Düsseldorf<br />

für zwei bzw. mehr Prozesse eine gemeinsame Seitentabelle für Code<br />

Frankfurt<br />

getrennte Seitentabellen für den Stuttgart Datenraum.<br />

- Betriebssystem muss gemeinsame Seiten berücksichtigen<br />

Madrid<br />

CNAM, WS 2010/2011


Paging g g<br />

• Freigabe-Strategien<br />

- Voraussetzung fürs gutes Paging: genügend freie Seitenrahmen verfügbar<br />

- Wenn alle Seitenrahmen voll sind und eine gebraucht wird --> Auslagerung<br />

- Eventuell muss auszulagernde Seite noch zurückgeschrieben werden werden. Das dauert!<br />

- Lösung: vorbeugen durch Paging-Daemon<br />

- Paging-Daemon ist ein Prozess im Hintergrund, Hamburg meist inaktiv<br />

Amsterdam<br />

- er wacht regelmäßig auf und prüft Speicherzustand<br />

Berlin<br />

Düsseldorf<br />

- falls nicht genug freie Rahmen --> Paging-Daemon Frankfurt wählt Seiten aus und beginnt sie<br />

auszulagern<br />

Stuttgart<br />

- Bei einem Seitenfehler ist dann immer ein freier Rahmen verfügbar<br />

- somit wird die Performance gesteigert<br />

Madrid<br />

CNAM, WS 2010/2011


Paging g g<br />

• Seitengöße<br />

- wie groß muss die Seite (Kachel) sein, damit Paging optimal ist?<br />

- folgende Punkte sprechen für große Seiten:<br />

Je größer die Seiten Seiten, desto kleiner die Seitentabelle Seitentabelle, weniger<br />

Verwaltungsaufwand --> Speicher kann gespart werden<br />

Die Übertragung von großen Seiten ist effektiver, denn der Aufwand für das<br />

Hamburg<br />

Ein- und Auslagern von Seiten ist sehr groß. groß Es ist besser einmal 4 KB zu<br />

Amsterdam<br />

übertragen als 4x1 KB<br />

Düsseldorf<br />

- für kleine Seiten spricht, daß diese nicht soviel Speicher verschwenden.<br />

Frankfurt<br />

- Am häufigsten werden 4 KB oder 8 KB Stuttgart große Seiten verwendet<br />

Madrid<br />

Berlin<br />

CNAM, WS 2010/2011


Danke<br />

CNAM, WS 2010/2011

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!