Folien

Transcrição

Folien
Zwei Möglichkeiten die TLB zu aktualisieren
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
49
Was passiert, wenn ein Prozess gestartet wird?
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
M. Esponda-Argüero
50
Speicherschutz
valid-invalid bit
Mit Hilfe eines Bits pro Frame wird Speicherschutz gewährleistet.
valid =
gültiger Speicherzugriff, weil die Adresse im ProzessAdressraum ist.
invalid = die Adresse ist nicht im Prozess-Adressraum.
Seitengröße = 2048
00000
Seite 0
Valid-invalidBit
0
Seite 0
1
Seite 0
2
Seite 1
Seite 2
0 1
v
3
1 2
v
4
Seite 2
2 3
v
5
Seite 3
Seite 3
3 5
v
6
Seite 4
4 6
v
.
Seite 1
10232
FrameNummer
Seite 4
5
0 i
.
6
0 i
.
7
0 i
.
.
.
Seitentabelle
address-space identifiers (ASIDs)
M. Esponda-Argüero
Verwendung gemeinsamer Seiten (pages)
- 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
M. Esponda-Argüero
52
Verwendung gemeinsamer Seiten (pages)
Editor 1
Editor 2
Editor 3
Daten 1
.
.
.
Seitentabelle
von P1
3
4
6
1
Editor 2
Editor 3
Daten 3
.
.
.
Editor 2
Editor 3
Daten 2
3
4
6
Seitentabelle
von P2
Prozess P2
1
Daten 1
2
Daten 3
3
Editor 1
4
Editor 2
5
3
4
6
7
Seitentabelle
von P3
2
Prozess P3
Editor 1
.
.
.
Prozess P1
Editor 1
0
6
Editor 3
7
Daten 2
8
9
10
11
12
physikalischer
Speicher
M. Esponda-Argüero
Verwendung gemeinsamer Seiten (pages)
Stapel
Stapel
gemeinsame
Bibliotheken
gemeinsame
Bibliotheken
⇒
gemeinsame
⇒
Bibliotheken
Heap
Heap
Data
Data
Code
Code
Seiten von gemeinsamen Bibliotheken
M. Esponda-Argüero
54
Struktur von Seitentabellen
Programme werden ständig größer und entsprechend die
Seitentabellen auch.
Die meisten modernen Rechner stellen einen sehr großen
logischen Adressraum zur Verfügung ( 2 32 bis 2 64 ).
Wie viele Seiten?
2 32 ⇒
4GB
= 1, 048, 576 Seiten
4KB
Es gibt drei Lösungen:
- Die Seitentabellen selber werden in Seiten (pages) geteilt
- Hashtabellen werden verwendet
- invertierte Seitentabellen (inverted page table)
M. Esponda-Argüero
55
Hierarchische Seitentabellen
Moderne Rechner arbeiten mit einem Adressraum zwischen
232 und 264
Beispiel
Mit einem Adressraum =
Seitengröße =
Tabellengröße =
232
4 KB = 212
220 Einträge
Wenn ein Tabelleneintrag = PTE = 4 Bytes
Seitentabelle = 4 MB
100 Prozesse = 400 MB nur für die Seitentabellen!
zu groß!
M. Esponda-Argüero
56
Hierarchische Seitentabellen
Die Seitentabellen selber werden in Seiten geteilt.
Seitentabelle
Seite der
Seitentabelle
Seitentabelle
Speicher
Bildquelle: Silverschatz, Galvin und Gagne
Hierarchische Seitentabellen
Seitentabellen
0
1
2
..
.
page table #
3
page frame #
4
5
6
Seitentabelle der
Seitentabelle
..
.
7
physikalischer
Adresse
frame #
d
frame # + d
8
9
10
11
12
p1
p2
d
physikalischer
Speicher
logische Adresse
M. Esponda-Argüero
58
Beispiel einer zweistufigen Seitenhierarchie

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
d
12
10
10
wo p1 der Index in der ersten Seitentabelle und p2 die
Verschiebung innerhalb der Seite der äußeren Seitentabelle ist.
M. Esponda-Argüero
59
Beispiel einer zweistufigen Seitenhierarchie
p1
p2
d
p1
+
p2
+
d
Seitentabelle der
Seitentabelle
Seitentabelle
M. Esponda-Argüero
60
CPU
p1
p2
d
Beispiel einer zweistufigen Seitenhierarchie
p1
+
TLB miss
p2
+
d
p1
p2
+
f
TLB hit
TLB
M. Esponda-Argüero
61
232
Eine gute Teilung ist:
4KB
Seitengroße
4KB
p1
p2
d
10
10
12
Beispiel einer dreistufigen Seitenhierarchie
ab 264
schlecht!
besser
noch zu groß!
M. Esponda-Argüero
62
Seitentabellen mit Hilfe von Hash-Funktionen
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.
M. Esponda-Argüero
63
Seitentabellen mit Hilfe von Hash-Funktionen
logische Adresse
p
d
r
physikalische
Adresse
d
Hashtabelle
HashFunktion
q s
p r
physikalischer
Speicher
t
u
NULL
M. Esponda-Argüero
Inverted Page Table
Nur eine Seitentabelle existiert für das gesamte System.
Einen Speichereintrag für jede reale Speicherseite.
Die Prozess ID wird in die Tabelle gespeichert.
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.
Beispiele:
64-Bit UltraSPARC und PowerPC
M. Esponda-Argüero
65
Invertierte Seitentabelle
Logische Adresse
CPU
pid
p
d
i
d
physikalische
Adresse
physikalischer
Speicher
Suche
i
pid
p
Seitentabelle
M. Esponda-Argüero
66
Invertierte Seitentabelle
Logische Adresse
CPU
pid
p
j
d
Verkettung
d
physikalische
Adresse
physikalischer
Speicher
HashFunktion
p
pid
j
Seitentabelle
M. Esponda-Argüero
67
Was ist die beste Seitengröße?
Kleine Seiten
kleine interne Fragmente,
aber große Seitentabellen
Große Seiten
Nehmen wir an:
große interne Fragmente,
aber kleine Seitentabellen
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
Daraus folgt durch Minimierung:
Optimale Seitengröße = 2 p
M. Esponda-Argüero
68
Page Table Entries (PTEs)
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
69
Segmentierung
Segmentierung ist ein Speicherverwaltungsschema, das
die logische Sichtweise des Benutzers unterstützt.
Programme werden in logische Segmente geteilt.
Beispiel:
Hauptprogramm
Funktion
Methode
Objekte
lokale + globale Variablen
Datenstrukturen
Standard C-Bibliothek
usw.
M. Esponda-Argüero
70
Programm aus der Sichtweise eines Benutzers
Hauptprogramm
Stapel
Symboltabelle
Standard
Bibliothek
Funktion 1
Objekt 2
logischer Adressraum
M. Esponda-Argüero
71
Segmentierung aus einer logischen Benutzersichtweise
1
4
1
2
2
3
4
3
Benutzer-Adressraum
Physikalischer Adressraum
M. Esponda-Argüero
72
Segmentierung aus logischer Benutzersichtweise

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
73
Speicherschutz
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
74
Hardwareunterstützung für Segmentierung
s
limit
base
physikalischer
Speicher
Segmenttabelle
CPU
s
d
<
ja
+
Speicherzugriff
nein
Ausnahmefehler (trap)
M. Esponda-Argüero
75
Hardwareunterstützung für Segmentierung
physikalischer Speicher
Hauptprogramm
0
Segment 0
Stapel
Objekt 2
Segment 2
Symboltabelle
Segment 1
Funktion 1
Standard
Bibliothe
k
1
2
3
4
5
6
limit base
2000 1000
500 4000
1500
6000
.
.
.
.
.
.
7
1000
Segment 0
3000
4000
4500
6000
Segmenttabelle
Segment 1
Segment 2
7500
logischer Adressraum
M. Esponda-Argüero
76
Das Intel-Pentium
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)
M. Esponda-Argüero
77
Pentium-Segmentierung
selector
segment number
13
g protection
offset
2
0 = das Segment ist in GDT
1 = das Segment ist in LDT
Von logischer in physikalische Adresse
CPU
logische
Adresse
segmentation
unit
lineare
Adresse
paging
unit
Physikalischer
Speicher
physikalische
Adresse
M. Esponda-Argüero
Pentium Paging-Architektur
Die Pentium-Architektur erlaubt zwei verschiedene Seitengrößen (4 KB
oder 4 MB).
Bei 4 KB-Seitengröße wird ein zweistufiges Seitenschema verwendet.
Seitennummer
Dir
Page
offset
10
10
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.
M. Esponda-Argüero
79
Pentium Segment- und Paging-Architektur
logische Adresse
selector
offset
descriptor table
segment descriptor
+
lineare Adresse
Dir
Page
Offset
selektiertes
Wort
Dir
Page
Seitenverzeichnis
Seitentabelle
4 KB
page
Offset
Seitenrahmen
M. Esponda-Argüero
Pentium Segment- und Paging-Architektur
logische Adresse
selector
offset
descriptor table
segment descriptor
+
lineare Adresse
page directory
offset
selektiertes
Wort
4 MB
page
Dir
Seitenverzeichnis
Seitenrahmen
Offset
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
Dreistufige Seitentabelle in Linux
Globales Verzeichnis
Mittleres Verzeichnis
Seitentabelle
Offset
Dreistufige Seitenadressierung im Linux
a
+
a
+
+

Documentos relacionados