zwei möglichkeiten die tlb zu aktualisieren - informatik · nur eine seitentabelle existiert für...
Post on 06-Aug-2019
214 Views
Preview:
TRANSCRIPT
M. Esponda-Argüero
Zwei Möglichkeiten die TLB zu aktualisieren
49
Die MMU kümmert sich um alles (Hardware-Lösung)
• sucht die p-Entry
• wenn diese nicht da ist, behandelt direkt das TLB-miss
• zum Schluss wird die neue p-Entry (virt.→phys. mapping) in der in das TLB eingetragen.
Die TLB wird direkt vom Betriebssystem verwaltet (Software-Lösung)
• ein TLB-miss verursacht ein Trap und wird vom Betriebssystem behandelt.
• Das Betriebssystem sucht und ladet die neue p-Entry ins TLB.
M. Esponda-Argüero
Was passiert, wenn ein Prozess gestartet wird?
50
Prozess (p) = n Seiten
if at least n frames in VM available
allocate n frames for p
load one page of p in main memory
put the entry on the page table of p
. . .
else ???????
Es gibt meistens eine Seitentabelle pro Prozess
Speicherschutz valid-invalid bit
Mit Hilfe eines Bits pro Frame wird Speicherschutz gewährleistet.
valid = gültiger Speicherzugriff, weil die Adresse im Prozess-Adressraum ist.
invalid = die Adresse ist nicht im Prozess-Adressraum.
Seite 0
Seite 0
Seite 1
Seite 2
Seite 3
Seite 4
Seitentabelle
Seitengröße = 2048Frame-
NummerValid-invalid-
Bit
0
1
2
3
4
5
6
7
.
.
.
0
1
2
3
4
5
6
.
.
.
Seite 000000
10232
Seite 1
Seite 2
Seite 3
Seite 4
M. Esponda-Argüero
1 v
2 v
3 v
5 v
6 v
0 i
0 i
0 i
address-space identifiers (ASIDs)
M. Esponda-Argüero
Verwendung gemeinsamer Seiten (pages)
52
- Besonders gut geeignet für Timesharing-Systeme
- Seiten von gemeinsamen Programmen wie z.B.- Windows-System
- Datenbank-Systeme,
- IPC
- Texteditoren
- Übersetzer, usw.
- müssen immer im gleichen Speicherbereich stehen
- Privater Programmkode und Daten
- kann in beliebigem Speicherbereich stehen
Verwendung gemeinsamer Seiten (pages) Seitentabelle
von P1
3
4
6
1
3
4
6
2
Seitentabelle von P3
3
4
6
7
Seitentabelle von P2
physikalischerSpeicher
Daten 1
Daten 3
Editor 1
Editor 2
Editor 3
Daten 2
0
1
2
3
4
5
6
7
8
9
10
11
12
Prozess P1
Editor 1Editor 2
Daten 1Editor 3
.
.
.
Prozess P3
Editor 1
Editor 3Editor 2
Daten 3
.
.
.
Prozess P2
Editor 3Editor 2
Editor 1
Daten 2
.
.
.
M. Esponda-Argüero
M. Esponda-Argüero
Seiten von gemeinsamen Bibliotheken
⇒
Stapel
Heap
Data
Code
gemeinsame
Bibliotheken ⇒
Stapel
Heap
Data
Code
gemeinsame
Bibliotheken
gemeinsame
Bibliotheken
Verwendung gemeinsamer Seiten (pages)
54
M. Esponda-Argüero 55
Struktur von Seitentabellen
Programme werden ständig größer und entsprechend die Seitentabellen auch.
- Die Seitentabellen selber werden in Seiten (pages) geteilt
Es gibt drei Lösungen:
- Hashtabellen werden verwendet
- invertierte Seitentabellen (inverted page table)
Die meisten modernen Rechner stellen einen sehr großen logischen Adressraum zur Verfügung ( bis ).232 264
Wie viele Seiten?232 ⇒ 4GB
4KB= 1,048,576 Seiten
M. Esponda-Argüero
Hierarchische Seitentabellen
56
Moderne Rechner arbeiten mit einem Adressraum zwischen
232 und 264
Seitengröße = 4 KB = 212
Mit einem Adressraum = 232
Beispiel
Tabellengröße = 220 Einträge
Wenn ein Tabelleneintrag = PTE = 4 Bytes
Seitentabelle = 4 MB
zu groß!100 Prozesse = 400 MB nur für die Seitentabellen!
Hierarchische Seitentabellen
Die Seitentabellen selber werden in Seiten geteilt.
Bildquelle: Silverschatz, Galvin und Gagne
SpeicherSeitentabelle
Seite der Seitentabelle
Seitentabelle
M. Esponda-Argüero
Hierarchische Seitentabellen
58
physikalischer Speicher
0
1
2
3
4
5
6
7
8
9
10
11
12
frame # + d
page frame #. . .
. . .
Seitentabelle der Seitentabelle
page table #
Seitentabellen
frame # d
p1 p2 d
logische Adresse
physikalischer Adresse
M. Esponda-Argüero 59
Eine logische Adresse mit 32 Bits wird wie folgt geteilt :
• 22 Bits für die Seitennummer
• 10 Bits für die Verschiebung (Page Offset) Die Seitentabelle selber ist geteilt:
• 12 Bits Seitennummer in der Seitentabelle
• 10 Bits Seiten-Offset innerhalb der Seitentabelle Eine logische Adresse sieht wie folgt aus:
page number page offset
p1 p2 d12 10 10
Beispiel einer zweistufigen Seitenhierarchie
wo p1 der Index in der ersten Seitentabelle und p2 die Verschiebung innerhalb der Seite der äußeren Seitentabelle ist.
M. Esponda-Argüero
Beispiel einer zweistufigen Seitenhierarchie
60
+
+
Seitentabelle
p1 p2 d
Seitentabelle der Seitentabelle
p1
p2
d
M. Esponda-Argüero
Beispiel einer zweistufigen Seitenhierarchie
61
+
+
p1 p2 d
p1
p2
d
CPU
TLB hit
TLB
TLB miss
p1p2 f
+
M. Esponda-Argüero
Beispiel einer dreistufigen Seitenhierarchie
62
ab 264
besser
schlecht!
noch zu groß!
p1 p2 d10 10 12
232 4KB 4KB
Eine gute Teilung ist:
Seitengroße
M. Esponda-Argüero
Seitentabellen mit Hilfe von Hash-Funktionen
63
Werden oft verwendet mit Adressräumen größer als 32 Bits
Eine logische Seitennummer wird mit Hilfe einer Hash-Funktion in
der Seitentabelle abgebildet. An dieser Position der Tabelle hängt
eine verkettete Liste von Elementen, die zur selben Seitennummer
abgebildet werden.
Die logische Seitennummer wird dann mit den Elementen der Liste
verglichen. Wenn die Seitennummer in der Liste ist, wird die
entsprechende Frame-Nummer gewählt.
Seitentabellen mit Hilfe von Hash-Funktionen
logische Adresse
p d
Hash-Funktion
Hashtabelle
q s p r t u NULL
r d
physikalischerSpeicher
physikalische Adresse
M. Esponda-Argüero
M. Esponda-Argüero
Inverted Page Table
65
Die Prozess ID wird in die Tabelle gespeichert.
Einen Speichereintrag für jede reale Speicherseite.
Es wird insgesamt weniger Speicherplatz für die Prozesstabellen verbraucht, aber die Zeit zum Suchen in der Tabelle wird größer.
Eine Hashtabelle wird verwendet, um die Suche zu beschleunigen.
Nur eine Seitentabelle existiert für das gesamte System.
Beispiele:64-Bit UltraSPARC und PowerPC
M. Esponda-Argüero
Invertierte Seitentabelle
66
CPUphysikalischer
Speicher
pid p
Logische Adresse
Seitentabelle
i d
physikalische Adresse
i
d
pid p
Suche
M. Esponda-Argüero
Invertierte Seitentabelle
67
CPUphysikalischer
Speicher
pid p
Logische Adresse
Seitentabelle
j d
physikalische Adresse
j
d
Hash-Funktion
p pid
Verkettung
M. Esponda-Argüero
Was ist die beste Seitengröße?
68
Nehmen wir an:
p = Länge des logischen Adressraums des Prozesses und
s = Seitenlänge
Dann ist
p/s = Länge der Seitentabelle
s/2 = mittlere Größe des internen Fragments (nur in der letzten Seite)
Der relative Speicherverlust V ist
V = (p/s + s/2)/p
Kleine Seiten kleine interne Fragmente, aber große Seitentabellen
Große Seiten große interne Fragmente, aber kleine Seitentabellen
Daraus folgt durch Minimierung: Optimale Seitengröße = 2p
M. Esponda-Argüero
Page Table Entries (PTEs)
69
Mikroprozessor-Architektur abhängig
V Valid-Bit Befindet sich die Seite im Hauptspeicher?
M Modify-Bit Ist die Seite verändert worden?
R Reference-Bit Ist die Seite verwendet worden (read/written)
prot Protection-Bits Ist die Seite lesbar, veränderbar oder ausführbar?
page frame number Physikalische Adresse im Hauptspeicher (RAM)
M. Esponda-Argüero
Segmentierung
70
Segmentierung ist ein Speicherverwaltungsschema, das die logische Sichtweise des Benutzers unterstützt.
Programme werden in logische Segmente geteilt.
HauptprogrammFunktion
MethodeObjektelokale + globale VariablenDatenstrukturenStandard C-Bibliothek
usw.
Beispiel:
M. Esponda-Argüero
Programm aus der Sichtweise eines Benutzers
71
logischer Adressraum
Hauptprogramm
Symboltabelle
Funktion 1Objekt 2
Stapel
Standard
Bibliothek
M. Esponda-Argüero
Segmentierung aus einer logischen Benutzersichtweise
72
1
3
2
4
Benutzer-Adressraum
1
4
2
3
Physikalischer Adressraum
M. Esponda-Argüero
Segmentierung aus logischer Benutzersichtweise
73
Eine logische Adresse ist ein zweistelliges Tupel:
<Seitennummer, Offset>
Segmenttabelle – Jeder Segmenttabelleneintrag hat:
• Base = Start der physikalischen Adresse des Segments
• im Speicher.
Grenze = Größe des Segments.
Segment Table Base Register (STBR) = Zeiger auf die Segmenttabelle des Speichers.
Segment Table Length Register (STLR) =Anzahl der Segmente, die im Programm verwendet werden.
Eine Segmentnummer s ist legal, wenn s < STLR
M. Esponda-Argüero
Speicherschutz
74
Jeder Segmenteintrag in der Tabelle hat:
validation bit = 0 ⇒ illegales Segment
read/write/execute Zugriffsrechte
Die Segmente haben Schutzbits.
Gemeinsame Codeverwendung auf Segment-Ebene.
Weil Segmente verschiedene Größen haben, ist dynamische Speicherallokation ein Problem.
M. Esponda-Argüero
Hardwareunterstützung für Segmentierung
75
<ja
nein
Ausnahmefehler (trap)
Speicherzugriff
CPU
physikalischer Speicher
s d
+
Segmenttabelle
limit base
s
M. Esponda-Argüero
Hardwareunterstützung für Segmentierung
76
physikalischer Speicher
Segmenttabelle
limit base
logischer Adressraum
Hauptprogramm
Symboltabelle
Funktion 1
Objekt 2Stapel
Standard
Bibliothek
500 40002000 10000
12
34
56
7
1500 6000
.
.
.
.
.
.
Segment 0
Segment 1
Segment 2
Segment 0
Segment 1
Segment 2
1000
3000
4000
4500
6000
7500
M. Esponda-Argüero
Das Intel-Pentium
77
Die Hardware-Architektur des Intel-Pentium-CPU unterstützt pure Segmentierung oder Segmentierung kombiniert mit Paging
Pentium Segmentierung
- Segmente können bis zum 4 GB groß sein.
- Ein Prozess kann maximal 16 Segmente haben.
- Der Speicherraum des Prozesses hat zwei Partitionen
- Erste Partition: private Segmente des Prozesses
- Zweite Partition: gemeinsame Segmente für alle Prozesse
- Information über die Partitionen:
- local descriptor table LDT (Tabelle der ersten Partition)
- global descriptor table GDT (Tabelle der zweiten Partition)
Pentium-Segmentierung
Von logischer in physikalische Adresse
segment number protectiong
0 = das Segment ist in GDT1 = das Segment ist in LDT
CPU segmentation unit
Physikalischer Speicher
logische Adresse
lineare Adresse
physikalische Adressepaging
unit
offset
selector
13 2
M. Esponda-Argüero
M. Esponda-Argüero
Pentium Paging-Architektur
79
Dir offset
Seitennummer
10 10
Die Pentium-Architektur erlaubt zwei verschiedene Seitengrößen (4 KB oder 4 MB).
Bei 4 KB-Seitengröße wird ein zweistufiges Seitenschema verwendet.
Page
12
Jeder Prozess hat ein Seitenverzeichnis, das aus
210 32-Bits-Einträgen besteht.
Jeder Eintrag in diesem Verzeichnis zeigt auf eine Seitentabelle,
die wiederum aus 210 32-Bits-Einträgen besteht.
Pentium Segment- und Paging-Architektur
selector offset
logische Adresse
segment descriptor
descriptor table
lineare Adresse
+
selektiertes Wort
Seitenverzeichnis Seitentabelle Seitenrahmen
Offset
OffsetPageDir
PageDir4 KB page
M. Esponda-Argüero
Pentium Segment- und Paging-Architektur
selector offset
logische Adresse
segment descriptor
descriptor table
lineare Adresse
+
selektiertes Wort
SeitenverzeichnisSeitenrahmen
Offset
offsetpage directory
Dir 4 MB page
Linux in Pentium-Systemen
Linux hat eine minimale Segmentierung-Unterstützung.
Nur 6 Segmente
- kernel code
- kernel data
- user code
- user data
- task-state segment (TSS)
- default LDT segment
Globales Verzeichnis Seitentabelle
Dreistufige Seitentabelle in Linux
Mittleres Verzeichnis Offset
Dreistufige Seitenadressierung im Linux
a
a
+
+
+
top related