Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:August Fried Geändert vor über 9 Jahren
1
bs-5.61 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 !
2
bs-5.62 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
3
bs-5.63 base limit frame d c page backup Segmenttabelle Seitentabelle des virtuellen Speichers Rahmentabelle base limit w KontextregisterAssoziativregister Virtuelle Adresse s p o Segmentliste des aktiven Prozesses w Seite (s,p) s p frame w d Auslagerungsbereich Speicher Prozessor/MMU
4
bs-5.64 ! Unterscheide: Verwaltung des virtuellen Speichers: Neues Segment mit n Seiten einrichten bedeutet: im virtuellen Speicher n konsekutive Seiten finden d.h. in der Seitentabelle n konsekutive freie Zellen finden ( “externer Verschnitt“ – aber nur virtuelle Adressen!) Verwaltung des realen Speichers = Verwaltung der Rahmen
5
bs-5.65 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 mehrerer Kontextregister gibt es ein descriptor base register, das auf die Segmenttabelle verweist Segmentdeskriptor beschreibt Seitentabelle des Segments; Sharing durch gemeinsam benutzte Seitentabelle
6
bs-5.66 BS-Segmente sind permanent in die Adressräume aller Prozesse eingeblendet (!), allerdings speziell zugriffsgeschützt: Segmente haben unterschiedliche Schutzstufen (rings of protection) 0,1,2,...,7, zwischen denen Übergriffe nur begrenzt möglich sind. am höchsten geschützt 0 1 2 3 4 5 6 7
7
bs-5.67 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 bei sicheren Programmiersprachen) ! Spezielle Hardware erforderlich ! Pioniere (ohne Paging): Plessey 250 (1975) CAP (Cambridge 1977) 20 K 24 K 28 K 32 K 36 K
8
bs-5.68 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 wie normale Register unter Bezugnahme auf eine Berechtigung mit zugehörigem Segmentdeskriptor geladen werden Adressierung einer Speicherzelle durch Angabe von Berechtigungsregister + Distanzadresse
9
bs-5.69 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
10
bs-5.610 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
11
bs-5.611 base limit frame d c page backup Segmenttabelle Seitentabelle des virtuellen Speichers Rahmentabelle base limit w Berechtigungsregister Assoziativregister Programmadresse b o Berechtigungsliste des aktiven Prozesses w Seite (s,p) page frame w d Auslagerungsbereich Speicher Prozessor/MMU
12
bs-5.612 5.6.3 Aktuelle Hardware: Intel IA-32 Terminologie der zweistufigen Adressumsetzung: segmentation unit paging unit logical linear physical address address address Programm- virtuelle reale adresse Adresse Adresse Paging Unit ist abschaltbar virtuelle = reale Adresse (80286 hatte nur Segmentierung, kein Paging)
13
bs-5.613 5.6.3.1 Segmentierung Aktueller Kontext des Prozessors wird bestimmt durch 6 Segmentregister-Paare (Selektor,Deskriptor): CS für Code-Segment SS für Stack-Segment DS für Daten-Segment ES für sonstige Datensegmente FS für sonstige Datensegmente GS für sonstige Datensegmente
14
bs-5.614 Adressenangabe im Maschinenbefehl besteht aus Segmentregister + 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:
15
bs-5.615 als Operand dient ein Segmentselektor: dieser Selektor wird ins Selektorregister geladen; er identifiziert einen Segmentdeskriptor in der LDT (local descriptor table) oder GDT (global descriptor table), und dieser wird ins Deskriptorregister geladen. index GDT oder LDT privilege level (s.u.) 13 1 2
16
bs-5.616 Quelle:Intel Architecture Software Developer‘s Manual Vol. 3: System Programming
17
bs-5.617 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.).
18
bs-5.618
19
bs-5.619 Segmentdeskriptor enthält u.a. baseAdresse des ersten Bytes des Segments, (32 Bits) „lineare Adresse“ (4 GB Adressraum) = reale Adresse bei abgeschaltetem Paging, virtuelle Adresse sonst limitLä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)
20
bs-5.620
21
bs-5.621 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öher privilegiertes Code-Segment mit CALL, z.B. für Systemaufruf (s.u.)
22
bs-5.622 3 2 1 0 Idee der Intel-Architekten: Mikrokern Kern Bibliotheken Benutzerprogramme
23
bs-5.623 3 2 1 0 Idee der Intel-Architekten: Mikrokern Kern Bibliotheken Benutzerprogramme Aber Linux...Minix... Kern Bibliotheken und Benutzerprogramme Mikrokern Tasks Systemprozesse, Bibliotheken und Benutzerprogramme
24
bs-5.624 Befehl CALL operand (Rücksprung mit RET ) mit operand = Segmentselektor + Distanzadresse erlaubt Wechsel des Code-Segments mit Sprung in dieses neue Code-Segment – sofern dessen Privilegierungsstufe nicht höher ist. mit operand = Selektor eines Call Gate erlaubt Wechsel mit Erhöhung der Privilegierungsstufe: Call Gate Descriptor verweist auf Code-Segment und dortige Einsprungstelle; beim Sprung wird auch das Keller-Segment ausgetauscht (gemäß Information im TSS – Task State Segment)
25
bs-5.625 5.6.3.2 Paging Jeder Prozess hat eigenes Seitenverzeichnis (page directory) für die Umsetzung der virtuellen 32-Bit-Adressen seines 4-GB-Adressraums mittels 4-K-Seiten in reale Adressen Seitenverzeichnis des aktuellen Prozesses ist erreichbar über control register cr3
26
bs-5.626 Seitenverzeichnis enthält Deskriptoren für auslagerbare Seitentabellen: Page Directory Seitentabellen Seiten.................. 1 KB Deskriptoren à 4 Bytes cr3 control register
27
bs-5.627 Gemeinsame Nutzung von Segmenten erfolgt über gemeinsam genutzte Teiltabellen:.................. Prozess A Prozess B
28
bs-5.628 Interpretation der virtuellen Adresse: tablepageoffset 10 1012 Seitendeskriptoren verfügen über die üblichen Daten frame, flags: accessed, dirty, present,........ Assoziativspeicher beschleunigt Adressumsetzung: Seitendeskriptor wird identifiziert über (table,page)
29
bs-5.629 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.
30
bs-5.630 Segmentierung ignorieren:
31
bs-5.631 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 Adressen 0 – 1 MB abgebildet. (Motivation: System soll ohne große Änderungen auch für RISC-Prozessoren ohne Segmentierung einsetzbar sein)
32
bs-5.632 Eine Seitentabelle für jedes Segment:
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.