Schutzkonzepte Interrupts
Vorlesung Betriessysteme - Lernkarte Interrupts
Vorlesung Betriessysteme - Lernkarte Interrupts
-
- 1 / 17
-
Cartes-fiches
Worüber greifen Anwendungen auf die Hardware zu?
Über den Kernel
Was ist der Kernelspace?
Der für den Kernel reservierte Bereich im Arbeitsspeicher.
Welche zwei Modi's gibt es beim ausführen von Programmen auf einem Prozessor?
Wie unterscheiden sie sich?
- Usermode
- hat eingschränkte Rechte für den Zugriff auf Hardware
- Normale Programme werden im Usermode ausgeführt
- Kernelmode
- hat Zugriff auf alle Bereiche des Systems
- z.B. zentrale Betriebssystemfunktionalitäten (IPC,Scheduling,..) laufen im Kernelmodus
Was kann geschehen, dass vom Usermode in den Kernelmode gewechselt wird? (3 Argumente)
- Hardwareintterrupt
- Softwareinterrupt (Trap, Faults)
- Systemaufrufe (read(), write(),...)
Wie funktioniert Polling?
Was sind die Vor- und Nachteile?
Die CPU fragt zyklisch Ereignisquellen ab.
+ einfach zu implementieren
- Cpu ständig beschäftigt -> langsam
- möglicherweise langsame Reaktion auf Ereignisse
Was bedeutet Interrupt (Übersetzung) und welche Arten von Interrupts gibt es?
- Unterbrechung
- Hardwareinterrupts (Signale an bestimmten CPU-Pin's)
- Softwareinterrupts (Faults oder Traps)
Was sind Interrupts, bzw was passiert bei einem Interrupt?
Interrupts sind Ereignisse (auch asynchrone), die den Prozessor seine normale Tätigkeit unterbrechen lässt.
(Asynchron bedeutet in diesem Zusammenhang, dass das laufende Programm nicht immer an der gleichen Stelle unterbrochen wird.)
Wofür stehen die Abkürzungen IRQ und ISR?
Was passiert bei einem IRQ und einer ISR?
- IRQ = Interrupt Request
- IRQ ist eine Unterbrechungsaufforderung an die CPU
- ISR = Interrupt Service Routine
- Die ISR wird bei einem Interrupt von der CPU ausgeführt
Was geschieht bei einem Interrupt, also wie wird ein Interrupt verarbeitet? (7 Schritte)
- IRQ - Unterbrechungsaufforderung
- Prozessor hält den aktuellen Thread an
- Prozessor speichert den Status des Prozesses
- Der Interrupt-Vektor wird geladen (enthält Startadresse der ISR)
- Die ISR wird ausgeführt / der Interrupt wird abgearbeitet
- Interrupt Acknowledge (Rückmeldung Interrupt bearbeitet)
- Prozessor führt vorheriges Programm fort
Was ist das IRQL?
Die Abkürzung bedeutet Interrupt Request Level.
Verschiedene Interrupts besitzen verschiedenen IRQL. Zum Beispiel MS Windows:
IRQL Bezeichnung Beschreibung
- 31 High Level katastrophaler Fehler
- 30 Power Level Strom-/Spannungsproblem
- 3-26 Device Level Abbildung auf IRQs der Geräte (besitzen interne Priorisierung)
- 0 Passive Level Normale Threads
Je höher das IRQL, desto höher priorisiert sind die Interrupts. Ein Interrupt sperrt die niedriger priorisierten Interrupts.
Wie verläuft die Interrupt-Verarbeitung unter Linux?
- IRQ geht ein
- Wchsel in den Kernelmodus
- Register wird gesichert
- ISR wird ausgeführt
- Auswahl des nächsten Prozesses
- Register wird wiederhergestellt
Wie wird die richtige ISR ausgewählt?
Vektor mit den verschiedenen IRQ liefert Startadresse einer verketteten Liste.
In der verketteten Liste stehen alle Geräte die sich den gemeinsamen Interrupt teilen. Die verkettete Liste enthält Pointer mit der entsprechende ISR.
Nenne 7 wichtige Systemaufrufe.
- Neue Prozesse starten bzw beenden
- fork()
- execve()
- exit()
- Datei öffnen/schließen (alles ist Datei)
- open()
- close()
- Dateien lesen/schreiben
- read()
- write()
Was geschieht beim ausführen der Bibliotheksfunktion "fscanf()"?
Die Anwendung im Usermode, öffnet die Bibliothek (libc.so) und gibt den Systemaufrufe "read()" an den Kernel(mode) weiter.
Die Anwendung muss wissen, wo im Kernel welche Routine gespeichert ist. Dies verletzt jedoch das Prinzip des Information Hiding.
Wie wird das Problem gelöst?
Ausweg: Bei einem Systemaufruf wird ein Softwareinterrupt (Trap) ausgelöst.
Die Interrupt-Service-Routine ist dann die gewünschte Kernelroutine
Somit muss die Anwendung nicht wissen, wo im Kernel die Routine steht.