Schulungsübersicht

Einführung

    Kurze Geschichte der GNU/Linux-Lizenzierung Kernel-Versionierung Release-Zyklus Kernel-Bäume Mainline-Kernel vs. User-Space-Mechanismus vs. Richtlinie Kernel-Treiber-Alternativen RTOS vs. Linux

Speicher Management

    Virtueller Speicher im Vergleich zu physischem Speicher in der API-Platte der Kernel-Seitenzonen

Kernel-Patch

    Lebenszyklus Git-Kernel-Quelle Patch erstellen Patch prüfen Patch reparieren Patch versenden Patch geprüfter Code

Kernel-Module

    Kernel-Quellen abrufen Gerätetreiber konfigurieren/erstellen/installieren (statisch verknüpft, zur Laufzeit geladen) Lizenzierung init/exitieren EXPORT-SYMBOL GPL aus Baum makefile module-init-tools-Modul im Kernel-Baum Kconfig-Parameterübergabe spärlich

Char-Treiber

    Architektur Benutzer-/Kernel-Schnittstelle I/O-Subsystem VFS sysfs (Geräte, Bus, Treiber, Klassen), kobject/ktype/kset Linux-Kernel-Treibermodell Gerätedateien char Treiberinitialisierung Registrierung offen, Release cdev, cdev add, cdev del,... Haupt-/Nebenzahlen udev, udevmonitor, udevadm

Erweiterte Charakter-Fahrer-Operationen

    ioctl entsperrt, ioctl kompatibel, ioctl User Space API, Kernel Space API, Prozesslebenszyklus, Schlafen/Blockieren, Schlafen/Aufwachen, Warteschlange, donnernde Herde, Umfrage/Auswahl

Kernel-Debugging

    Bug-Debugging, Debuggen der Kernel-Binärsuche mit Git-Debug-Unterstützung vom Kernel, Printk, Syslogd, Klogd, Loglevels, Ratenlimit, Debug-Levels, Debuggen von selektiven Subsystemen, Debuggen durch Abfragen von Debugfs. Hoppla, Debuggen, Bestätigen von Hoppla. Magic SysRq Key kgdb/kdb JTAG

Nachverfolgung

    gcov lcov oprofile ftrace nop Tracer-Funktion Tracer Sched Switch Tracer-Funktion Graph Tracer dynamischer Tracer
Trace-cmd/kernelshark
  • perf
  • LTTng
  • Unterbricht
  • Interrupts vs. Abfragen von Interrupt-Programmabschnitten, Wiedereintrittsereignisse, Interrupt-Handler, gemeinsam genutzter Interrupt-Handler, Interrupt-Fluss, Interrupt-Steuerung

      Arbeit aufschieben

    obere/untere Hälfte, Softirqs, Tasklets, Arbeitswarteschlangen, Thread-Interrupts

      Parallelität

    Kritische Region/Abschnitt, atomare Wettlaufbedingung, Synchronisation, Sperren, Sperrlösungen, Deadlock-Konflikt, was sperren soll? Was kann verwendet werden? Atomare Operationen, Spin-Locks, Lese-Schreiber, Spin-Locks, Semaphor, binäres Semaphor, Mutex, Leser-Schreiber, Semaphor, Vervollständigungsvariablen, sequentielle Sperren, Deaktivierung von Vorkaufsrechten und Barrieren

      Zeit

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

      Hardware-E/A

    I/O-Ports I/O-Speicher Wie gehe ich mit Nebenwirkungen beim Zugriff auf Register um?

      Benutzer-Kernel Communication

    put(get)_user() copy to(from)_user() Kernel-E/A-Speicherzuordnung procfs sysfs debugfs Relayfs Netlink ioctl

      Portabilität

    Wortgröße, undurchsichtige Typen, vorzeichenbehaftete/nicht vorzeichenbehaftete Zeichen, Datenausrichtung, integraler Promotion-Code, Wiederverwendung, Endianess-System, Tick, Seitengröße, Befehlsreihenfolge, SMP/Preemption/hoher Speicher

      Sofern nicht anders angegeben, sind der Inhalt und diese Kursübersicht unter der Lizenz „Namensnennung – Nicht kommerziell – Weitergabe unter gleichen Bedingungen 4.0 International“ (CC BY-NC-SA 4.0) lizenziert.

    Voraussetzungen

    • Grundlegende Vertrautheit mit der Verwendung eines GNU/Linux-Systems als Endbenutzer
    • Grundlegende Vertrautheit mit einer Kommandozeilen-Shell
    • Grundlegende Kenntnisse im Bereich Benutzeroberfläche/Anwendungsentwicklung
    • Mittlere C-Programmierkenntnisse
    • Sollten vorher an Embedded GNU/Linux Systems Architecture teilgenommen haben (dringend empfohlen!) und/oder ein gutes Verständnis der dort beschriebenen Themen haben
     35 Stunden

    Teilnehmerzahl



    Preis je Teilnehmer

    Erfahrungsberichte (4)

    Kombinierte Kurse

    The Yocto Project - An Overview - hands-on

    28 Stunden

    Verwandte Kategorien