bs-5.6 1 5.6 Segmentierte Prozesse im virtuellen Speicher Erinnerung: Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen Speichers; Sharing ist problematisch. Segmentierung erleichtert Sharing, auch mit unterschiedlichen Zugriffsrechten. Kombination bietet sich an !
32
Embed
Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung: Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
bs-5.6 1
5.6 Segmentierte Prozesse im virtuellen Speicher
Zur Erinnerung:
Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen Speichers;Sharing ist problematisch.
Segmentierung erleichtert Sharing,auch mit unterschiedlichen Zugriffsrechten.
Kombination bietet sich an !
bs-5.6 2
5.6.1 Grobkörnige Segmentierung
Jedes Segment umfasst eine oder mehrere Seiten:
Segmentdeskriptor
beschreibt nicht Bytefolge im Arbeitsspeicher,sondern Seitenfolge im virtuellen Speicher,d.h. Seitentabelle (!) des Segments
Virtuelle Adresse
besteht aus Segmentnummer,Seitennummer,Distanzadresse
bs-5.6 3
base limit frame d c
page backup
Segmenttabelle
Seitentabelledes virtuellen Speichers
Rahmentabelle
base limit w
Kontextregister Assoziativregister
Virtuelle Adresses p o
Segmentliste desaktiven Prozesses
w
Seite (s,p)
s p frame w d
Auslagerungsbereich
Speicher
Prozessor/MMU
bs-5.6 4
! Unterscheide:
Verwaltung des virtuellen Speichers:
Neues Segment mit n Seiten einrichten
bedeutet: im virtuellen Speicher n konsekutive Seiten findend.h. in der Seitentabelle n konsekutive freie Zellen finden(“externer Verschnitt“ – aber nur virtuelle Adressen!)
Verwaltung des realen Speichers
= Verwaltung der Rahmen
bs-5.6 5
Früher Pionier dieses Ansatzes: MULTICS (MIT 1967)auf Hardware GE 645:
256 K Segmente (!) à 64 Seitenà 1 K (36-Bit-)Worte
Jeder Prozess hat eigene Segmenttabelle,die selbst „gepaged“ ist; statt mehrererKontextregister gibt es eindescriptor base register, das auf die Segmenttabelle verweist
Segmentdeskriptor beschreibt Seitentabelle des Segments; Sharing durch gemeinsam benutzte Seitentabelle
bs-5.6 6
BS-Segmente sind permanent in die Adressräumealler Prozesse eingeblendet (!),
allerdings speziell zugriffsgeschützt:Segmente haben unterschiedlicheSchutzstufen (rings of protection) 0,1,2,...,7,zwischen denen Übergriffe nur begrenztmöglich sind.
am höchstengeschützt
0 1 2 3 4 5 6 7
bs-5.6 7
5.6.2 Feinkörnige Segmentierung
Segment ist beliebiger Bereich im virtuellen Speicher:
... ...
Motivation: kleine gemeinsame Objekte feinkörniger Schutz eines Programms
vor sich selbst (entbehrlich beisicheren Programmiersprachen)
Segmentdeskriptor = Basisadresse + Länge (im virt. Sp.)
Segmenttabelle enthält alle Segmentdeskriptoren
Berechtigung = Index in Segmenttabelle + Zugriffssrecht, vor Manipulation geschützt (s.u.),
durch Berechtigungsverweis identifiziert
Berechtigungsregister (capability registers) können wienormale Register unter Bezugnahme auf eine Berechtigung
mit zugehörigem Segmentdeskriptor geladen werden Adressierung einer Speicherzelle durch Angabe von
Berechtigungsregister + Distanzadresse
bs-5.6 9
Beachte:
ein Berechtigungsregister ähnelt einem Segmentregister,seine Benutzung erfordert aber keinen privilegierten Modus
? Was ist der „Adressraum eines Prozesses“ ?
2 mögliche Antworten:
die über die Berechtigungsregister erreichbaren Segmente
die über die jeweils verfügbaren Berechtigungen erreichbaren Segmente – direkt adressierbar ist jeweils nur der über die Berechtigungsregister erreichbare Ausschnitt
bs-5.6 10
Geschützte Ralisierung der Berechtigungen mittels
Berechtigungsliste (capability list),
entweder per Prozess, bei den vom BS geführten Daten,Berechtigungen durchnumeriert,Berechtigungsverweis = Nummer
oder per Segment in Schattenregion (shadow region) des Segments (vor der Basisadresse),Berechtigungsverweis =
Berechtigungsregister (für Segment)+ Nummer
bs-5.6 11
base limit frame d c
page backup
Segmenttabelle
Seitentabelledes virtuellen Speichers
Rahmentabelle
base limit wBerechtigungsregister Assoziativregister
Programmadresseb o
Berechtigungsliste desaktiven Prozesses
w
Seite (s,p)
page frame w d
Auslagerungsbereich
Speicher
Prozessor/MMU
bs-5.6 12
5.6.3 Aktuelle Hardware: Intel IA-32
Terminologie der zweistufigen Adressumsetzung:
segmentationunit
paging unitlogical linear physical
address address address
Programm- virtuelle realeadresse Adresse Adresse
Paging Unit ist abschaltbar virtuelle = reale Adresse
(80286 hatte nur Segmentierung, kein Paging)
bs-5.6 13
5.6.3.1 Segmentierung
Aktueller Kontext des Prozessors wird bestimmt durch
6 Segmentregister-Paare (Selektor,Deskriptor):
CS für Code-SegmentSS für Stack-SegmentDS für Daten-SegmentES für sonstige DatensegmenteFS für sonstige DatensegmenteGS für sonstige Datensegmente
bs-5.6 14
Adressenangabe im Maschinenbefehl besteht ausSegmentregister + Distanzadresse, z.B. MOV DS:0,EAX
außer: Befehle lokalisieren: stets im Code-Segment; Keller-Befehle ausführen: stets im Stack-Segment; Zeichenketten-Befehle: stets im ES-Segment.
Benutzerprogramm (! vgl. 5.6.2)
• kann Segmentregister beliebig laden, z.B. MOV DS,AX ,
• und damit seinen Adressraum beliebig verschieben
- im Rahmen der ihm zur Verfügung stehenden Segmente:
bs-5.6 15
als Operand dient ein Segmentselektor:
dieser Selektor wird ins Selektorregister geladen;er identifiziert einen Segmentdeskriptor in der
Quelle: Intel Architecture Software Developer‘s ManualVol. 3: System Programming
bs-5.6 17
Beachte:
Segmentarten sind weitgehend festgelegt
private und gemeinsame Segmente werden über verschiedene Tabellen verwaltet (LDT versus GDT)
Besonderheit beim Code-Segment: CS kann nicht beliebig geladen werden, sondern wird als Folge eines CALL/RET-Befehls oder einer Unterbrechung geladen (s.u.).
bs-5.6 18
bs-5.6 19
Segmentdeskriptor enthält u.a.
base Adresse des ersten Bytes des Segments,(32 Bits) „lineare Adresse“ (4 GB Adressraum)
= reale Adresse bei abgeschaltetem Paging, virtuelle Adresse sonst
limit Länge des Segments(20 Bits) in Bytes, falls G = 0,
in Seiten à 4 KB, falls G = 1
G (granularity) Einheit der Segmentlänge(1 Bit)
DPL (descriptor privilege level) Privilegierungsstufe(2 Bits) für Zugriffsschutz: 0,1,2 oder 3 (niedrigste Stufe)
bs-5.6 20
bs-5.6 21
Zugriffsschutz, insbesondere für globale Segmente:
Zugriff auf ein Segment wird untersagt, wenn dessen Privilegierungsstufe höher als diejenige im Selektorregister des aktuellen Code-Segments ist.
Beispiel: auf ein Segment der Stufe 3 kann man immer zugreifen.
Ausnahme: kontrollierter Übergang in ein höherprivilegiertes Code-Segment mit CALL, z.B. für Systemaufruf (s.u.)
bs-5.6 22
3
210
Idee der Intel-Architekten:
Mikrokern
Kern
Bibliotheken
Benutzerprogramme
bs-5.6 23
3
210
Idee der Intel-Architekten:
Mikrokern
Kern
Bibliotheken
Benutzerprogramme
Aber Linux ... Minix ...
Kern
Bibliotheken undBenutzerprogramme
Mikrokern
Tasks
Systemprozesse,Bibliotheken undBenutzerprogramme
bs-5.6 24
Befehl CALL operand (Rücksprung mit RET)
mit operand = Segmentselektor + Distanzadresseerlaubt Wechsel des Code-Segmentsmit Sprung in dieses neue Code-Segment – sofern dessen Privilegierungsstufe nicht höher ist.
mit operand = Selektor eines Call Gateerlaubt Wechsel mit Erhöhung der Privilegierungsstufe:
Call Gate Descriptor verweist auf Code-Segmentund dortige Einsprungstelle;
beim Sprung wird auch das Keller-Segment ausgetauscht (gemäß Information im TSS – Task State Segment)
bs-5.6 25
5.6.3.2 Paging
Jeder Prozess hat eigenes
Seitenverzeichnis (page directory) für die Umsetzung der virtuellen 32-Bit-Adressen seines 4-GB-Adressraumsmittels 4-K-Seitenin reale Adressen
Seitenverzeichnis des aktuellen Prozesses ist erreichbar über
Seitendeskriptoren verfügen über die üblichen Daten
frame,flags: accessed, dirty, present, ........
Assoziativspeicher beschleunigt Adressumsetzung:Seitendeskriptor wird identifiziert über (table,page)
bs-5.6 29
5.6.3.3 Nutzungsmöglichkeiten
sind vielfältig, lassen dem BS-Entwickler viele Freiheiten!
Beispiele:
Segmentierung ignorieren
Paging ignorieren (abschaltbar über PG Bit in cr0)
große versus kleine Segmente
Realisierung von Sharing
u.a.
bs-5.6 30
Segmentierung ignorieren:
bs-5.6 31
Beispiel Linux :
4 Segmente – Code/Daten für Kern/Benutzer – haben unterschiedliche Privilegien für Kern und Benutzer,werden aber alle auf die gleichen virtuellen Adressen0 – 1 MB abgebildet.
(Motivation: System soll ohne große Änderungen auch für RISC-Prozessoren ohne Segmentierung einsetzbar sein)