Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Bs-5.61 5.6 Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen."—  Präsentation transkript:

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:


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

Ähnliche Präsentationen


Google-Anzeigen