Top Banner
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

Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung: Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

Apr 06, 2016

Download

Documents

August Fried
Welcome message from author
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
Page 1: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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 !

Page 2: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 3: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 4: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 5: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 6: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 7: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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)

! Spezielle Hardware erforderlich !Pioniere (ohne Paging): Plessey 250 (1975)

CAP (Cambridge 1977)

20 K 24 K 28 K 32 K 36 K

Page 8: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 8

Adressierung über Berechtigungen (capabilities):

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

Page 9: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 10: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 11: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 12: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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)

Page 13: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 14: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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:

Page 15: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 15

als Operand dient ein Segmentselektor:

dieser Selektor wird ins Selektorregister geladen;er identifiziert einen Segmentdeskriptor in der

LDT (local descriptor table) oderGDT (global descriptor table),

und dieser wird ins Deskriptorregister geladen.

indexGDT oder LDT

privilege level (s.u.)13 1 2

Page 16: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 16

Quelle: Intel Architecture Software Developer‘s ManualVol. 3: System Programming

Page 17: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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.).

Page 18: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 18

Page 19: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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)

Page 20: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 20

Page 21: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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.)

Page 22: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 22

3

210

Idee der Intel-Architekten:

Mikrokern

Kern

Bibliotheken

Benutzerprogramme

Page 23: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

Page 24: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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)

Page 25: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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

control register cr3

Page 26: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 26

Seitenverzeichnis enthält Deskriptoren fürauslagerbare Seitentabellen:

Page Directory

Seitentabellen

Seiten

......

...

1 KB Deskriptorenà 4 Bytes

cr3control register

Page 27: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 27

Gemeinsame Nutzung von Segmenten

erfolgt über gemeinsam genutzte Teiltabellen:

......

...

Prozess A

Prozess B

Page 28: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 28

Interpretation der virtuellen Adresse:

table page offset 10 10 12

Seitendeskriptoren verfügen über die üblichen Daten

frame,flags: accessed, dirty, present, ........

Assoziativspeicher beschleunigt Adressumsetzung:Seitendeskriptor wird identifiziert über (table,page)

Page 29: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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.

Page 30: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 30

Segmentierung ignorieren:

Page 31: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

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)

Page 32: Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.

bs-5.6 32

Eine Seitentabelle für jedes Segment: