Interruptverarbeitung in Betriebssystemen

Sommersemester 2015 Prof. Dr. Peter Mandl

Prof. Dr. Peter Mandl Seite 1 Gesamtüberblick

1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen 5. Prozesse und Threads 6. CPU-Scheduling 7. Synchronisation und Kommunikation Interruptklassen 8. Speicherverwaltung

9. Geräte- und Dateiverwaltung Asynchrone Synchrone Interrupts (nicht vorhersehbar und auch (vorhersehbar und auch 10. Betriebssystemvirtualisierung nicht reproduzierbar) reproduzierbar)

Exceptions Systemcalls (Software-Interrupts) Unterbrechung vor der Ausführung, Faults z. B. Page Fault = Seitenfehler

Unterbrechung vor der Ausführung, Traps z. B. Division durch 0

Prof. Dr. Peter Mandl Seite 2 Zielsetzung

. Konzepte und Abläufe der Interruptverarbeitung in Betriebssystemen kennenlernen und verstehen

. Unterscheidung der verschiedenen - 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) Gerät 1 while() { Ready-Bit for (alle Geräte) { if (Gerät[i].Ready-Bit == 1 ) { CPU Gerät 2 doAction(); Ready-Bit } … } } Gerät n Ready-Bit = 1 bedeutet, Gerät ist bereit, es sind Ready-Bit z.B. Daten abzuholen

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 Synchrone Interrupts (nicht vorhersehbar und auch (vorhersehbar und auch nicht reproduzierbar) reproduzierbar)

Systemcalls Exceptions (auch als Traps oder Software- Interrupts bezeichnet)

Faults Unterbrechung vor der Ausführung, z.B. Page Fault = Seitenfehler

Unterbrechung nach der Ausführung, Traps 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)

1: Gerät ist fertig Interrupt Festplatte 2: Interrupt Controller Clock CPU 3: CPU-Handling 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  Bei Multiprozessoren bzw. Mehrkernprozessoren: nein IRQ ja  Dispatching eines Prozessors/Kerns Programmzähler notwendig, um anstehenden Interrupt auf Startadresse der ISR setzen 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 256 IVT-Einträge für Exceptions, Systemcalls (Traps) und Geräteinterrupts

IVT IRQInt-Nr 0 Interruptvektor 1 Interruptvektor SVR 0 2 3 SVR 1 …

Prof. Dr. Peter Mandl Seite 12 Interrupt-Service-Routine (ISR)

Interrupt Anwendungsprogramm 1: Interrupt Usermodus Controller 2:

Ack Verteiler (Interrupt-Bearbeitung) 3: 4: Interrupt-Vektor- 5: - E/A-Geräte benachrichtigen die Tabelle CPU, wenn sie einen Dienst Kernelmodus 01 ISR1 02 benötigen 03 ISR2 ISR3 - Dadurch kann die CPU maximal n ausgenutzt werden, da sie parallel zur Ein-/Ausgabe etwas anderes ISRn machen kann

Adressraum ISR = Interrupt Service Routine

Prof. Dr. Peter Mandl Seite 13 Interrupt-Bearbeitung: Ablauf

Beliebiges ISR Programm Normale Programmbearbeitung Zeitpunkt des Interrupt

Laufender Maschinenbefehl wird noch zu Ende geführt. Registersatz wird auf den Stack gerettet. Adressierung über Interrupt- Vektortabelle Niedriger priorisierte Inter- rupts werden deaktiviert. ...

Alten Zustand wieder- Rückkehr Normale Programmbearbeitung herstellen (Register,...). fortsetzen

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

IRQ 0 Gerät 1 D0-D7 Interrupt- Handling

IRQ 1 Betriebs- Gerät 2 CPU 8259A system ...

INT IRQ 7 Gerät 8 INTA

Prof. Dr. Peter Mandl Seite 16 Beispiel: Intel 8259A-Controller

 Innenleben Intel 8259A, vereinfacht

8259A Interrupt- IRQ0-7 D0-D7 In-Service- Daten- Request- Register (ISR) bus- Register(IRR) Puffer

CPU

Interrupt-Masken- Register (IMR) INTR

Steuerlogik INTA

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 08 real time clock 09 s/w - int a0h IRQ 2 D0 – D7 10 reserved Intel 8259 Intel 8259 11 reserved (Adressierung des Interrupts) Master Slave 12 PS/2 mouse 13 coprocessor CPU INTR 14 hard disk IMR 15 reserved

03 serial 2 04 serial 1 05 parallel 2 INTA = Interrrupt Acknowledge INTR = Interruptmeldung an CPU 06 floppy IMR = Interrupt Mask Register 07 parallel 1 IRQ = Interrupt Request

 PIC = Programmable Interrupt Controller

 APIC = Advanced PIC

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

Kommunikationssystem

Local APIC Kern 1

Local APIC Kern 2 Interrupt Interrupt Dispatcher Interrupts (z.B. I/O-APIC Controller … im Chipsatz)

Local APIC Kern n

Mehrkernprozessor

Prof. Dr. Peter Mandl Seite 19 Fallbeispiel: Windows, Interrupt-Bearbeitung (1)

Interrupt-Service-Routinen

Asynchrone Interrupts

Ausnahme- Ausnahme- Hardware-Interrupt InHtearrnudplet-rService- Handler E/A-Geräte, Taktgeber Routine

Synchrone Interrupts

Ausnahme- Ausnahme- Systemcall Handler SyHsatenmdldeirenste

Ausnahme- Ausnahme- Exceptions (Traps, Abort) Ausnahmen HAaunsdnlearhme- verteiler Handler Busfehler, Stromausfall, Handler Division durch 0,...

Seitenfehler- Page Faults 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 Ausführung 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)

Interrupt Controller Interrupt-Verteiler-Code Interrupt-Service- Gerät (8259A PIC) im I/O-System Routine (im Treiber)

1: Interrupt Request (IRQ) IRQ  Int-Nr.

2: Int-Nr. weiterreichen 3: IRQL ermitteln und ISR- Adresse lesen 4: Interrupt Service Routine aufrufen 5: DPC-Eintrag Erzeugen und in IRQL als Index Queue einstellen

Interrupt I/O-System (Datenstrukturen Dispatch Table und Code) 01 02 03 Adresse  DPC = Deferred (ISR) (verzögerter) n ... Procedure Call ...

...  Abarbeitung in IRQL 2

Prof. Dr. Peter Mandl Seite 24 IRQL-Nutzung am Beispiel, Singleprozessor

IRQL DPC- Queue- Device3- 5 ISR 3 Anker Level DPC-Objekt IRQL 0-4 aus ISR3 maskiert Device2- 4 ISR 2 ISR 2 Level IRQL 0-3 DPC-Objekt aus ISR2 Device1- maskiert Level 3

Dispatch- DPC-Bearbeitung + Dispatching Level 2

APC- Level 1

Passive- Thread1 aktiv Thread1 aktiv Level t

Interrupt von Interrupt von Device 2 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; // IRQ-Status hw_irq_controller *handler; // Zeiger auf verantwortlichen // Controller struct irqaction *action; // Zeiger auf Action-Liste unsigned int depth; // Spezielles Feld zum Aktivieren und // Deaktivieren des IRQ } ____cacheline_aligned irq_desc_t;

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; // Eigenschaften des Interrupt-Handlers const char *name // Name des Interrupt-Handlers void *dev_id; // Eindeutige Identifikation des // Interrupt-Handlers struct irqaction *next; // Verweis auf nächsten Eintrag in der // Action-Liste };

Prof. Dr. Peter Mandl Seite 31

Fallbeispiel: Linux, Datenstrukturen im Kernel

Abstrakter Interrupt- Controller (konkret Interrupt-Vektor- z.B. PIC8259A) Tabelle hw_irq_controller irq_dec_t *handler irq_dec_t .... *enable ... *disable irq_dec_t *startup ... *action

Action-Descriptor irqaction *next irqaction .... *handler name *handler *next ... 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 Synchrone Interrupts (nicht vorhersehbar und auch (vorhersehbar und auch nicht reproduzierbar) reproduzierbar)

Systemcalls Exceptions (Software-Interrupts)

Faults Unterbrechung vor der Ausführung, z.B. Page Fault = Seitenfehler

Unterbrechung nach der Ausführung, Traps 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 (SVC) - 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 Programm- System Programm- Code eines instruktionen Call instruktionen Anwendungsprogramms

Softwareinterrupt Zurück vom Kernel Mode Parameter auf Stack legen Ergebnis vom Stack holen PC Adresse (Systemroutine) PC Adresse (nach Systemcall) Umschalten auf Kernel Mode Umschalten auf User Mode

Betriebssystemkern

Prof. Dr. Peter Mandl Seite 37

Systemcall-Ablauf unter Linux/x86-CPUs (1)

x86-Befehl: int n // Aufruf des Interrupts mit der Interrupt-Vektor-Nummer n int $0x80 // 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 // Parameter für Open in Register laden mov ... mov $0x5, %eax // Systemcall-Code für open-Funktion int $0x80 // Systemcall ...... iret // 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

Systemcall-Tabelle (syst_call_table) … Verteiler

… … 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

Anwendungs- Kernel- Systemcall-Impl. C-Library programm Verteilroutine für open()

1: open()

2: int 0x80 (EAX=5,...)

3: Adresse open-Routine = Systemcall-Tabelle[EAX]

4: Aufruf der open-Routine 5: Open- Ausführung 6: return

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

 SVC-Befehl in ARM-Architektur - früher SWI = Software-Interrupt

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, Usermodus sysenter Systemdienst- schnittstelle Kernelmodus

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 Computersysteme  Entwicklung von Betriebssystemen  Architekturansätze  Interruptverarbeitung in Betriebssystemen 5. Prozesse und Threads 6. CPU-Scheduling 7. Synchronisation und Kommunikation 8. Speicherverwaltung 9. Geräte- und Dateiverwaltung 10. Betriebssystemvirtualisierung

Prof. Dr. Peter Mandl Seite 48