Linux Kernel Flashcards
Aus welchen Komponenten besteht der Linux Betriebssystemkern?
- Systemcall-Interface
- Prozessmanagement
- Speichermanagement
- IO-Management
- Gerätetreiber
Ablauf eines Systemcalls:
- App möchte auf Daten aus Datei lesen
- Systemcall löst Software-Interrupt aus
- Kernel führt anschließend die ISR durch
- Zurückgeben der Daten
Prozess-Management:
- Single-Core-Scheduling.
- Multi-Core-Scheduling.
Wo werden die Daten eines Prozesses gespeichert?
Jede Task/Prozess besteht aus einem Codesegment, Datensegment, Stacksegment.
Task können sich Segmente teilen.
Von was ist die reden wenn sich 2 tasks Codesegment und auch Datensegment teilen?
Thread
Speicher-Management:
- Es werden virtuelle Adressen verwendet, um auf physikalische zuzugreifen.
- Speicherschutz durch das umsetzen der Adressen.
- Virtueller Speicher -> Swapping auf Festplatten
- Extended Memory
I/O-Management:
- Einheitliches Programmierinterface (API) für den Zugriff auf Dateien und Geräte.
- Performanter Zugriff auf I/O
- Ordnungsstruktur für Daten in Form von Verzeichnissen und Dateien über das Filesystem
Gerätetreiber:
- Standardisierter Zugriff auf Hardware.
- Für jedes Peripheriegerät das aus der User-Ebene angesprochen wird muss ein Treiber existieren.
- Alle Kernel-Komponenten haben Zugriff auf den Kernel-Adressraum
Welche Funktionen können im Kernel nicht benutzt werden?
Es dürfen keine “libc” Funktionen benutzt werden.
- —> kann kein User-Code benutzen
- —> Kernel bietet speziell Funktionen wie printk, kmalloc
- —> Kernel muss “standalone” benutzbar sein.
Werden im Kernel Gleitkommazahlen benutzt?
Neine der Kernel rechnet nur mit integer Werten.
Was muss getan werden um im Namensraum Konflikte zu vermeiden?
Alle Symbole müssen als “static” definiert werden.
Was macht “make config” ?
Fragt jede Kernel Einstellung (>1000)
Was macht “make menuconfig” ?
Öffnet ein Textinterface um Kernel einfacher zu konfigurieren.
Was macht “make oldconfig” ?
Nützlich um die .config Datei einer früheren Kernel-Version upzudaten.
Was macht “make allnoconfig” ?
Minimale Kernel Config. Idealer Startpunkt für Embedded Systems!
Kernel Module
- Die Funktionalität eines Kernels kann durch Module sehr einfach erweitert werden.
- Treiber werden auch als Module angesehen.
Wie wird ein Modul zu einem Kernel hinzugefügt?
Es gibt 2 Möglichkeiten:
- insmod
- —> Ein Modul wird geladen ohne Abhängigkeiten - modeprobe
- —> Lädt das Modul indem er im Verzeichnis /lib/modules/(uname -r) nach allen Modulen mit Abhängigkeiten sucht.
Was passiert bei dem Befehl “depmod”?
Der Befehl “depmod” geniert die Datei modules.dep die alle Abhängigkeiten enthält.
Funktionalität statisch im Kernel einbinden:
Alle Treiber werden direkt in den Kernel compiliert. Vorteil: Keine Infrastruktur für das Laden der module nötig.
Aufgaben der start_kernel() Methode?
- Architektur Setup
- Verarbeitung der Kernel Command Line
- Initialisierung der Subsysteme
- init Thread starten -> init RootFS
- start_kernel() wird zum idle Thread
Jedes Linux Betriebssystem besteht aus 2 Images?
Erste Image ist der Kernel
Zweite Image ist das RootFS
Was enthält das Kernel-Image?
- Einbinden der notwendigen Treiber
- Compilieren für den entsprechenden Prozessor
- Herausnehmen aller nicht benötigten Komponenten
- Module: ja oder nein?
Was enthält das RootFS-Image?
- Systemprogramme
- Konfigurationssoftware
- Applikationen
root=
Angabe des Devices, auf welchem sich das Root
Filesystem befindet
ro/rw=
Mounted das Root als read-only/read-write Gerät
console=
Angabe der Geräte, welche der Linux Kernel als
Console benutzen soll.
mem=
Wieviel Speicher der Kernel benutzen soll
initrd=
Initial RAM Disk Image (startet dort /linuxrc)
init=
Angabe eines alternativen Binaries sta! ’/sbin/init’
rdinit=
Angabe eines alternativen Binaries statt ‘init’ (initramfs Default)
ip=
Angaben zur Art und Weise der Netzkarten Konfiguration