Linux Systemarchitektur Flashcards
Was muss bei der Kernelprogrammierung beachtet werden?
- Innerhalb des Kernels stehen nur eingeschränkt
Bibliotheksfunktionen zur Verfügung. - Innerhalb des Kernels darf kein Floating-Point
verwendet werden. - Kernelcode steht nur ein eingeschränkter Stack zur
Verfügung (4–8kByte). - Kernelcode ist performance-optimiert programmiert
(Stichwort goto). - Innerhalb des Kernels gibt es keinen Speicherschutz.
Was ist ein Monolithischer Betriebssystemkern
Ein monolithischer Kernel
Speicher- und Prozessverwaltung
++ Treiber für die Hardwarekomponenten und möglicherweise weitere Funktionen direkt eingebaut sind.
Welches Scheduling kommt in Kernel zum Einsatz?
Prioritätengesteuertes Scheduling (mit Round-Robin oder FCFS).
Werden Tasks und Threads im Kernel unterstützt?
Ja
Weitere Features des Kernels
Unterstützung für unterschiedliche Systemarchitekturen und Prozessoren Speicherverwaltung Security Mechanismen - Firewall - Zugrislisten - Intrusion Detection . . . Bekannte Programmierschnistelle
Systemmerkmale aus Anwendersicht?
Zugri auf Peripherie ist auf den Dateizugri abgebildet.
3 „Dateien“ sind für jeden Rechenprozess direkt zugreifbar:
STDIN
STDOUT
STDERR
Systeminformationen und Systemzustände sind im
Proc-Filesystem abrufbar:
- cat /proc/cpuinfo
- cat /proc/interrupts
In welcher Schicht liegt das Systemcall Interface
Liegt im Kernel
Eigenschaften des Systemcall Interfaces
- Dienstzugangsschnitstelle
- Unabhängig von Programmiersprachen
- Realisiert über Sotwareinterrupt 0x80 (synchron zum
Programmablauf, Assemblerbefehl INT oder sysenter)
Argumentenübergabe über Register oder über den Stack - Alle Systemcalls unter Linux sind im Headerfile aufgeführt
Aus was besteht ein Prozess Kontrollblock
Task Prio
Quantum
Task Zustand
Machinen Zustand
Was wird in der Prozesstabelle gespeichert
Pro laufenden Prozess einen Eintrag . Diesen Eintrag nennt man Prozesskontrollblock.
beinhaltet Informationen über
Zustand des Prozesses
- seinen Befehlszähler, CPU-Register, Stackpointer
Speicherbelegung, Zustand seiner geöffneten Dateien
Welche Zustände hat ein Task?
Lauffähig, Wartend, Aktiv, Ruhend/Terminiert
Funktionen eines Gerätetreibers?
Einbindung: init_module cleanup_module probe remove Funktion APP triggered open close read write Funktion OS/HW triggered ISRs Soft IRQ Timer Kernel Threads
Was ist ein Kontext?
spezifiziert, welche Dienste und welche Ressourcen einem Codefragment zur Verfügung stehen
Darüber hinaus definiert der Kontext, ob ein Codefragment unterbrechbar ist oder nicht
Was ist der Userkontext?
Ihm stehen die Dienste des
Betriebssystems zur Verfügung, wie sie im Systemcall-Interface spezifiziert
sind. Code dieser Ebene ist jederzeit unterbrechbar. Die Unterbrechungen
finden aufgrund von Interrupts statt, sei es durch einen Hardware-Interrupt
oder einen (selbst ausgelösten) Software-Interrupt.
Was ist der Prozesskontext?
Diesem Code stehen sämtliche Funktionalitäten des Betriebssystemkerns zur
Verfügung – auch die Funktionalität, das Verarbeiten des Codes für einige Zeit anzuhalten
Warum können (Kernel-Threads und damit
auch Workqueues) nicht Daten zwischen User- und Kernelspace austauschen?
sind an keine Apps gebunden
Wie lösen Anwendungen Software Interrupts aus?
Systemcall
Nach einem Software-Interrupt wird Code auf der Kernelebene abgearbeitet.
Was ist der Kernelkontext?
Sonstige Funktionen des Betriebssystemkerns (Kernel-Threads und damit auch Workqueues) werden im Kernelkontext abgearbeitet. Funktionen in dieser
Umgebung können ebenfalls schlafen, da sie aber an keine Applikation gebunden sind, können Sie keine Daten zwischen User- und Kernelspace
austauschen.
Was ist der Interruptkontext?
stehen dem Code nicht alle Dienste des Betriebssystemkerns zur Verfügung. Funktionen in
diesem Kontext können sich nicht schlafen legen. Sie dürfen auch keine
anderen Funktionen wie beispielsweise kmalloc aufrufen, die ebenfalls Code
schlafen legen könnten. Der Zugriff auf Speicherbereiche der Applikationen
ist ebenfalls tabu. Routinen, die auf dieser Ebene ablaufen, sind Softirqs und ISR
Tasklets und Timer.
Was sind ISR?
Interrupt-Service-Routinen laufen auf der ISR-Ebene ab. Dieser Code ist normalerweise nicht unterbrechbar.
Auch den ISRs ist es damit untersagt, sich schlafen zu legen oder Funktionen
aufzurufen, die einen Rechenprozess schlafen legen wollen.
Warum werden SoftIRQ verwendet?
SoftIrqs allow the critical part of servicing hardware interrupts to be as short as possible; instead of having to process the entire hw interrupt on the spot, the important data is read off the device into RAM or otherwise, and then a SoftIrq is started to finish the work.