7 Hauptspeicherverwaltung 7.1 Adressierung des Hauptspeichers

Werbung
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
7 Hauptspeicherverwaltung
Direkte Adressierung
7.1 Adressierung des Hauptspeichers
Bei Mehrprogrammbetrieb fŸhrt die Adressbindung zur †bersetzungszeit zu Konflikten
Speicher
7.2.1 ZusammenhŠngende Speicherung
Direkte Adressierung
Programm A
Speicher
Programm-/Datenadresse
¥
Programm B
Die Adressen, die in einem ausfŸhrbaren Programm (z.B. als Datei auf der Platte)
stehen, kšnnen direkt als Speicheradressen verwendet werden
(Programmadresse = Speicheradresse)
¥
Sie werden bereits vom †bersetzer bzw. Binder festgelegt
(Adressbindung zur †bersetzungszeit)
¥
Die Lage des Programms im Hauptspeicher ist daher vorgegeben
Eine gute Speicherausnutzung ist nicht mšglich.
Die Festlegung der endgŸltigen Adressen hat ohne Kenntnis des Belegungszustands
stattgefunden, d.h. zu frŸh
Programme kšnnen nur dann gemeinsam in den Speicher geladen werden, wenn die
AdressrŠume disjunkt sind.
7-1
7-2
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Direkte Adressierung
Relative Adressierung
Daher ist es sinnvoll, die endgŸltigen Adressen erst beim Laden des Programms
festzulegen
Noch flexibler ist man, wenn die Adresse erst beim Zugriff gebildet wird
(Adressbindung zur Laufzeit)
Dies fŸhrt zur Adressbindung zur Ladezeit.
Das Programm enthŠlt auch nach dem Laden in Hauptspeicher nur relative Adressen
(logischer Adressraum beginnt bei 0)
¥
¥
ProgrammadressrŠume beginnen bei Adresse 0 (verschiebbares (relocatable)
Format)
Ein Hilfsprogramm (ãLaderÒ) modifiziert alle Adressen
Der Prozessor enthŠlt ein Basisadressregister, das beim Laden auf die Anfangsadresse
gesetzt wird und bei jedem Speicherzugriff zur relativen Programmadresse dazuaddiert
wird, um die Speicheradresse zu bilden.
Speicher
belegt
MOV R1, adr
:
b
Basisadresse
:
+k
Programm-/Datenadresse
b
r
k:
r
+
Lader
verschiebbares
Programm
Speicher
7-3
In diesem Fall ist auch ein dynamisches Umspeichern mšglich oder das Einlagern an eine
andere Adresse nach einem Auslagern
7-4
© H.-U. Heiß, Uni Paderborn
7.1.2 Streuende Adressierung
© H.-U. Heiß, Uni Paderborn
StŸckelung in gleichlange Teile:
Der Programmadressraum wird in kleinere StŸcke zerlegt, die unabhŠngig voneinander im
Speicher abgelegt werden.
¥
Bessere Ausnutzung von LŸcken (geringerer externer Verschnitt)
¥
Hšherer Aufwand beim Adressieren
Man spricht von dynamischer Adressumsetzung:
Die Adressen im Programm (logische Adressen) werden durch eine spezielle
Einrichtung des Prozessors (Speicherabbildungseinheit, Memory Management Unit
(MMU)) in physikalische Adressen umgesetzt.
Programmadreßraum
¥
kein externer, aber interner Verschnitt
¥
Die Teile des Adressraums hei§en Seiten (pages)
¥
Die korrespondierenden Einheiten des Speicher hei§en Seitenrahmen oder
Kacheln (page frames)
Programmadreßraum
Speicher
Speicher
MMU
7-5
7-6
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
StŸckelung in gleichlange Teile (Seiten, pages)
StŸckelung in variabel lange Teile (Segmente, segments)
Da es nun eine variable und gro§e Anzahl von Basisadressen geben kann, kšnnen wir sie
nicht alle im Prozessor halten.
¥
kein interner Verschnitt
¥
dafŸr externer Verschnitt
Sie werden in einer Seitentabelle zusammengefasst und im Hauptspeicher abgelegt.
Im Prozessor befindet sich nur noch die Basisadresse der Seitentabelle in einem Register
Speicher
Programmadreßraum
belegt
Die Adressen bestehen aus zwei Teilen, der Seitennummer und einer Relativadresse
innerhalb der Seite (offset, displacement)
Speicher
Seitentabelle
Tabellenbasisadresse
frei
+
Seite
frei
Byte
K
7-7
7-8
© H.-U. Heiß, Uni Paderborn
StŸckelung in variabel lange Teile (Segmente)
© H.-U. Heiß, Uni Paderborn
GegenŸberstellung: Seiten- und Segmentumsetzung
Da Segmente an beliebigen Adressen beginnen kšnnen, muss die Segmenttabelle volle
Adressen aufnehmen kšnnen.
Die Relativadresse (Byte) innerhalb des Segments wird dann zur Segmentbasisadresse
addiert
Tabellenbasisadresse
Speicher
Segmenttabelle
Seitenumsetzung
0000
0001
0010 1101
0010 1011
K
11011011
+
11100000
+
Segment
Segmentumsetzung
Byte
+
0000
0001
0010 11010101
0010 1011
7-9
7-10
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Zweistufige Adressumsetzung
Beschleunigung der Adressumsetzung
Jedes Segment besteht aus einer variablen Menge von Seiten
Problem:
Segment- und Seitentabellen sind so gro§, dass sie im Hauptspeicher untergebracht
werden mŸssen.
Um eine effektive Hauptspeicheradresse zu bilden, muss zunŠchst die Seiten- und/oder
Segmentadresse beschafft werden.
Segmenttabelle
Tabellenbasisadresse
+
FŸr jeden Zugriff (Befehl oder Daten) sind damit mindestens zwei Hauptspeicherzugriffe
erforderlich.
Seitentabelle
+
Dadurch reduziert sich die Verarbeitungsgeschwindigkeit etwa um den Faktor 2
Speicher
K
Segment
Seite
Um das zu verhindern, werden die aktuell benštigten Segment/Seitentabellen in einem
schnellen Registersatz gespeichert. (TLB = Translation Lookaside Buffer)
Der TLB ist ein Assoziativspeicher, d.h. eine Tabelle, bei der zu findende Eintrag simultan
in allen Zeilen der Tabelle gesucht wird.
Byte
Er wird als eine Art Cache fŸr Seiten-/Segmenttabellen verwendet.
Die Suche kann also in einem Schritt durchgefŸhrt werden.
7-11
7-12
© H.-U. Heiß, Uni Paderborn
Zweistufige Adressumsetzung mit Assoziativregister
© H.-U. Heiß, Uni Paderborn
Typische Eigenschaften eines TLB
Segmenttabelle
Tabellenbasisadresse
+
¥
Zeilenbreite : 4-8 Byte:
Verwaltungsbits
Seitentabelle
¥
+
TLB (Assoziativspeicher)
Segment
Logische Seiten/Segment-Nr., Kachel-Nr.
Zeit fŸr Adressumsetzung
Erfolg (hit):
² 1 Prozesorzyklus
Misserfolg (miss)
10 - 30 Prozessorzyklen
¥
Trefferrate:
99.0% - 99.99%
¥
TLB-Grš§e:
32 - 1024
Speicher
Seite
Kachel
Zeilen (EintrŠge)
K
Segment
Seite
Byte
7-13
7-14
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
7.2 Speicherschutz
Speichertrennregister
Wozu Speicherschutz ?
Programmierfehler kšnnen zu Zugriffen auf Adressen au§erhalb des
Programmadressraums fŸhren
Im Einbenutzerbetrieb reicht es aus, das Betriebssystem gegen Fehler der
Anwendungsprogramme zu schŸtzen.
¥
Durch Lesezugriffe kšnnen Prozesse Daten anderer Prozesse lesen
Legt man das Betriebssystem mit allen seinen Teilen in den Randbereich des Speichers
(Anfang oder Ende) so genŸgt ein einziges Register, das die kleinste oder grš§te
zulŠssige Adresse eines Anwendungsprogramms festlegt.
¥
Durch Schreibzugriffe kšnnen
Die Einhaltung muss von der Hardware gewŠhrleistet werden
¥
-
andere Programme
Betriebssystem
Trennwert
Teile des Betriebssystems
beeintrŠchtigt, evtl. abgebrochen werden
7-15
Anwendungsprogramm
7-16
zu schützender Bereich
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Funktionsweise des Grenzregisters
Speichergrenzregister (Relative Adressierung)
Bei Mehrprogrammbetrieb - insbesondere Mehrbenutzerbetrieb - und relativer,
zusammenhŠngender Adressierung belegt ein Programm einen zusammenhŠngenden
Speicherbereich, dessen Anfang und Ende ŸberprŸft werden kšnnen
¥
Wie Ÿblich bei relativer Adressierung, wird zur (relativen) Programmadresse der Inhalt
des Basisregisters hinzugezŠhlt
¥
Kleinere Adressen als die Basisadresse sind daher nicht mšglich.
¥
Die Obergrenze wird mit Hilfe des Grenzregisters geprŸft.
Bei †berschreitung lšst der Prozessor eine entsprechende Unterbrechung aus
Basisregister
B
Unterbrechung
Anwendungsprogramm
G
Grenzregister
Basisregister
zu schützender Bereich
B
Programmadresse
+
? <
G
Grenzregister
7-17
7-18
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Speicherschutz bei gestreuter Adressierung
7.3 Virtueller Speicher
¥
LokalitŠtsprinzip (Principle of locality)
¥
Tabellenbasisregister und SegmenttabelleneintrŠge werden um ein LŠngenfeld
ergŠnzt.
Bei †berschreitung wird eine Unterbrechung ausgelšst. Es kann auch nach Leseoder Schreibzugriffen differenziert werden
Ein Programm greift in einem kleinen Zeitraum _t nur auf einen kleinen Teil ∆A ⊂ A seines
Adressraums A zu.
Tabellenbasisadresse
Länge
Basis
Segmenttabelle
differenziertes Rechtefeld (optional)
?
<
+
Länge R
?
<
Basis
Seitentabelle
+
Speicher
K
Segment
Seite
Byte
7-19
RŠumliche LokalitŠt: Wird auf eine Adresse a zugegriffen, so ist ein Zugriff auf eine
Adresse in der NŠhe von a sehr wahrscheinlich.
Zeitliche LokalitŠt:
Wird auf eine Adresse a zugegriffen, so ist es sehr wahrscheinlich,
dass in KŸrze wieder auf a zugegriffen wird.
Warum ?
¥
Meistens werden die Anweisungen sequentiell ausgefŸhrt
¥
Programme verbringen die meiste Zeit in irgendwelchen Schleifen
¥
Manche Teile eines Programms werden nur in AusnahmefŠllen angesprungen
¥
Viele Felder sind nur teilweise belegt.
Konsequenz:
¥
In jedem kleinen Zeitintervall wird nur ein kleiner Teil des Adressraums tatsŠchlich
benštigt. Jeweils nicht benštigte Teile mŸssen nicht im Hauptspeicher sein.
¥
Es kšnnen daher auch Programme ausgefŸhrt werden, die nicht in den
Hauptspeicher passen
7-20
© H.-U. Heiß, Uni Paderborn
†berlagerungstechnik
¥
© H.-U. Heiß, Uni Paderborn
Virtueller Speicher
Kann man in einem Programm verschiedene Phasen identifizieren,
die auf unterschiedliche Teile des Adressraums zugreifen,
so kann man die sogenannte †berlagerungstechnik (Overlay-Technik) anwenden.
¥
Verschiedene Segmente des Adressraums,
die in unterschiedlichen Phasen benštigt werden, werden im Speicher ãŸberlagertÒ.
¥
Die Zerlegung des Programms in geeignete Segmente und das Ein-und Auslagern ist
Sache des Anwendungsprogrammierers.
¥
Das Zerlegen der AdressrŠume, das Ein-und Auslagern der Teile kann (mit
technischer Hilfe) automatisiert werden.
¥
Die benštigten Teile werden erst auf Anforderung eingelagert (demand paging)
¥
FŸr den Benutzer / Programmierer sind diese VorgŠnge transparent
¥
Er hat den Eindruck, der Speicher sei in unbegrenzter Grš§e vorhanden.
¥
Dieser unbegrenzte Speicher ist jedoch nur virtuell vorhanden
Voraussetzungen fŸr effizienten Betrieb:
¥
Das LokalitŠtsprinzip ist also dazu geeignet, Programme auszufŸhren,
die als Ganzes nicht in den Speicher passen.
¥
Auch wenn der Speicher gro§ genug ist, dass jeweils ein Programm komplett
hineinpasst, kann man das LokalitŠtsprinzip dazu benutzen,
nur die jeweils benštigten Teile im Hauptspeicher zu halten und
den Rest des Speichers anderen Programmen zur VerfŸgung zu stellen.
¥
Gestreute Adressierung (Seitentabellen)
Seiten sind die Einheiten der †berlagerung
¥
Automatisches Erkennen der Abwesenheit einer Seite
Zugriff auf nichtvorhandene Seite lšst Unterbrechung aus.
Einlagerung der Seite wird im Rahmen der Unterbrechungsbehandlung ausgelšst.
7-21
7-22
© H.-U. Heiß, Uni Paderborn
Beteiligte Komponenten (Datenstrukturen)
¥
Seitentabellen (page table)
Funktion:
Inhalt:
¥
Adresstransformation
fŸr jede Seite:
¥
Nutzungs- und PrŠsenzinformation
¥
Physikalische Adresse (Kachelnummer)
Kacheltabelle (page frame table, inverted page table)
© H.-U. Heiß, Uni Paderborn
Seitentabelle fŸr virtuellen Speicher
ZusŠtzlich zur physikalischen Adresse enthŠlt jeder Eintrag Informationen, ob
¥
die Seite im Hauptspeicher vorhanden ist: PrŠsenzbit (presence bit, valid bit)
¥
auf die Seite zugegriffen wurde:
Referenzbit (reference bit)
¥
die Seite verŠndert wurde (Schreibzugriff) Modifikationsbit (dirty bit)
Speicher (Kacheln)
Seiten
Seitentabelle
1 1 1
Funktion:
Inhalt:
¥
Speicherverwaltung
fŸr jede Kachel
¥
Zustand (frei / belegt)
¥
Besitzer
¥
belegende Seite
0 0 0
1 1 0
0 0 0
1 1 1
Ersatzspeicher (swap area)
Funktion:
1 0 0
Bereiche des Plattenspeichers zur Aufnahme ausgelagerter Seiten
Modifikation
Zugriff (Referenzierung)
Präsenz
7-23
7-24
© H.-U. Heiß, Uni Paderborn
Aufgaben bei der Verwaltung des virtuellen Speichers
© H.-U. Heiß, Uni Paderborn
Ablauf bei Seitenfehler
Seitenfehler
Belegen_VS
Freigeben_VS
Zugriff
leere Kachel verfügbar ?
Ja
Seite präsent ?
Ersatzspeicher
initialisieren
belegte Kacheln
freigeben
N
J
Kachel zum Räumen auswählen
Strategieproblem
Kachelinhalt (Seite) modifiziert ?
Nein
Ja
Seite auslagern auf Ersatzspeicher
Ersatzspeicher
freigeben
Zeitaufwendig!
Umschalten!
Neue Seite einlagern von Ersatzspeicher
Einräumen
Seitenfehler
Ausräumen
Nein
Ersatzspeicher
belegen
Eintrag Kacheltabelle
Eintrag Seitentabelle
7-25
7-26
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Parallelisierung des Seitentauschs
Pufferung
¥
Da Seitenfehler oft sto§weise auftreten, ist es sinnvoll, einen Vorrat an freien Kacheln
bereitzuhalten.
Seitentausch ist eine zeitkritische Komponente, daher mšglichst effizient Parallelarbeit
einsetzen
Zu diesem Zweck kšnnen wir weiter parallelisieren und das Pufferungsprinzip einsetzen
Seitentauscher
Seitenfehler
Seitentauscher
Seitenfehler
p mal
E_S(STK, <S_Nr, P, Rückk>
S_A(STK, <SN, PID, RK>)
S_A(STK, < >)
S_A(KLK, < >)
S_A(KLK, < >)
E_S(RK, < >)
Einräumen(KN)
Vorrat := Anzahl
E_S(KLK, < >)
S_A(KLK, < >)
E_S(RK, < >)
Ausräumen(KN)
Kachelleerer
Vorrat
p?
E_S(STK, < >)
E_S(STRK, < >)
Ausräumen()
S_A(KLK, < >)
Vorrat:=Vorrat+1
Vorrat:=Vorrat-1
S_A(Rückk, < >)
Einräumen()
S_A(RK, < >)
7-27
7-28
S_A(STRK, < >)
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
7.4 Seitentauschverfahren
Auswahlstrategie
Eine kleine Rechnung:
Die Seitenfehlerrate hŠngt natŸrlich stark davon ab, welche Seiten wir im Hauptspeicher
halten und welche wir auslagern.
Sei p pf die Wahrscheinlichkeit fŸr einen Seitenfehler (page fault), tm die
Speicherzugriffszeit und t pf die Zeit zur Behandlung eines Seitenfehlers.
Auswahlstrategie:
Dann erhalten wir als effektive Speicherzugriffszeit im virtuellen Speicher
Wenn Seitenfehler und keine Kachel frei, welche soll dann geleert werden ?
(
)
teff : = 1 − p pf ⋅ tm + p pf ⋅ t pf
Unterscheidung
Bei halbwegs realistischen Grš§en von z.B. tm = 20 nsec und t pf = 20 msec
teff = 1 − p pf ⋅ 20 + p pf ⋅ 20.000.000
(
Lokale Auswahlstrategie:
)
Es wird eine Kachel desjenigen Prozesses gerŠumt,
der den Seitenfehler verursacht hat
= 20 + 19.999.980 ⋅ p pf
Bei einer Seitenfehlerwahrscheinlichkeit von p pf = 0,001 erhalten wir eine effektive
Zugriffszeit von 20 _sec, d.h. eine Verlangsamung um den Faktor 1000 !
Selbst bei einem Wert von p pf = 10 −6 verdoppelt sich die effektive Zugriffszeit.
Globale Auswahlstrategie:
Eine beliebige Kachel (auch fremder Prozesse) wird gerŠumt
Es ist daher ungeheuer wichtig, die Seitenfehlerzahl sehr gering zu halten
7-29
7-30
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Modellierung der Seitenzugriffe
Optimale Auswahlstrategie (OPTimal)
Um die verschiedenen Auswahlalgorithmen vergleichen zu kšnnen,
legen wir sogenannte Seitenreferenzfolgen zugrunde
Es stellt sich die Frage, ob es eine optimale Strategie gibt,
d.h. eine Strategie, die unter Ausnutzung der Referenzfolge die Seiten so auswŠhlt,
dass die Anzahl der Seitenfehler bei einer gegebenen Speichergrš§e minimiert wird.
Sei ri die Nummer der Seite, auf die zum Zeitpunkt i zugegriffen wird.
TatsŠchlich gibt es eine solche Strategie und sie lautet:
Dann ist R = r1 ,r2 ,r3 ,...,rn eine Seitenreferenzfolge.
Es gelte ri ≠ ri +1 ∀i , d.h. aufeinanderfolgende Referenzen auf dieselbe Seite werden in
der Referenzfolge zu einer Referenz zusammengefasst.
Bei lokaler Strategie erhalten wir fŸr jeden Prozess eine Referenzfolge. Die
Referenznummern beziehen sich auf den jeweiligen Adressraum.
Bei globaler Strategie entsteht die Referenzfolge als Mischung der Referenzfolgen der
Prozesse.
Der Seitennummer ist die Prozesskennung beizufŸgen, so dass eine Referenz aus einem
Paar (PID, Seitennummer) besteht.
ãWŠhle (zum Auslagern) die Seite, die am lŠngsten nicht mehr benštigt werden wird.Ò
Optimale Strategie: 3 Seitenfehler (ohne Initialseitenfehler)
Zeit
1
Referenz 0
Kachel 1 0
Kachel 2
Kachel 3
2
2
0
2
3
4
0
2
4
4
3
0
2
3
5
2
0
2
3
6
3
0
2
3
7
0
0
2
3
FŸr die nachfolgende Diskussion ergibt sich daraus kein Unterschied.
7-31
7-32
8
1
0
1
3
9
0
0
1
3
10
3
0
1
3
11
0
0
1
3
12
2
2
1
3
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Realisierbare Strategien
Realisierbare Strategien
Die optimale Strategie hat einen schwerwiegenden Nachteil:
¥
Sie ist nicht realisierbar, da i.a. zu jedem Zeitpunkt nur die bisher stattgefundenen
Referenzen, nicht aber die zukŸnftigen bekannt sind.
(Die optimale Strategie dient daher nur als ãMesslatteÒ fŸr realisierbare Strategien)
Daher:
Versuchen, auf Grund der vergangenen Referenzen die zukŸnftigen Referenzen
vorherzusagen.
RAND
(Random)
Ausgelagert wird eine zufŠllig ausgewŠhlte Seite
¥
FIFO
(First-In-First-Out)
Ausgelagert wird die Seite, die am schon am lŠngsten im Speicher ist
¥
LFU
(Least Frequently Used)
Ausgelagert wird die Seite, die am wenigstens hŠufig referenziert wurde
LokalitŠtsprinzip bedeutet:
Das Zugriffsverhalten in der unmittelbaren Vergangenheit ist eine gute SchŠtzung fŸr das
Verhalten in der unmittelbaren Zukunft.
¥
LRU
(Least Recently Used)
Ausgelagert wird die Seite, die am lŠngsten nicht mehr refenziert wurde
Auswahl basiert auf
¥
¥
¥
HŠufigkeit der Zugriffe auf eine Seite
Zeitpunkte der Zugriffe
RNU
(Recently Not Used)
Ausgelagert wird eine Seite, die innerhalb eines vorgegebenen Zeitraums nicht mehr
referenziert wurde
7-33
7-34
© H.-U. Heiß, Uni Paderborn
LRU (Least Recently Used)
© H.-U. Heiß, Uni Paderborn
LRU (Least Recently Used)
LRU bedeutet, dass die am lŠngsten nicht mehr referenzierte Seite ausgelagert wird.
Man kann dies leicht mit einem Stapel (stack) realisieren, bei dem die jŸngst zugegriffene
oben auf den Stapel gelegt wird.
Andere Seiten ãrutschenÒ dadurch nach unten.
Bei k Kacheln sind die k obersten Seiten des Stapels im Speicher
Zugriff auf Seite 5 (im Stapel)
3
7
4
9
5
8
1
t=i
Zugriff auf Seite 6 (nicht im Stapel)
5
3
7
4
9
8
1
3
7
4
9
5
8
1
6
3
7
4
9
5
8
t = i+1
t=i
t = i+1
7-35
Beispiel fŸr LRU-Strategie (4 Seitenfehler)
Zeit
1
Referenz 0
Kachel 1 0
Kachel 2
Kachel 3
0
Stapel
2
2
0
2
2
0
3
4
0
2
4
4
2
0
4
3
3
2
4
3
4
2
5
2
3
2
4
2
3
4
6
3
3
2
4
3
2
4
7
0
3
2
0
0
3
2
7-36
8
1
3
1
0
1
0
3
9
0
3
1
0
0
1
3
10
3
3
1
0
3
0
1
11
0
3
1
0
0
3
1
12
2
3
2
0
2
0
3
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
RNU (Recently Not Used)
Anmerkungen zur Realisierung
RNU ist Šhnlich wie LRU, arbeitet jedoch mit einem festen ãZeitfensterÒ der LŠnge k, das
Ÿber die Referenzfolge geschoben wird.
Alle realisierbaren Strategien erfordern bei jedem Zugriff gewisse Datenoperationen
(z.B. Stack-Operationen (LRU), ZŠhlerinkrementierung (LFU),..)
FŸr eine Auslagerung in Frage kommen alle Seiten, die innerhalb des Fensters nicht
referenziert wurden.
Sie vollstŠndig in Software durchzufŸhren ist zu aufwendig.
Die Fenstergrš§e k ist so wŠhlen, dass Anzahl der RNU-Seiten klein, aber > 0
Auch eine Hardware-UnterstŸtzung (erweiterte Funktion des TLB) wird i.a. aus
AufwandsgrŸnden nicht vorgesehen.
Beispiel fŸr RNU-Strategie (4 Seitenfehler)
Man begnŸgt sich daher mit leichter realisierbaren AnnŠherungsverfahren.
(fŸr Fenstergrš§e k=2)
Zeit
1
Referenz 0
Kachel 1 0
Kachel 2
Kachel 3
2
2
0
2
3
4
0
2
4
4
3
3
2
4
5
2
3
2
4
6
3
3
2
4
7
0
3
2
0
8
1
3
1
0
9
0
3
1
0
10
3
3
1
0
11
0
3
1
0
Von den diskutierten Verfahren zeigt LRU i.d.R. das beste Verhalten, d.h. LRU fŸhrt zur
geringsten Seitenfehlerrate.
12
2
3
2
0
Die in realen Betriebssystemen zu findenden Seitentauschstrategien sind daher leicht
realisierbare Varianten von LRU
Mit der Ÿblichen Hardware-UnterstŸtzung, d.h. der Aktualisierung von Referenzbits bei
jedem Zugriff auf eine Seite, lŠsst sich LRU bzw. RNU annŠhern.
7-37
7-38
© H.-U. Heiß, Uni Paderborn
AngenŠherte LRU/RNU-Strategie
© H.-U. Heiß, Uni Paderborn
Second-Chance-Algorithmus (Clock-Algorithmus)
Die Referenzindikatoren geben an, auf welche Seiten zugegriffen wurde, geben aber
keine Auskunft Ÿber den Zeitpunkt des letzten Zugriffs.
Der Clock-Algorithmus ist insofern geschickter, als er die Referenzindikatoren nicht alle
auf einmal zurŸcksetzt, sondern immer nur Teilmengen:
Da eine Seite nur bei Zugriff eingelagert wird, sind ohnehin alle Referenzindikatoren 1
und daher nicht hilfreich bei der Auswahl.
¥
Die Referenzindikatoren mŸssen deshalb periodisch zurŸckgesetzt werden,
damit man erkennen kann, auf welche Seiten aktuell noch zugegriffen wird.
¥
Bei der Suche nach einem Kandidaten wird die nŠchste Seite gewŠhlt, deren
Referenzbit 0
ist.
Präsenzindikatoren
0
0
1
1
2
1
3
0
4
1
5
0
–
Referenzindikatoren
¥
Im Zuge dieser linearen Suche werden alle besuchten Referenzindikatoren
zurŸckgesetzt.
1
0
–
¥
Sie haben - bis der Zeiger das nŠchste Mal vorbeikommt - eine weitere Chance,
referenziert zu werden
¥
Ausgelagert wird also eine Seite, die seit dem letzten Durchlauf des Auswahlzeigers
nicht wieder referenziert wurde.
Setzen bei
individueller
Referenz
1
–
Der Vektor der Referenzbits wird zyklisch durchlaufen.
Periodisch
gemeinsam löschen
7-39
7-40
© H.-U. Heiß, Uni Paderborn
„Second Chance“-Algorithmus (Clock-Algorithmus)
© H.-U. Heiß, Uni Paderborn
7.5 Leistungsaspekte des virtuellen Speichers
¥
Referenzindikatoren
¥
0
Auswahlzeiger
0
1
Das Prinzip des virtuellen Speichers funktioniert um so besser,
je hšher die LokalitŠt der Programme ist.
LokalitŠt ist dann gut, wenn auf wenige Seiten mit hoher Wahrscheinlichkeit,
auf viele mit sehr geringer Wahrscheinlichkeit zugegriffen wird (kleines α)
0
0
0
1
1
1
1
0
1
0
1
0
0.7
1
0
0
0.6
1
0
1
1
0
1
1
0
0
0.4
1
0.3
α = 0.3
0.2
α = 0.5
α = 1.0
0
1
Auswahlzeiger
Auswahlzeiger
1
1
1
0
0
1
0.8
p(s) Seiten-Zugriffswahrscheinlichkeit
α = 0.1
α
Parameter, der die Streuung ausdrückt
0.5
α = 0.2
0.1
Vor Auswahl
Nach Auswahl
Nach weiteren Referenzen
0
s
Seiten geordnet nach Zugriffswahrscheinlichkeit
7-41
7-42
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
7.5.1 Modellierung des Seitentauschs
Modellierung des Seitentauschs
Im Speicher sollten also die Seiten sein, auf die mit hoher Wahrscheinlichkeit zugegriffen
wird.
Sei
p(s) Seiten-Zugriffswahrscheinlichkeit
0.5
s
die Anzahl verfŸgbarer Kacheln
s0
die Adressraumgrš§e
Die s am hŠufigsten zugegriffenen Seiten seien im Hauptspeicher
Treffer
0.4
Dann gilt:
0.3
s
Seitenfehler
Trefferwahrscheinlichkeit
phit ( s ) = ∫ p( z ) dz
0
0.2
Seitenfehlerwahrscheinlichkeit
0.1
p pf ( s ) = 1 − phit ( s )
Normierung auf die Adressraumgrš§e:
0
im Speicher
auf Platte
s0
s
Seiten geordnet nach Zugriffswahrscheinlichkeit
7-43
s
0
Speicherangebot
σ = s s0
Normierte Seitenfehlerwahrscheinlichkeit
p′pf (σ ) = p pf ( s )
7-44
© H.-U. Heiß, Uni Paderborn
Abhängigkeit des Seitenfehlerwahrscheinlichkeit vom Speicherangebot
© H.-U. Heiß, Uni Paderborn
Mehrprogrammbetrieb
p′pf (σ ) Seitenfehlerwahrscheinlichkeit
1
K
Anzahl Speicherkacheln
n
Anzahl der Programme im Hauptspeicher
(Multiprogramming Level, MPL)
s0
Grš§e des Programmadressraums (in Seiten)
ts
Zeit zwischen zwei Seitenfehlern
tT
Seitentransferzeit
s
Speicherangebot in Seiten
0.8
α = 1.0
0.6
α = 0.5
α = 0.3
0.4
α = 0.2
α = 0.1
0.2
σ = σ/s0 Speicherangebot normiert auf Programmadressraum
σ
0
0.2
0.4
0.6
0.8
1
Es gilt bei n identischen Programmen:
s(n) = K / n
σ(n) = K / (n s0)
bzw.
7-45
7-46
© H.-U. Heiß, Uni Paderborn
Zwischenseitenfehlerzeit
© H.-U. Heiß, Uni Paderborn
Verzahnung von Rechen- und Seitentauschphasen
Fall: ts > tT
ts Zeit zwischen zwei Seitenfehlern
tS
tT
tS
tT
...
tS
...
tT
tS
tS
tT
tT
tS
tT
t
„Lifetime-Function“
Fall: ts < tT
tS
tT
tS
tS
σ Speicherangebot
Die Zeit zwischen zwei Seitenfehlern hŠngt vom Speicherangebot ab.
Links vom ãKnieÒ kann die Funktion durch eine Parabel angenŠhert werden:
2
 K 
ts ≈ a ⋅ σ 2 = a ⋅ 

 n ⋅ s0 
tT
tS
tT
tS
tT
tS
tT
tS
tT
tS
tT
tT
tS
tT
tS
tT
tT
tS
...
tT
t
Prozessor leer
Im zweiten Fall ergeben sich Phasen, in denen der Prozessor leer steht,
weil alle Prozesse auf ihre Seiten warten
D.h. ts sinkt mit wachsendem n
7-47
tS
7-48
© H.-U. Heiß, Uni Paderborn
7.5.2 Thrashing-Effekt
(to thrash: strampeln, zappeln
© H.-U. Heiß, Uni Paderborn
Thrashing
)
Ziel: Gute Prozessorauslastung
Das System ist nur noch mit Seitentausch beschŠftigt und kommt kaum noch zu
produktiver Arbeit
Viele Programme gleichzeitig bearbeiten
Blockiert (warten auf Seite)
Hoher Multiprogramminggrad n
Geringer Speicherplatz s pro Prozeß
Kurze Zeit zwischen zwei Seitenfehlern
Stau am Seitentauschgerät (Platte)
Bereit
Rechnend
Fast alle Prozesse blockiert
Ergebnis: Schlechte Prozessorauslastung
7-49
7-50
© H.-U. Heiß, Uni Paderborn
Thrashing-Kurve
© H.-U. Heiß, Uni Paderborn
†berlastphŠnomene
Prozessorauslastung
Thrashing-Bereich
Thrashing ist eine spezielle AusprŠgung eines †berlastphŠnomens, das in vielen
Bereichen
(nicht nur der Informatik) auftritt und jeweils einen Leistungskollaps zur Folge haben kann:
Beispiele:
nmax
Multiprogramminggrad n
Es muss verhindert werden, dass das System in den †berlastbereich gerŠt
¥
Rechnernetze
zu viele Pakete
¥
Telephonnetze:
¥
Datenbanken:
¥
Stra§enverkehr
¥
Parallelverarbeitung zu viele Prozessoren
zu viele Anrufe
zu viele Transaktionen
zu viele Fahrzeuge
Grund:
Koordinationsaufwand wŠchst Ÿberproportional an
7-51
7-52
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
†berlastverhinderung
Thrashing-Kurve dynamisch
Um den Thrashing-Effekt zu verhindern, muss der Multiprogramminggrad begrenzt werden
Prozessorauslastung
n n
max
Virtueller Speicher
Warten
n < nmax
Problem:
Wie findet man optimales nmax ?
t=1
Erschwernis:
t=0
t=2
Programmverhalten Šndert sich Ÿber die Zeit:
¥
Individuelles Programmverhalten Šndert sich
¥
Zusammensetzung der Programmmenge Šndert sich (Multiprogramming-Mix)
Multiprogramminggrad n
nmax
7-53
7-54
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Thrashing-Verhinderung
Thrashing-Verhinderung
Das optimale nmax ergibt sich im Betrieb und muss dynamisch angepasst werden.
Zwei StrategieansŠtze
Thrashing-Verhinderung ist daher eine Regelungsaufgabe
¥
n n
Indirekte oder lokale Strategie
FŸr jeden Prozess i wird individuell eine sinnvolle Kachelanzahl si festgelegt.
Der maximale Multiprogramminggrad ergibt sich dann indirekt
max
Virtueller Speicher
Warten

nmax : = max n

n < nmax
¥
Regelung
7-55
n

i=1

∑ si ≤ K 
Direkte oder globale Strategie
Die Messung der globalen SeitentauschaktivitŠt fŸhrt zur Berechnung eines optimalen
nmax
7-56
© H.-U. Heiß, Uni Paderborn
7.5.3 Lokale Regelung der SeitentauschaktivitŠt
© H.-U. Heiß, Uni Paderborn
Das Page-Fault-Frequency-Modell (PFF)
Seitenfehlerrate ρ
Das Working-Set-Modell
Der Working-Set (Arbeitsmenge) Wi (t, τ ) eines Programms i ist definiert als die Menge
Seiten, auf die der Prozess innerhalb der letzten τ Zeiteinheiten zugegriffen hat (vgl. RNU)
Zeitfenster der Länge τ
rt-τ-1 rt-τ rt-τ+1
s erhöhen
ρ2
rt-4 rt-3 rt-2 rt-1 rt
Zeit
ρ1
s verringern
Bei geeigneter Wahl von τ gibt die Grš§e des Working-Sets wi (t , τ ) := Wi (t , τ ) die Anzahl
Kacheln an, die der Prozess zum vernŸnftigen Arbeiten benštigt.
wi (t , τ ) wird mit Hilfe der Referenzinformation fŸr jeden Prozess geschŠtzt.
n
Ein neuer Prozess x wird nur dann in den Speicher geladen, wenn w x ≤ K − ∑ wi (t , τ )
i =1
Ziel des Verfahrens ist es also, dass alle Prozesse ihre Working-Sets im Speicher
unterbringen kšnnen.
Anzahl Kacheln s
FŸr jeden Prozess wird die Seitenfehlerrate (# Seitenfehler pro Zeiteinheit) gemessen und
dient zur Einstellung der Kachelanzahl:
ρ < ρ1: s: = s −1
ρ > ρ2 : s: = s + 1
Regelungsmechanismus
Der Multiprogramminggrad ergibt sich dann indirekt wie beim Working-Set-Verfahren
7-57
7-58
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
7.5.4 Globale Regelung der SeitentauschaktivitŠt
Die 50%-Regel
Das Kriterium der Zwischenseitenfehlerzeit (L=S-Kriterium)
Thrashing liegt dann vor, wenn viele Prozesse am Seitentausch blockiert sind.
Die Zeit zwischen zwei Seitenfehlern ts (bzw. L) soll so gro§ sein wie die Seitentransferzeit
tT (bzw. S)
Prozessorauslastung
d.h. die mittlere WarteschlangenlŠnge nst an der Seitentauschplatte grš§er als 1 ist.
Nach der Warteschlangentheorie entspricht nst = 1 einer Auslastung des GerŠts von 50%.
Neue Prozesse werden daher nur in den Hauptspeicher geladen, wenn die (Ÿber ein
lŠngeres Zeitintervall ermittelte) Auslastung des PlattengerŠts nicht Ÿber 50% liegt.
1
Auslastung
tS / tT
1
Seitentauschplatte
0,5
Prozessor
n
nopt nL=S
Der daraus resultierende Betriebspunkt liegt in der Regel etwas zu weit rechts,
was aber bei der Regelung berŸcksichtigt werden kann.
7-59
nopt
n
n50%
7-60
© H.-U. Heiß, Uni Paderborn
© H.-U. Heiß, Uni Paderborn
Parabelapproximation
Parabelapproximation
Die Thrashing-Kurve kann im Bereich des Maximums als Parabel angenŠhert werden
NŠherungsformel
η = a0 + a1n + a2 n 2
1
Prozessorauslastung
Die Koeffizienten a0 ,a1 ,a2 werden auf Grund von Messungen ( ηt ,nt ) dynamisch berechnet
(geschŠtzt).
Meßwerte
Der Scheitelpunkt n* der Parabel kann dann berechnet und als Obergrenze des
Multiprogramminggrades verwendet werden.
Falls die SchŠtzung eine nach oben gešffnete Parabel ergibt, so kann der Scheitel nicht
als Optimum verwendet werden.
In diesem Fall gibt aber die 1. Ableitung der geschŠtzten Parabel immer noch einen
Hinweis auf die Steigung, d.h. ob man sich links oder rechts vom Optimum befindet.
tatsächliche
Thrashing-Kurve
geschätzte Parabel
Die aktuelle Obergrenze kann daraufhin erhšht oder erniedrigt werden.
n
7-61
7-62
© H.-U. Heiß, Uni Paderborn
7.6Beispiele
© H.-U. Heiß, Uni Paderborn
Paging
7.6.1 Speicherverwaltung in Unix
¥
Heutige Unix-Systeme verfŸgen Ÿber virtuellen Speicher (demand paging)
FrŸhere Unix-Systeme besa§en noch keinen virtuellen Speicher.
¥
Bei Seitenfehler wird die fehlende Seite in eine frei Kachel eingelagert
Der Hauptspeicher wurde jedoch als BM mit VerdrŠngung verwaltet, d.h. Prozesse mit
ihren AdressrŠumen wurden auf Plattenspeicher ausgelagert (swapping), wenn
¥
Ein spezieller BS-Prozess (page-daemon) hat dafŸr zu sorgen,
dass eine hinreichende Anzahl freier Kacheln (lotsfree) existiert.
¥
¥
¥
Sind zuwenig Kacheln frei, beginnt er mit dem Auslagern von Seiten
¥
Dazu wird ein globaler Second-chance-Algorithmus verwendet.
¥
Die verschiedenen Unix-Systeme unterscheiden sich in Details
¥
Zur Vermeidung von Thrashing wird auf Swapping zurŸckgegriffen,
d.h. komplette Prozesse bzw. ihre AdressrŠume werden ausgelagert
Swapping
kein Platz fŸr Prozesserzeugung zur VerfŸgung stand
eine dynamische Speicheranforderung nicht erfŸllt werden konnte
Der auszulagernde Prozess wurde nach folgenden Kriterien ausgewŠhlt:
¥
¥
Zustand:bevorzugt blockierte Prozesse auslagern
PrioritŠt und Aufenthaltszeit im Hauptspeicher
PrioritŠt und Zeit seit der letzten Einlagerung werden addiert.
Der Prozess mit dem hšchsten Wert wird ausgeagert
Verwaltung des Hauptspeichers
Tabellenverfahren mit First-Fit.
und
des
7-63
Swap-Bereichs
nach
abgesetztem
7-64
© H.-U. Heiß, Uni Paderborn
Aktivierung des Page daemon
© H.-U. Heiß, Uni Paderborn
Modifizierter ãSecond ChanceÒ-Algorithmus
(Two-Hand-Clock-Algorithmus, Unix 4.2BSD)
AT&T System V:
Referenzindikatoren
¥
Originaler Second-chance-Algorithmus
¥
Statt lotsfree zwei Parameter min und max
Aktivierung, wenn
akt. Kachelvorrat < min
Beendigung, wenn
akt. Kachelvorrat > max
Zeiger 2:
Räumen
Zeiger 1:
Nullsetzen
4.3BSD:
0
0
1
0
0
0
1
1
1
1
0
1
0
1
0
1
Zeiger 2:
Räumen
1
1
0
0
1
¥
¥
Modifizierter Second-chance-Algorithmus (Two-hand-clock-Algorithmus)
0
Vorgabe: Parameter lotsfree
Aktivierung, wenn
akt. Kachelvorrat < lotsfree
Beendigung, wenn
akt. Kachelvorrat > lotsfree
0
Zeiger 1:
Nullsetzen
1
7.6.2 Speicherverwaltung in Windows NT
¥
Im Gegensatz zu Unix wird in NT eine lokale Seitentauschstrategie eingesetzt:
Muss infolge eines Seitenfehlers eine Kachel gerŠumt werden,
so geschieht das immer auf Kosten des den Seitenfehler verursachenden Prozesses.
¥
Beim Seitenfehler wird nicht nur die fehlende Seite,
sondern einige mehr aus der Nachbarschaft dieser Seite eingelagert (clustering)
¥
Die Menge der aktuell im realen Speicher befindlichen Seiten eines Prozesses
hei§t ãWorking SetÒ
¥
Die Seitentauschstrategie hŠngt von der Hardware ab:
FIFO (modifiziert) bei Alpha-Prozessoren und Intel-Multiprozessorsystemen
Clock bei Intel-Monoprozessorsystemen
¥
Die Grš§e des Working Sets wird durch Standardwerte (Min und Max) initialisiert.
Bei Bedarf kšnnen Working Sets Ÿber das Maximum hinaus wachsen (Working set
expansion) und auch wieder schrumpfen (Working set trimming)
Beides ist abhŠngig von der Seitenfehlerrate und vom globalen Vorrat freier Seiten.
¥
FŸr das BS selbst wird ebenfalls ein Working Set Mechanismus verwendet.
1
1
1
0
0
1
Nach Aktivieren
des Pagedaemon
Vor Aktivieren
des
Pagedaemon
7-66
© H.-U. Heiß, Uni Paderborn
7-67
1
1
0
Zeiger 1:
Nullsetzen
0
1
Vor Aktivieren
des Pagedaemon
7-65
Zeiger 2:
Räumen
0
Herunterladen