Betriebssysteme. Interruptverarbeitung in Betriebssystemen. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.



Ähnliche Dokumente
Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

LPT1 Anschluss mit PCMCIA Karte

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

i386 Interrupt-Deskriptortabelle (IDT)

2. Word-Dokumente verwalten

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Formular»Fragenkatalog BIM-Server«

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Übung zu Betriebssystembau (Ü BS)

BANKETTprofi Telefonschnittstelle

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

Anleitung zur Nutzung des SharePort Utility

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Artikel Schnittstelle über CSV

Windows 10 > Fragen über Fragen

Proseminar: Konzepte von Betriebsystem-Komponenten (KVBK)

Einführung in die technische Informatik

Für Windows 7 Stand:

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

PV-S1600 Betriebssystem-Aktualisierungsvorgang. Sie müssen die beiden folgenden Schritte ausführen,

Verwendung des Terminalservers der MUG

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Leitfaden zum Sichern einer Festplatte als Image mit der System Rescue CD

Starten der Software unter Windows XP

Installation OMNIKEY 3121 USB

Handbuch USB Treiber-Installation

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Installationshandbuch. Software Version 3.0

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

SICHERN DER FAVORITEN

3.14 Die Programmieroberfläche Programmierung

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

tentoinfinity Apps 1.0 EINFÜHRUNG

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2)

Installationshinweise BEFU 2014

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

MSDE 2000 mit Service Pack 3a

AutoTexte und AutoKorrektur unter Outlook verwenden

Überprüfung der digital signierten E-Rechnung

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

Starten der Software unter Windows 7

Interruptverarbeitung

Der Kalender im ipad

Dienstleistungen Zentrum Medienbildung. Anleitung für das Überspielen von Videomaterial einer SD- und HDD-Kamera via USB

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Erstellen einer PostScript-Datei unter Windows XP

Dokumentation IBIS Monitor

iphone-kontakte zu Exchange übertragen

Step by Step Webserver unter Windows Server von Christian Bartl

Einleitung. Hauptteil. Wir befinden uns nun im Demoarchiv.

Windows 7 Winbuilder USB Stick

1. Einführung. 2. Weitere Konten anlegen

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Schnelleinstieg AUSWERTUNGEN ONLINE (Steuerberater-Version)

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

gibt es verschiedene Betriebssysteme die je nach Gerät und Nutzer installiert werden können.

Excel Auswertungen in XAuftrag / XFibu

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Übung - Konfigurieren einer Windows-XP-Firewall

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

METTLER TOLEDO USB-Option Installation der Treiber unter Windows XP

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

System-Update Addendum

Erklärung zum Internet-Bestellschein

Leitfaden Meine Daten ändern

Sicherer Datenaustausch mit EurOwiG AG

Allgemeine Anleitung Treiber für CP2102

1 Anschließen der Wiegeanzeige an den PC

MailUtilities: Remote Deployment - Einführung

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

4D Server v12 64-bit Version BETA VERSION

DOKUMENTATION PASY. Patientendaten verwalten

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Leitfaden zur Installation von Bitbyters.WinShutdown

IntelliRestore Seedload und Notfallwiederherstellung

Übung - Datenmigration in Windows 7

Installationsanleitung INFOPOST

Schulberichtssystem. Inhaltsverzeichnis

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Web Interface für Anwender

Anleitung VR-NetWorld Software Erfassen von SEPA-Lastschriften und Mandaten (Stand: )

EASYINSTALLER Ⅲ SuSE Linux Installation

2.1 Lightning herunterladen Lightning können Sie herunterladen über:

Einrichtung -Account

Backup der Progress Datenbank

Interrupt-Programmierung

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch für Direkt-Digital-Vario. Firmware ab Hardware 01 Seriennummer ab 0003

Transkript:

Interruptverarbeitung in n Sommersemester 2014 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1

Gesamtüberblick 1. Einführung in 2. Betriebssystemarchitekturen und Betriebsarten 3. Interruptverarbeitung in n 4. Prozesse und Threads 5. CPU-Scheduling 6. Synchronisation und Kommunikation 7. Speicherverwaltung 8. Geräte- und Dateiverwaltung 9. Betriebssystemvirtualisierung Interruptklassen Asynchrone Interrupts (nicht vorhersehbar und auch nicht reproduzierbar) Synchrone Interrupts (vorhersehbar und auch reproduzierbar) Exceptions Systemcalls (Software-Interrupts) Faults Unterbrechung vor der Ausführung, z.b. Page Fault = Seitenfehler Traps Unterbrechung nach der Ausführung, z.b. Division durch 0 Prof. Dr. Peter Mandl Seite 2

Zielsetzung Konzepte und Abläufe der Interruptverarbeitung in n kennenlernen und verstehen Unterscheidung der verschiedenen Interrupt- Klassen vornehmen können Ablauf eines asynchronen Interrupts erläutern können Ablauf eines (synchronen) Systemcalls erläutern können Prof. Dr. Peter Mandl Seite 3

Überblick 1. Begriffe und Klassifizierung 2. Zusammenspiel der Komponenten 3. Systemdienste und Systemcalls Prof. Dr. Peter Mandl Seite 4

Polling Polling => Busy Waiting (aktives Warten) while() { Gerät 1 Ready-Bit for (alle Geräte) { } if (Gerät[i].Ready-Bit == 1 ) { } doaction(); CPU Gerät 2 Ready-Bit } Ready-Bit = 1 bedeutet, Gerät ist bereit, es sind z.b. Daten abzuholen Gerät n Ready-Bit Prof. Dr. Peter Mandl Seite 5

Interrupt Interrupt = Unterbrechung = Trap Abgrenzung zu Polling - Kein aktives Abfragen von Ereignisquellen Gründe für Interrupts: - Betriebssystembedingungen - Asynchrone Ereignisse Verursacher: Hardware oder Software Abschaltung (Maskierung) von Interrupts ist möglich, sollte aber für sehr kurze Zeit sein Manchmal unbedingt erforderlich (siehe später Interrupt Service Routinen) Prof. Dr. Peter Mandl Seite 6

Synchron und asynchron Synchrone Interrupts: Von der CPU ausgelöste Ausnahmen (für das laufende Programm gedacht) - Division durch 0 - Speicherzugriffsverletzung Asynchrone Interrupts: Treten unabhängig davon auf, was das System gerade ausführt - Netzwerkadapter meldet ankommende Nachricht - Plattenspeicher meldet Zustellung eines Blocks Prof. Dr. Peter Mandl Seite 7

Interrupt-Klassifizierung Interruptklassen Asynchrone Interrupts (nicht vorhersehbar und auch nicht reproduzierbar) Synchrone Interrupts (vorhersehbar und auch reproduzierbar) Exceptions Systemcalls (auch als Traps oder Software- Interrupts bezeichnet) Faults Unterbrechung vor der Ausführung, z.b. Page Fault = Seitenfehler Traps Unterbrechung nach der Ausführung, z.b. Division durch 0 Prof. Dr. Peter Mandl Seite 8

Überblick 1. Begriffe und Klassifizierung 2. Zusammenspiel der Komponenten 3. Systemdienste und Systemcalls Prof. Dr. Peter Mandl Seite 9

Interrupt-Bearbeitung: Zusammenspiel Interrupts führen dazu, dass Code außerhalb des normalen Programmflusses ausgeführt wird Steuerung wird an eine definierte Position im Kernel übergeben Interrupt-Service- Routine (ISR) CPU 2: Interrupt 3: CPU-Handling Interrupt Controller 1: Gerät ist fertig Festplatte Clock Tastatur Drucker Bus Prof. Dr. Peter Mandl Seite 10

Interrupt-Bearbeitung: Befehlszyklus Prüfung, ob Interrupt anliegt, ist Teil des Befehlszyklus Prüfung am Ende eines Maschinenbefehls Fetch (Befehl aus Speicher holen) Execute (Befehl ausführen) Prüfung, ob Interrupt vorliegt nein IRQ ja Programmzähler auf Startadresse der ISR setzen Bei Multiprozessoren bzw. Mehrkernprozessoren: Dispatching eines Prozessors/Kerns notwendig, um anstehenden Interrupt zu bearbeiten Prof. Dr. Peter Mandl Seite 11

Interrupt-Vektor-Tabelle und Adressierung Interrupt Request (IRQ) wird vom Gerät gesendet und identifiziert das Gerät Abbildung IRQ Int-Nr durch Hardware in einem Interrupt Controller Int-Nr ist der Index für die Interrupt-Vektor-Tabelle (IVT) Die IVT wird über die CPU adressiert IVT-Aufbau durch Prozessor vorgegeben: Bei Intel 256 IVT-Einträge für Exceptions, Systemcalls (Traps) und Geräteinterrupts IRQ Int-Nr 0 1 2 3 IVT Interruptvektor Interruptvektor SVR 0 SVR 1 Prof. Dr. Peter Mandl Seite 12

Interrupt-Service-Routine (ISR) Usermodus Anwendungsprogramm 1: Interrupt Interrupt Controller 2: Kernelmodus 01 02 03 n Verteiler (Interrupt-Bearbeitung) 3: Interrupt-Vektor- Tabelle ISR1 ISR2 ISR3 ISRn 5: 4: Ack - E/A-Geräte benachrichtigen die CPU, wenn sie einen Dienst benötigen - Dadurch kann die CPU maximal ausgenutzt werden, da sie parallel zur Ein-/Ausgabe etwas anderes machen kann Adressraum ISR = Interrupt Service Routine Prof. Dr. Peter Mandl Seite 13

Interrupt-Bearbeitung: Ablauf Beliebiges Programm ISR Normale Programmbearbeitung Zeitpunkt des Interrupt Laufender Maschinenbefehl wird noch zu Ende geführt. Registersatz wird auf den Stack gerettet. Normale Programmbearbeitung fortsetzen Adressierung über Interrupt- Vektortabelle Rückkehr Niedriger priorisierte Interrupts werden deaktiviert.... Alten Zustand wiederherstellen (Register,...). Prof. Dr. Peter Mandl Seite 14

Beispiel: Intel 8259A-Controller Intel 8259A PIC = Programmable Controller = Multiplexer für Hardware-Interrupts - Ein integrierter Schaltkreis zur Verwaltung mehrerer Hardware- Interrupts - Aufgabe: Überwacht Interrupt-Leitungen (IRQ), speichert sie und gibt sie an die CPUs weiter - 8 Interrupt-Eingänge: Eingang 0 hat höchste Priorität - Seit IBM PC XT eingesetzt - Oft wurden zwei PICs in einem PC genutzt Neuere Versionen - APIC = Advanced PIC mit 256 Interrupt-Eingängen wird bei x86- Architekturen eingesetzt - SAPIC = Streamlined Advanced Programmable Interrupt Controller wird bei IA64-Architekturen eingesetzt Prof. Dr. Peter Mandl Seite 15

Gerät - Interrupt-Controller - CPU - Betriebssystem Übertragung der Interrupt-Request-Nummer, Mapping IRQ Int-Nr. D0-D7 IRQ 0 Gerät 1 Interrupt- Handling Betriebssystem CPU 8259A IRQ 1 Gerät 2... INT INTA IRQ 7 Gerät 8 Prof. Dr. Peter Mandl Seite 16

Beispiel: Intel 8259A-Controller Innenleben Intel 8259A, vereinfacht 8259A D0-D7 Datenbus- Puffer In-Service- Register (ISR) Interrupt- Request- Register(IRR) IRQ0-7 CPU INTR INTA Steuerlogik Interrupt-Masken- Register (IMR) Prof. Dr. Peter Mandl Seite 17

Beispiel: Intel 8259A-Controller kaskadiert CPU INTA (Bearbeitung durch CPU bestätigt) IRQ 0 0 timer output 1 keyboard CPU D0 D7 (Adressierung des Interrupts) CPU INTR Intel 8259 Master IMR IRQ 2 Intel 8259 Slave 08 real time clock 09 s/w - int a0h 10 reserved 11 reserved 12 PS/2 mouse 13 coprocessor 14 hard disk 15 reserved 03 serial 2 INTA = Interrrupt Acknowledge INTR = Interruptmeldung an CPU IMR = Interrupt Mask Register IRQ = Interrupt Request PIC = Programmable Interrupt Controller APIC = Advanced PIC 04 serial 1 05 parallel 2 06 floppy 07 parallel 1 Prof. Dr. Peter Mandl Seite 18

Interrupt-Dispatching bei Mehrkernprozessoren Dispatching-Algorithmus im Interrupt-Dispatcher wählt einen Kern aus, der den Interrupt bearbeiten soll Kern 1 Bussystem Kern 2 Interrupt Dispatcher Interrupt Controller Interrupts Kern n Mehrkernprozessor Prof. Dr. Peter Mandl Seite 19

Fallbeispiel: Windows, Interrupt-Bearbeitung (1) Interrupt-Service-Routinen Asynchrone Interrupts Hardware-Interrupt E/A-Geräte, Taktgeber Synchrone Interrupts Systemcall Ausnahme- Ausnahme- Handler Ausnahme- Handler Handler Ausnahme- Ausnahme- Interrupt-Service- Handler Handler Routine Ausnahme- Ausnahme- Handler Systemdienste Handler Exceptions (Traps, Abort) Busfehler, Stromausfall, Division durch 0,... Ausnahmen verteiler Page Faults Seitenfehler- Handler Prof. Dr. Peter Mandl Seite 20

Fallbeispiel: Windows, Interrupt-Bearbeitung (2) Windows hat eine eigene Interrupt-Verwaltung Über sog. Interrupt Request Levels (IRQL) ordnet der Kernel den Interrupts eigene Prioritäten zu Nur Interrupts mit höherem IRQL können Interruptbearbeitung auf niedrigerem IRQL unterbrechen Über eine Interrupt Dispatch Tabelle (IDT) wird festgehalten, welche ISR für welchen Interrupt zuständig ist Prof. Dr. Peter Mandl Seite 21

Fallbeispiel: Windows, Interrupt-Bearbeitung (3) Interrupt Request Levels (IRQLs) in der IA32- Architektur IRQL Bezeichnung Beschreibung 31 High-Level Maschinen-Check und katastrophale Fehler 30 Power-Level Strom/Spannungsproblem 29 IPI-Level Interprocessor Interrupt 28 Clock-Level Clock-Interrupt 27 Sync-Level Prozessorübergreifende Synchronisation 3-26 Device-Levels Abbildung auf IRQs der Geräte je nach verbautem Interrupt-Controller 2 Dispatch/DPC-Level Dispatching und Ausfphrung von Deferred Procedure Calls 1 APC-Level Ausführung von Asynchronous Procedure Calls nach Ein-/Ausgabe-Requests 0 Passive-Level Normale Threadausführung Prof. Dr. Peter Mandl Seite 22

Fallbeispiel: Windows, Interrupt-Bearbeitung (4) Interrupt Request Levels (IRQLs) in der x64- und der IA64-Architektur IRQL Bezeichnung Beschreibung 15 High-Level Maschinen-Check und katastrophale Fehler 14 Power-Level Strom/Spannungsproblem und Interprozessor-Interrupt 13 Clock-Level Clock-Interrupt 12 Synch-Level Prozessorübergreifende Synchronisation 3-11 Device-Levels Abbildung auf IRQs der Geräte je nach verbautem Interrupt-Controller 2 Dispatch/DPC-Level Dispatching und Ausführung von Deferred Procedure Calls 1 APC-Level Ausführung von Asynchronous Procedure Calls 0 Passive-Level Normale Threadausführung Prof. Dr. Peter Mandl Seite 23

Fallbeispiel: Windows, Interrupt-Bearbeitung (5) Gerät Interrupt Controller (8259A PIC) IRQ-Code im I/O-System Interrupt-Service- Routine (im Treiber) 1: Interrupt Request (IRQ) IRQ Int-Nr. 2: Int-Nr. weiterreichen IRQL als Index 3: IRQL ermitteln und ISR- Adresse lesen 4: Interrupt Service Routine aufrufen 5: DPC-Eintrag Erzeugen und in Queue einstellen DPC = Deferred (verzögerter) Procedure Call Abarbeitung in IRQL 2 Interrupt Dispatch Table 01 02 03 n I/O-System (Datenstrukturen und Code) Adresse (ISR)......... Prof. Dr. Peter Mandl Seite 24

IRQL-Nutzung am Beispiel, Singleprozessor IRQL Device3- Level Device2- Level Device1- Level 5 4 3 ISR 2 IRQL 0-3 maskiert ISR 3 IRQL 0-4 maskiert ISR 2 DPC- Queue- Anker DPC-Objekt aus ISR3 DPC-Objekt aus ISR2 Dispatch- Level 2 DPC-Bearbeitung + Dispatching APC- Level 1 Passive- Level Thread1 aktiv Thread1 aktiv t Interrupt von Device 2 Interrupt von Device 3 Prof. Dr. Peter Mandl Seite 25

Fallbeispiel: Windows, Interrupt-Bearbeitung (6) Bei x86-systemen unterbricht der Interrupt- Controller (meist 8259-Baustein) die CPU auf einer Leitung (Hardware) Die CPU fragt den Controller ab, um eine Unterbrechungsanforderung (IRQ) zu erhalten (Hardware) Interrupt-Controller übersetzt IRQ in eine Interrupt- Nummer (Hardware) Aus Interrupt-Nummer wird IRQL ermittelt (Software, Windows) Die IDT enthält Adresse der anzustoßenden Interruptverteilroutine Prof. Dr. Peter Mandl Seite 26

Fallbeispiel: Windows, Interrupt-Bearbeitung (7) Interruptverteilroutine wird aufgerufen und ermitteln die Adresse der ISR ISR wird aufgerufen ISR erzeugt meist nur ein DPC-Objekt (Deferred Procedure Call) und hängt es in eine DPC-Queue ein - Kurze Bearbeitungszeiten in der ISR wird angestrebt - Kurze Bearbeitung in hoher Prioritätsstufe (IRQL) - Systembelastung gering halten DPC-Routine wird dann später mit niedrigerer Priorität (IRQL = 2) aufgerufen und ist unterbrechbar(er) Prof. Dr. Peter Mandl Seite 27

Fallbeispiel: Windows, APC-Bearbeitung (8) APC = Asynchronous Procedure Call Anwendungsbeispiel: - Bei read-aufrufen an eine Festplatte wird die Threadbearbeitung zunächst unterbrochen - Nachdem der read-aufruf vom Kernel abgearbeitet wurde, wird ein APC-Objekt erzeugt und in die APC-Queue des rufenden Threads eingehängt - Die nachfolgende Bearbeitung der APC-Queue erfolgt dann mit IRQL 1 Je eine APC-Queue pro Thread im Kernel- und im Usermodus, je nachdem, von wo der read-aufruf abgesetzt wurde Hinweis: Threads sind leichtgewichtige Prozesse (später mehr dazu) Prof. Dr. Peter Mandl Seite 28

Fallbeispiel: Linux Linux nutzt auch eine Tabelle mit Referenzen auf die Interrupt-Handler (ISR) Jeder Interrupt-Request wird auf eine Interrupt- Nummer (= Index in der Tabelle) abgebildet Meist wird in der ISR nur ein Tasklet erzeugt Tasklets dienen der schnellen Behandlung von Interrupts (ähnlich dem Windows-DPC- Mechanismus) Prof. Dr. Peter Mandl Seite 29

Fallbeispiel: Linux, Interrupt-Vektor-Tabelle Die Interrupt-Vektor-Tabelle ist im System wie folgt definiert: extern irq_desc_t irq_desc [NR_IRQS]; Aufbau eines Tabelleneintrags: typedef struct { unsigned int status; hw_irq_controller *handler; struct irqaction *action; unsigned int depth; } cacheline_aligned irq_desc_t; // IRQ-Status // Zeiger auf verantwortlichen // Controller // Zeiger auf Action-Liste // Spezielles Feld zum Aktivieren und // Deaktivieren des IRQ Prof. Dr. Peter Mandl Seite 30

Fallbeispiel: Linux, Action-Liste action = Action-Descriptor, Struktur mit Verweis auf eigentliche ISR Verkettete Liste struct irqaction { // Verweis auf Interrupt-Service- // Routine void (*handler)(int, void *, struct pt_regs *); }; unsigned long flags; const char *name void *dev_id; struct irqaction *next; // Eigenschaften des Interrupt-Handlers // Name des Interrupt-Handlers // Eindeutige Identifikation des // Interrupt-Handlers // Verweis auf nächsten Eintrag in der // Action-Liste Prof. Dr. Peter Mandl Seite 31

Fallbeispiel: Linux, Datenstrukturen im Kernel Interrupt-Vektor- Tabelle irq_dec_t irq_dec_t... irq_dec_t *handler... *action Abstrakter Interrupt- Controller (konkret z.b. PIC8259A) hw_irq_controller *enable *disable *startup... Action-Descriptor irqaction *next *handler name *next... *handler irqaction ISR... Prof. Dr. Peter Mandl Seite 32

Überblick 1. Begriffe und Klassifizierung 2. Zusammenspiel der Komponenten 3. Systemdienste und Systemcalls Prof. Dr. Peter Mandl Seite 33

Wiederholung: Interrupt-Klassifizierung Interruptklassen Asynchrone Interrupts (nicht vorhersehbar und auch nicht reproduzierbar) Synchrone Interrupts (vorhersehbar und auch reproduzierbar) Exceptions Systemcalls (Software-Interrupts) Faults Unterbrechung vor der Ausführung, z.b. Page Fault = Seitenfehler Traps Unterbrechung nach der Ausführung, z.b. Division durch 0 Prof. Dr. Peter Mandl Seite 34

Dienste des Betriebssystems Anwendungsprogramme nutzen die Dienste des Betriebssystems, die über sog. Systemcalls aufgerufen werden Wohldefinierte Einsprungpunkte ins Betriebssystem Spezieller Aufrufmechanismus für einen Systemcall - Software-Interrupt (als Trap bezeichnet) oder Supervisor Call - Vorteil: Anwendungsprogramm muss Adressen der Systemroutinen nicht kennen Alle Systemcalls zusammen bilden die Schnittstelle der Anwendungsprogramme zum Betriebssystemkern - Zugang zu Systemcalls wird meist in Bibliotheken bereitgestellt Prof. Dr. Peter Mandl Seite 35

Umschaltung in den Kernelmodus Systemcalls werden im Kernelmodus ausgeführt Beim Aufruf wird durch den Prozessor vom Usermodus in den Kernelmodus umgeschaltet Anwendungssoftware,... open() close() mount() Betriebssystemkern Prof. Dr. Peter Mandl Seite 36

Systemcall-Ablauf Befehlsfolge eines Systemaufrufs t Programminstruktionen System Call Programminstruktionen Code eines Anwendungsprogramms Softwareinterrupt Parameter auf Stack legen PC Adresse (Systemroutine) Umschalten auf Kernel Mode Zurück vom Kernel Mode Ergebnis vom Stack holen PC Adresse (nach Systemcall) Umschalten auf User Mode Betriebssystemkern Prof. Dr. Peter Mandl Seite 37

Systemcall-Ablauf unter Linux/x86-CPUs (1) x86-befehl: int n int $0x80 // Aufruf des Interrupts mit der Interrupt-Vektor-Nummer n // Trap, Systemcall C-Code: main() { open( mandl.txt,1); // Datei zum Lesen öffnen } Maschinencode: (gcc-compiler):.lco:.string mandl.txt.text.globl main main:... call open... Prof. Dr. Peter Mandl Seite 38

Systemcall-Ablauf unter Linux/x86-CPUs (2) Open-Routine in der Linux C-Library: libc_open:... mov 0xc(%esp,1), %ecx mov... mov $0x5, %eax int $0x80...... iret // Parameter für Open in Register laden // Systemcall-Code für open-funktion // Systemcall // zurück zum Aufrufer Interrupt-Vektor-Nummer $0x80 ist Index für die Adressierung der Interrupt-Vektor-Tabelle (IVT) Prof. Dr. Peter Mandl Seite 39

Systemcall-Ablauf unter Linux/x86-CPUs (3) int $0x80 Usermodus IVT Kernelmodus Verteiler Systemcall-Tabelle (syst_call_table) SVR IVT = Interrupt-Vektor-Tabelle, SVR = Serviceroutine, bearbeitet Systemcall Systemcall-Tabelle verweist auf Implementierungen der Systemdienste Prof. Dr. Peter Mandl Seite 40

Systemcall-Ablauf unter Linux: Sequenzdiagramm Anwendungsprogramm C-Library Kernel- Verteilroutine Systemcall-Impl. für open() 1: open() 2: int 0x80 (EAX=5,...) 3: Adresse open-routine = Systemcall-Tabelle[EAX] 4: Aufruf der open-routine 6: return 5: Open- Ausführung 7: return 8: return Usermodus Kernelmodus Systemcall-Tabelle enthält alle Verweise auf Systemcalls (struct sys_call_table) Prof. Dr. Peter Mandl Seite 41

Vergleichbare Befehle in anderen Prozessoren EPC-Befehl = Enter Privileged Mode in IA64 - Übergabe von max. 8 Parametern in Registern und die restlichen Parameter im Kernelstack syscall-befehl in x64 - Übergabe der Systemcall-Nr. im EAX-Register - Max. 8 Parameter in Registern und die restlichen Parameter im Kernelstack sysenter-befehl in x86 Pentium II Prof. Dr. Peter Mandl Seite 42

Systemcalls bei POSIX Systemcalls sind standardisiert in IS 9945-1 POSIX-Konformität erfüllen die meisten Unix- Derivate Beispiele: - fork(): Prozesserzeugung - execve(): Aufruf eines Programms - exit(): Beenden eines Prozesses - open(): Datei öffnen - close(): Datei schließen - read(): Daten aus Datei lesen - write(): Daten in Datei schreiben POSIX = Portable Operating System Unix Prof. Dr. Peter Mandl Seite 43

Systemcalls bei Win32-API In Windows-Systemen sind die Systemcalls in der Windows-API (Application Programming Interface) definiert Es gibt einige 1000 API-Funktionen, einige davon sind Systemcalls Beispiele: - CreateProcess() Prozesserzeugung - exitprocess(): Beenden eines Prozesses - CreateFile(): Erzeugen und Öffnen einer Datei - CloseHandle(): Datei schließen - ReadFile(): Daten aus Datei lesen - WriteFile(): Daten in Datei schreiben Prof. Dr. Peter Mandl Seite 44

Systemcall-Ablauf unter Windows Windows- Anwendung Win-API int, epc, syscall, sysenter Usermodus Kernelmodus Systemdienstschnittstelle Systemservice- Dispatcher (KiSystemService) Systemservice- Routine Prof. Dr. Peter Mandl Seite 45

Überblick 1. Begriffe und Klassifizierung 2. Zusammenspiel der Komponenten 3. Systemdienste und Systemcalls Prof. Dr. Peter Mandl Seite 46

Zusammenfassung Interruptverarbeitung Polling und Interrupts Synchrone und asynchrone Interrupts Interrupt-Requests (IRQ) und Interrupt-Bearbeitung Interrupt-Vektor-Tabelle (IVT) zur Adressierung von Interrupt-Service-Routinen (ISR) für synchrone und asynchrone Interrupts Systemcalls = synchrone Software-Interrupts, (oft auch, etwas verwirrend als Traps bezeichnet) Prof. Dr. Peter Mandl Seite 47

Gesamtüberblick Einführung in Betriebssystemarchitekturen und Betriebsarten Interruptverarbeitung in n 4. Prozesse und Threads 5. CPU-Scheduling 6. Synchronisation und Kommunikation 7. Speicherverwaltung 8. Geräte- und Dateiverwaltung 9. Betriebssystemvirtualisuerung Prof. Dr. Peter Mandl Seite 48