Schutzkonzepte Interrupts

Vorlesung Betriessysteme - Lernkarte Interrupts

Vorlesung Betriessysteme - Lernkarte Interrupts


F. G.
Diese Lernkarten behandeln fortgeschrittene Konzepte zu Interrupts und deren Verarbeitung im universitären Informatikbereich. Sie decken Themen wie Interrupt-Service-Routinen (ISR), Interrupt-Request-Level (IRQL), den Wechsel zwischen User- und Kernelmode sowie die Verarbeitung von Hardware- und Softwareinterrupts ab. Anwendungen greifen über den Kernel auf die Hardware zu, wobei Systemaufrufe und Interrupts eine zentrale Rolle spielen. Diese Karteikarten sind besonders nützlich für Studierende, die ein tiefes Verständnis der Interrupt-Verarbeitung und deren Integration in Betriebssysteme erlangen möchten.
Karten
17
Lernende
5
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
18.06.2016 / 28.06.2023

Lernkarten

Worüber greifen Anwendungen auf die Hardware zu?

Über den Kernel

Was ist der Kernelspace?

Der für den Kernel reservierte Bereich im Arbeitsspeicher.

Wie sehen die Schutzringe bei der x86-Architektur aus?

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.)

Welche Arten von Interrupts gibt es? (Diagramm)

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)

  1. IRQ - Unterbrechungsaufforderung
  2. Prozessor hält den aktuellen Thread an
  3. Prozessor speichert den Status des Prozesses
  4. Der Interrupt-Vektor wird geladen (enthält Startadresse der ISR)
  5. Die ISR wird ausgeführt / der Interrupt wird abgearbeitet
  6. Interrupt Acknowledge (Rückmeldung Interrupt bearbeitet)
  7. 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?

  1. IRQ geht ein
  2. Wchsel in den Kernelmodus
  3. Register wird gesichert
  4. ISR wird ausgeführt
  5. Auswahl des nächsten Prozesses
  6. 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.

Lernen