Schulungsübersicht

Einführung

  • kurze Geschichte von GNU/Linux
  • Lizenzierung
  • Kernel-Versionierung
  • Veröffentlichungszyklus
  • Kernel-Bäume
  • Mainline
  • Kernel vs. Nutzerraum
  • Mechanismus vs. Richtlinie
  • Alternativen zu Kernel-Modulen
  • RTOS vs. Linux

Speicherverwaltung

  • Virtueller Speicher vs. physischer Speicher
  • Speicallokation im Kernel
  • Seiten
  • Zonen
  • API
  • Slab-Allokation

Kernel-Patch

  • Lebenszyklus
  • Git
  • Kernel-Quellcode
  • Patch erstellen
  • Patch überprüfen
  • Patch beheben
  • Patch senden
  • überprüfter Code

Kernel-Module

  • Kernel-Quellcode holen
  • Konfigurieren/Bauen/Installieren
  • Gerätebetriebssysteme (statisch verknüpft, zur Laufzeit geladen)
  • Initialisierung/Deinitialisierung
  • Lizenzierung
  • EXPORT_SYMBOL_GPL
  • Out-of-tree Makefile
  • Module-Init-Tools
  • Modul im Kernel-Baum
  • Kconfig
  • Parameterübergabe
  • Sparse

Char-Drivers

  • Architektur
  • Nutzer-/Kernel-Schnittstelle
  • I/O-Subsystem
  • VFS
  • sysfs (Geräte, Busse, Treiber, Klassen)
  • kobject/ktype/kset
  • Linux-Kernel-Treibermodell
  • Geräte-Dateien
  • Char-Driver
    • Initialisierung
    • Registrierung
    • Öffnen, Freigeben
    • cdev, cdev add, cdev del,...
    • Haupt-/Nebenzahlen
    • udev, udevmonitor, udevadm

Erweiterte Char-Device-Vorgänge

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • Nutzerraum-API
  • Kernelraum-API
  • Prozesslebenszyklus
  • Warten/Blockieren
  • Schlafen/Aufwachen
  • Warteschlange
  • Stampede-Effekt
  • poll/select

Kernel-Debugging

  • Debuggen
  • Kernel-Debugging
    • binäre Suche mit Git
    • Debug-Support vom Kernel
    • printk syslogd, klogd, Loglevels, Rate-Limiting, Debug-Level, selektive Subsystem-Debugging
    • Debuggen durch Abfrage von debugfs
    • OOPs-Debugging, OOPs-Auslösen
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Tracing

  • gcov
  • lcov
  • oprofile
  • ftrace
    • nop-Tracer
    • Funktionstracer
    • Sched-Switch-Tracer
    • Funktionsgraphentracer
    • Dynamischer Tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Interrupts

  • Interrupts vs. Polling
  • Interrupt
  • Programmschritte
  • Wiederholbarkeit
  • Ereignisse
  • Interrupt-Handler
  • geteilte Interrupt-Handler
  • Interruptfluss
  • Interrupt-Steuerung

Aufgabenverteilung

  • Top/Bottom Halves
  • Softirqs
  • Tasklets
  • Work Queues
  • Threaded Interrupts

Konkurrenz

  • Kritische Region/Sektion
  • Atomare Vorgänge
  • Rennenbedingung
  • Synchronisierung
  • Verriegelung
  • Lösungen für Verriegelungen
  • Deadlock
  • Konkurrenz
  • Was soll verriegelt werden?
  • Was kann verwendet werden?
    • Atomare Vorgänge
    • Spinlocks
    • Reader-Writer-Spinlocks
    • Semaphore
    • Binäre Semaphore
    • Mutexes
    • Reader-Writer-Semaphore
    • Vollendungsvariablen
    • Sequenzielle Verriegelungen
    • Präemption deaktivieren
    • Anordnung und Barrieren

Zeit

  • HZ
  • Jiffies
  • große/kleine Verzögerungen
  • Kernel-Timer

Hardware I/O

  • I/O-Ports
  • I/O-Speicher
  • Wie man Nebeneffekte beim Zugriff auf Register vermeidet?

Nutzer-Kernel-Kommunikation

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • Speicherabbildung
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabilität

  • Wortgröße
  • opake Typen
  • signierte/unsigned char
  • Datenausrichtung
  • Integralpromotion
  • Code-Weiterverwendung
  • Endianess
  • Systemtick
  • Seitengröße
  • Anweisungsreihenfolge
  • SMP/Präemption/High Memory

Außer anders angegeben, sind Inhalt und Kursübersicht unter der Lizenz Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-NC-SA 4.0). lizenziert.

Voraussetzungen

  • Grundkenntnisse in der Benutzung eines GNU/Linux-Systems
  • Grundkenntnisse in der Verwendung einer Kommandozeilenshell
  • Grundkenntnisse im Entwickeln von Nutzerraum-/Anwendungen
  • Fortgeschrittene Kenntnisse in C-Programmierung
  • Sollten die Schulung Embedded GNU/Linux Systems Architecture besucht haben (stark empfohlen!) und/oder ein gutes Verständnis der dort behandelten Themen haben
 35 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (5)

Kommende Kurse

Verwandte Kategorien