Betriebssystembau (BSB)

Ähnliche Dokumente
Betriebssysteme (BS) IA-32. Überblick. das Programmiermodell der Intel Architektur. Historie der Intel x86 Prozessoren. 8086: Programmiermodell

Betriebssysteme (BS)

Betriebssysteme (BS) IA-32. Überblick: Vorlesungen. das Programmiermodell der Intel-Architektur. Agenda. Historie der Intel x86-prozessoren

Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging

Intel x86 Bootstrapping

5.6 Segmentierter virtueller Speicher

Zwei Möglichkeiten die TLB zu aktualisieren

Betriebssystembau (BSB)

Proseminar Konzepte von Betriebssystem-Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging Von Christian Hubert

Kompatibilitätsmodi: Real Mode: - Segmentregister*16+Offset => Adresse - Keine Segmentdeskriptoren, kein Paging, - ~ 1 MB Adressraum.

Prof. Dr. Sharam Gharaei. Inhaltsverzeichnis. 1 Einleitung 1. 2 Grundlage der Realisierung 2. 3 Die Realisierung 3. Literaturverzeichnis 7

15. Hauptspeicher-Adressierung

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13.

Virtueller Speicher und Memory Management

Wie schreibt man ein Betriebssystem?

x86-assemblerprogrammierung

Tutorium Rechnerorganisation

Betriebssystembau (BSB)

7. Speicherverwaltung

RO-Tutorien 15 und 16

Pru fungsprotokoll. Prüfer: Dr. Lenhardt Beisitzer:? Datum der Prüfung: Dauer: 25 Minuten

Betriebssystemtechnik

Wie groß ist die Page Table?

Echtzeit-Multitasking

Echtzeit-Multitasking

Assembler - Adressierungsarten

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Echtzeitbetriebssysteme

Teil 1: Prozessorstrukturen

Das Assembler-Buch. Trutz Eyke Podschun. Grundlagen und Hochsprachenoptimierung. 4., aktualisierte Auflage ADDISON-WESLEY

Vorlesung "Struktur von Mikrorechnern" (CBS)

Betriebssysteme Sommersemester Betriebssysteme. 5. Kapitel. Adressumsetzung. Dr. Peter Tröger / Prof. M. Werner. Professur Betriebssysteme

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Betriebssystembau. 3. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Klausur zur Mikroprozessortechnik

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 9 und Präsenzaufgaben Übung 10

Rechnergrundlagen SS Vorlesung

Realisierung: virtueller Prozessor: der reale Prozessor wird periodisch dem Programm zugewiesen Im Prozessor: durch Task-Status Segment (TSS)

Einführung in Computersysteme

Vorlesung "Struktur von Mikrorechnern" (SMR)

Teil 1: Prozessorstrukturen

Aufgabe 1 Entwicklung einer Virtuellen Maschine

RO-Tutorien 17 und 18

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

Übung zu Betriebssystembau (Ü BS)

Technische Informatik 2 Speichersysteme, Teil 3

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

01744 PC-Technologie Prüfungsprotokoll (Note 1,3) vom bei Dr. Lenhardt, Protokollführer Dr. Bähring

3 Schnittstelle zum Betriebssystem 3.1 Einleitung

1. Speicher. Typische Nutzung eines Adreßraums. Systemsoftware. Textbereich relativ klein. Sehr großer Abstand zwischen Heap und Stack

Hans-Georg Eßer, Hochschule München, Betriebssysteme I, SS Speicherverwaltung 1

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Überschrift. Speicherverwaltung. Prof. Dr. Margarita Esponda Freie Universität Berlin 2011/2012

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

Vorlesung: Virtualisierung und Rechenzentrumsinfrastrukturen. Lars Göbel & Christian Müller VL04: Einführung in die Virtualisierung

Einführung in die technische Informatik

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Lösungsvorschlag für Übung September 2009


Vorwort 15 Inhalt der DVD 18. Kapitel 1 Halbleitertechnik im Überblick 19. Kapitel 2 Logikschaltungen 29

Das Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11.

Leichtgewichtsprozesse

Betriebssystembau (BSB)

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

Aufgabe 2 - Erweiterung um PIC und Interrupts

Rechnerorganisation. IKS 2016 H.-D. Wuttke, K. Henke

Memory Management. Peter Puschner Institut für Technische Informatik

12. Sicherheit. A, B3, B2, B1, C2, C1, D sicher unsicher. Betriebssysteme, Sommer 2005, Verteilte Systeme, Universität Ulm, M.

Paging. Einfaches Paging. Paging mit virtuellem Speicher


Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 9, Dienstag 18.

Technische Informatik 1 - HS 2017

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

Grundlagen Rechnerarchitektur und Betriebssysteme

Teil 1: Prozessorstrukturen

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

i386 Interrupt-Deskriptortabelle (IDT)

Linux Paging, Caching und Swapping

Geräteentwurf mit Mikroprozessoren 1

Mikrorechentechnik 1. Befehlssatzarchitektur. Professur für Prozessleittechnik Wintersemester 2011/2012

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

(Cache-Schreibstrategien)

Memory Management Units in High-Performance Processors

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

Projekt für Systemprogrammierung WS 06/07

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Tutorium Rechnerorganisation

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Neue Prozessor-Architekturen für Desktop-PC

Wunschvorstellung der Entwickler vom Speicher

Inhaltsübersicht. Speicherverwaltung Teil I. Motivation. Prinzipielle Arten der Speicherverwaltung

Übung zu Grundlagen der Betriebssysteme. 13. Übung

5 Speicherverwaltung. bs-5.1 1

Hinweise 80x86-Architektur

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

Rechnerorganisation. Überblick über den Teil 13

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Transkript:

Betriebssystembau (BSB) Das Programmiermodell der x86_64-architektur https://ess.cs.tu-dortmund.de/de/teaching/ws217/bsb/ Daniel Friesel, Olaf Spinczyk daniel.friesel@tu-dortmund.de https://ess.cs.tu-dortmund.de/~df AG Eingebettete Systemsoftware Informatik 12, TU Dortmund

Überblick: Vorlesungen Struktur des OO-StuBS -Betriebssystems: Anwendung(en) Gerätezugriff (Treiber) Kontrollflussabstraktion Unterbrechungssynchronisation Hardware Prozessverwaltung Unterbrechungsbehandlung Interprozesskommunikation Betriebssystementwicklung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 2

Überblick: Vorlesungen Struktur des OO-StuBS -Betriebssystems: Anwendung(en) Gerätezugriff (Treiber) Hardware Prozessverwaltung Interprozesskommunikation Unterbrechungsbehandlung Unterbrechungssynchronisation Kontrollflussabstraktion Betriebssystementwicklung Thema der heutigen Vorlesung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 3

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 4

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 5

Historie der Intel x86-prozessoren (1) 886 (1978) der Urvater des PC-Prozessors 8286 (1982) Einführung des Protected Mode segmentbasierter Speicherschutz 8386 (1985) erster IA-32-Prozessor seitenbasierter virtueller Speicher 8486 (1989) integrierte FPU, RISC-Ansätze Pentium (1993) superskalar, 64-Bit-Datenbus SMM, MMX, APIC, Dualprozessor-fähig Pentium Pro (1995) Server, High-End Pentium II (1997) Pentium Pro + MMX RISC-artige Mikroinstruktionen Pentium III (1999) SSE Pentium 4 (2) Netburst-Architektur SSE2, Hyperthreading, Vanderpool, Intel 64/EM64T 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 6

Historie der Intel x86-prozessoren (2) Core (25) Dual Core, weniger Strom Pentium III-Derivat, SSE3, Core 2 (26) Dual/Quad Core, 64 Bit (amd64) Core i3/i5/i7 (28) SSE4, QPI, SMT, L3-Cache On-die L3-Cache, integrierter Speichercontroller und teils GPU Atom (28) noch weniger Strom Sandy Bridge (211) AVX, AES-NI Haswell/Broadwell (213) AVX2, TSX Sky-/Kaby-/Cannonlake (215-17) AVX3, MPX, SGX, ADX integrierte Southbridge, USB 3.1, GPU für 3D und 4k-Video 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 7

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 8

886: Programmiermodell 16-Bit-Architektur, little-endian 2-Bit-Adressbus, d.h. maximal 1 MiB Hauptspeicher wenige Register (jedenfalls aus heutiger Sicht) 123 Befehle kein orthogonaler Befehlssatz Befehlslängen von 1 bis 4 Byte segmentierter Speicher noch immer aktuell obwohl von 1978: noch heute von jeder amd64-cpu unterstützt Real Mode, Virtual 886 Mode Aufwärtskompatibilität wird bei Intel großgeschrieben 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 9

886: Registersatz Befehls- und Stapelzeiger 15 IP SP Flags-Register 15 FLAGS Vielzweckregister 15 AH BH CH DH AL BL CL DL Segmentregister 15 CS SS DS ES Stack Data Extra SI DI BP 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 1

886: Registersatz Befehls- und Stapelzeiger 15 IP SP Vielzweckregister 15 AH BH CH DH SI DI BP AL BL CL DL Jedes Vielzweckregister erfüllt seinen speziellen Zweck AX: Accumulator Register arithmetisch-logische Operationen I/O Flags-Register kürzester 15 Maschinencode FLAGS BX: Base Address Register CX: Count Register für LOOP-Befehl Segmentregister für 15 String-Operationen mit REP für Bit Shift und Rotate CS DX: Data SS Register Stack DX:AX DSsind 32 Bit für MUL/DIVData Portnummer ES für IN und OUT Extra SI, DI: Index Register für Array-Zugriffe (Displacement) BP: Base Pointer 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 11

886: Segmentierter Speicher logische Adressen bestehen beim 886 aus Segmentselektor (i.d.r. der Inhalt eines Segmentregisters) Offset (i.d.r. aus einem Vielzweckregister oder dem Befehl) Berechnung der physikalischen Adresse: 15 Segmentselektor 15 + Offset 19 physikalische Adresse Die 16-Bit-Konkurrenz konnte i.d.r. nur 64KB adressieren. 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 12

886: Segmentierter Speicher logische Adressen bestehen beim 886 aus Segmentselektor (i.d.r. der Inhalt eines Segmentregisters) Offset (i.d.r. aus einem Vielzweckregister oder dem Befehl) Berechnung der physikalischen Adresse: 64K ought to be enough for anybody 15 Segmentselektor 15 + Offset angeblich ein Zitat von Bill Gates, 1981 19 physikalische Adresse Die 16-Bit-Konkurrenz konnte i.d.r. nur 64KB adressieren. 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 13

886: Speichermodelle Programme können Adressen unterschiedlich bilden. Das Ergebnis waren unterschiedliche Speichermodelle: Tiny -, Daten- und Stacksegment sind identisch: 64K insgesamt Small Trennung des s von Daten und Stack: 64K + 64K Medium 32- (bzw. 2-) Bit-Zeiger für, Daten- & Stapelseg., aber fest (64K) Compact Festes -Segment (64K), 32- (2-) Bit-Zeiger für Daten & Stack Large far -Zeiger für alles: 1MB komplett nutzbar Huge wie Large, aber mit normalisierten Zeigern 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 14

886: Fazit Urvater der PC-Prozessoren bildete den Kern der ersten PCs noch heute sind x86- und amd64-prozessoren kompatibel Segmentregister brachten Vorteile trotz 16-Bit-Architektur 1 MB Speicher Trennung von logischen Modulen im Hauptspeicher Programm- und Übersetzerentwicklung ist aber vergleichsweise schwierig verschiedene Speichermodelle nicht-orthogonaler Befehlssatz 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 15

IA-32 die 32-Bit-Intel-Architektur die erste IA-32-CPU war der 8386 wobei der Begriff IA-32 erst sehr viel später eingeführt wurde 32-Bit-Technologie: Register, Daten- und Adressbus ab Pentium Pro: 64 Bit Daten- und 36 Bit Adressbus zusätzliche Register komplexe Schutz- und Multitasking-Unterstützung Protected Mode ursprünglich schon mit dem 8286 (16-Bit) eingeführt Kompatibilität mit älteren Betriebssystemen durch den Real Mode mit älteren Anwendungen durch den Virtual 886 Mode segmentbasiertes Programmiermodell seitenbasierte MMU 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 16

amd64 Die 64-Bit-AMD-Architektur IA-32 erlaubte nur maximal 4 GB virtuellen Speicher Lösung: 64-Bit-Architektur Derzeit 48 Bit virtueller Adressraum (bis zu 256 TB) Weitere (und 64 Bit breite) Register Seitenbasierters Programmiermodell mit Speicherschutz No Execute-Bit für einzelne Seiten (Fast) keine Segmentierung Weiterhin rückwärtskompatibel Long Mode zur Nutzung der neuen Eigenschaften 32-Bit Legacy Mode für Systeme oder einzelne Anwendungen Von AMD entwickelt und von Intel (als Intel 64) übernommen Inzwischen meist als x86_64 / x64 bezeichnet Intels IA-64 (Itanium) konnte sich nicht durchsetzen 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 17

x86_64: Registersatz (Erweiterungen) erweiterte Register heißen aus Kompatibilitätsgründen R RAX RBX RCX RDX RSI RDI RBP R8 R15 Vielzweckregister 63 16 15 AX BX CX DX SI DI BP RIP RSP RFLAGS Stack Data Extra Befehls- und Stapelzeiger 63 Flags-Register Segmentregister 15 CS SS DS ES 16 15 63 16 15 Extra Extra 15 IP SP FLAGS FS GS Erweiterung zum 886 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 18

x86_64: Registersatz (neue Register) Speicherverwaltungsregister 15 63 31 TR TSS-Sel. TSS-Basisadresse LDTR LDT-Sel. LDT-Basisadresse IDTR IDT-Basisadresse GDTR GDT-Basisadresse Steuerregister 63 32 31 CR8 CR4 CR3 CR2 CR Modellspezifische Register TSS-Limit LDT-Limit IDT-Limit GDT-Limit 15 DR DR1 DR2 DR3 DR6 DR7 Debugregister 63 32 31 Erläuterungen folgen 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 19

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 2

x86_64: Adressierungsarten Effektive Adressen (EA) werden nach einem einfachen Schema gebildet alle Vielzweckregister können dabei gleichwertig verwendet werden EA = Basis-Reg. + (Index-Reg. * Scale) + Displacement Beispiel: MOV RAX, Feld[RSI * 4] 1/2/4/8 --- 1/2/4 Byte EA Lesen aus Feld mit 4 Byte großen Elementen und RSI als Index Neu bei x86_64: Relative Adressierung EA = RIP + Displacement 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 21

Das A2-Gate ist ein Relikt aus der Zeit der 8286-Systeme (IBM AT) beim IBM XT (886) konnte es bei der Adressberechnung zu einem Überlauf kommen. Im Maximalfall: xffef nur 2 Bit! xffff + xffff 1 1 1 1 x1ffef Segment * 16 Offset phys. Adresse MS-DOS (und andere Systeme) verwenden diesen Trick. Aus Kompatibilitätsgründen wurde im IBM AT die A2-Leitung über das A2 Gate (Register im Tastaturcontroller) maskiert. A2 muss explizit freigeschaltet werden, um Speicher > 1 MiB zu adressieren Ab dem 486 hat Intel das A2-Gate in die CPU integriert! 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 22

IA-32: Protected Mode Segmente Ein Programm (in Ausführung) besteht aus mehreren Speichersegmenten Traditionell mindestens CODE, DATEN und STACK Segmentselektoren beschreiben (indirekt) Adresse und Länge Lineare Adresse ist Segmentstartadresse + EA Lineare Adresse entspricht physikalischer Adresse, falls die Paging Unit nicht eingeschaltet ist. Segmente dürfen sich überlappen, z.b. Startadressen == In der Praxis wird i.a. ein solcher flacher Adressraum genutzt Kein segmentbasierter Schutz im Long Mode Nur FS/GS-Startadresse und CS-Attribute werden berücksichtigt 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 23

x86_64: Segmente Segment Register SS GS FS ES DS CS Selektor Tabelle Flags Limit Startadresse SS GS FS ES DS CS Segmentdeskriptoren effektive Adresse + + Segmentgrenze lineare Adresse Startadresse des Segments Basis-Register Index-Register Scale 1, 2, 4 oder 8 Displacement (im Befehl) Operand selektiertes Segment 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 24 x Limit linearer Adressraum

x86_64: Seitenbasierte MMU Ein- und Auslagerung von Speicher (zwecks virtuellem Speicher) auf Seitenbasis Ab dem 8386 kann eine Paging Unit (PU) optional hinzugeschaltet werden, in x86_64 obligatorisch Die wichtigsten Verwaltungsinformationen stehen in den Steuerregistern CR/2/3: CR3 CR2 CR 63 reserviert Basis-Adresse der Page Map Virtuelle Adresse des Page-Faults reserviert PG sonstige reserviert PE Paging: 1=aktiv Protected-Mode Enable: 1=aktiv 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 25

x86_64: Seitenübersetzungstabelle lineare Adresse 63 N/A 48 47 39 PML4-Index 38 3 29 21 2 12 11 PDP-Index PD-Index Page-Index Offset 51 CR3 PML4-Basis 12 Page-Map Level 4 Eintrag 511... Eintrag 2 Eintrag 1 Eintrag Page Directory Pointers Eintrag 511... Eintrag 2 Eintrag 1 Eintrag Page Directory Eintrag 511... Eintrag 2 Eintrag 1 Eintrag Page Table Eintrag 511... Eintrag 2 Eintrag 1 Eintrag Page Frames (phys. Adr.)... Page-Frame 4KiB (, Daten) Page-Frame 4KiB (, Daten) Page-Frame 4KiB (, Daten)...... Page-Frame (, 4KiB Daten) 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 26

x86_64: TLB Problem: Speicherzugriffe werden durch Indirektion über PML4, PDP, Page Directory und Page Table verlangsamt Lösung: der Translation Lookaside Buffer (TLB): assoziativer Cache Tag: PML4/PDP/PD/PT Daten: Page-Frame-Adresse Größe und Assoziativität hängen von CPU ab bei normalen Anwendungen erreicht der TLB eine Trefferrate von etwa 98% Schreiben in das CR3-Register invalidiert den TLB 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 27

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 28

Schutz unter IA-32 die wichtigste Eigenschaft des Protected Mode ist das Schutzkonzept Ziel: fehlerhaften oder nicht vertrauenswürdigen isolieren Schutz vor Systemabstürzen Schutz vor unberechtigten Datenzugriffen keine unberechtigten Operationen, z.b. I/O-Port-Zugriffe Voraussetzungen: und Daten werden hinsichtlich der Vertrauenswürdigkeit kategorisiert bekommen einen Besitzer (siehe "Multitasking") 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 29

Schutzringe und Gates Durch einen 2-Bit- Eintrag im Segmentdeskriptor wird jedes Segment einer Privileg-Ebene zugeordnet. Daten Daten Daten 3 2 1 Daten Daten Daten 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 3

Schutzringe und Gates Privileg-Ebene 3 ist die niedrigste und für Anwendungen gedacht. Anwendungen Daten Kundenspezifische BS-Erweiterungen Daten Systemdienste Daten Kern 3 2 1 Daten Privileg-Ebene ist die höchste und dem Betriebssystemkern vorbehalten. Daten Daten 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 31

Schutzringe und Gates Zugriff auf Daten Daten eines inneren Rings ist verboten Daten Daten eines inneren Rings kann nur durch Gates aufgerufen werden 3 2 1 Zugriff auf Daten eines Daten äußeren Rings Zugriffe erlaubt Daten Daten auf Segmente der Aufruf von derselben eines äußeren Rings Ebene sind ist i.a. verboten! erlaubt 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur erlaubt 32

Segmentdeskriptoren Erlauben Schutz von im Protected Mode jede Verletzung führt zum Auslösen einer Ausnahme In 64-Bit-Systemen erlauben sie die Ausführung von 32-Bit- ein Segment-Deskriptor Segment Base 31... 24 G D/B L AVL Limit 19... 16 +6 P S DPL Segment Base 15... Segment Limit 15... TYPE Segment Base 23... 16 +4 +2 TYPE : C - Conforming R - Readable A - Accessed P - Present Bit G - Granularity DPL - Descriptor Privilege Level D/B - 16/32 Bit Seg. S - System Segment L - Long Mode aktiv 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 33

Schutz unter x86_64 Segmentierung wurde in der Praxis kaum angenommen Fast alle IA-32-Systeme nutzen flaches Speichermodell Offset der logischen Adresse = lineare Adresse Stattdessen: Schutz durch virtuellen Speicher Phys. Speicher Prozess 1: Prozess 2: Prozess n: CR3 CR3 CR3 Seiten- Tabelle Seiten- Tabelle Seiten- Tabelle... Seite 2 Seite 2 Seite 2 Seite 1 Seite Jeder Prozess sieht nur seinen virtuellen Adressraum Seitentabelle ist vor Anwendungssoftware verborgen Zusätzliche Einschränkungen pro Seite möglich 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 34

Einträge der Seitenübersetzungstabelle 63 62 52 51 12 N X Available Basisadresse der Tabelle / Basisadresse der Seite 11 1 2 1 AVL... U/S R/W P No Execute User/Supervisor Read/Write Present Einstellung in jeder Hierarchieebene möglich Daten dürfen nicht als ausgeführt werden (NX=1) Schutz vor Lesezugriffen aus Ring 3 (U/S=) Readonly-Seiten (R/W=) Erlaubt Umsetzung von Shared Memory Oder Readonly-Zugriff auf Betriebssystemstrukturen Effektiv werden nur Ring (Kern) und 1-3 (Anwendung) getrennt 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 35

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 36

IA-32: Multitasking Neben dem Schutz vor unberechtigten vertikalen Zugriffen zwischen Segmenten unterschiedlicher Ebenen unterstützt IA-32 auch ein Task-Konzept ( horizontale Trennung ) Ist im x86_64 Long Mode nicht verfügbar Daten Globale Segmente (Deskriptoren in Daten Daten der GDT) Segmente aus 3 2 1 der LDT von Task A Daten Daten Task A Daten Task C Task B 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 37

Task State-Segmente Das Task-Register TR verweist auf das Task State Segment (TSS) In IA-32 nimmt es den Task- Zustand auf Segmente, Registerinhalt,... Task-Wechsel sind so komplett in Hardware möglich x86_64 unterstützt dies nicht Stattdessen: TSS für E/A- Berechtigungen und Stackpointer I/O Permission Bitmap I/O Map Base Address IST7 IST6 IST5 IST4 IST3 IST2 IST1 RSP2 RSP1 RSP 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 38

Ein-/Ausgaben im Long Mode Nicht jeder beliebige Task darf Ein-/Ausgaben durchführen! Zugriffe auf Geräte im Speicher (memory-mapped I/O) können über Speicherschutz abgefangen werden Zugriffe auf I/O-Ports werden eingeschränkt: die I/O Privilege Level-Bits im RFLAGS-Register erlauben Ein- und Ausgaben auf bestimmten Schutzringen auf den anderen Ebenen regelt die I/O Permission Bitmap im TSS den Zugriff: TSS Die Bitmap endet mit 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 eine '1' verhindert 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 dem TSS- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 den Portzugriff 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Segmentende, Ports 1 1 1 1 1 1 1 1 1 1 1 1 mit größeren Port Nummern dürfen nicht angesprochen I/O Map Base Address werden. IST7 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 39...

x86_64: Was gibt es sonst noch? Bald: 5-Level Paging Bis zu 4 PB Speicher (128 PB Adressraum) statt bisher 64/256 TB System Management Mode (SMM) gibt dem BIOS Kontrolle über das System das Betriebssystem merkt davon nichts! Virtualisierung der CPU der Virtual 886 Mode 16-Bit-Anwendungen oder Betriebssysteme laufen als Task in einer geschützten Umgebung Intel-VT, AMD-V Hardwareunterstützung für virtuelle Maschinenlösungen wie VMware, VirtualPC oder Xen erlaubt die Ausführung von Ebene--Protected-Mode- in einer VM 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 4

Agenda Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz Tasks Zusammenfassung 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 41

Zusammenfassung die x86_64-architektur ist ausgesprochen komplex, u.a. Virtueller Speicher mit vierfacher Seitentabelle Seitenbasierter Speicherschutz Schutz von I/O-Ports pro Task Ausführung von im 32-Bit Legacy Mode in einem 64-Bit-System Kaum genutzte IA-32-Features wurden in amd64 entfernt Segmentierung (viele Systeme nutzen einen flachen Adressaum) Task-Wechsel in Hardware Dennoch: konsequente Kompatibilität mit älteren Prozessorversionen Stichwort Legacy / Virtual 886 Mode, PIC und A2 Gate! 16. Nov 217 Betriebssystembau: 6-Das Programmiermodell der x86_64-architektur 42