Speicherverwaltung
Speicherverwaltung
Speicherverwaltung
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