Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Schulungsübersicht
Einführung
- kurze Geschichte von GNU/Linux
- Lizenzierung
- Kernel-Versionierung
- Release-Zyklus
- Kernel-Zweige (Trees)
- Mainline
- Kernel vs. Benutzerraum (User Space)
- Mechanismus vs. Politik
- Alternativen zu Kernel-Treibern
- RTOS vs. Linux
Speicherverwaltung
- Virtueller Speicher vs. physischer Speicher
- Speicherzuweisung im Kernel
- Seiten (Pages)
- Zonen
- API
- Slab-Allocator
Kernel-Patches
- Lebenszyklus
- git
- Kernel-Quellcode
- Patch erstellen
- Patch prüfen (check patch)
- Patch korrigieren
- Patch weiterleiten (ship patch)
- Geprüfter Code
Kernel-Module
- Kernel-Quellcode herunterladen
- Konfigurieren/Bauen/Installieren
- Gerätetreiber (statisch verlinkt, zur Laufzeit geladen)
- init/exit
- Lizenzierung
- EXPORT_SYMBOL GPL
- Makefile außerhalb des Kernel-Baums
- module-init-tools
- Modul im Kernel-Baum
- Kconfig
- Weitergabe von Parametern
- sparse
Charakter-Treiber (Char Drivers)
- Architektur
- Benutzer-Kernel-Schnittstelle
- I/O-Subsystem
- VFS (Virtual File System)
- sysfs (Geräte, Busse, Treiber, Klassen)
- kobject/ktype/kset
- Linux-Kernel-Treibermodell
- Gerätedateien
- Charakter-Treiber
- Initialisierung
- Registrierung
- open, release
- cdev, cdev_add, cdev_del, ...
- Major-/Minor-Nummern
- udev, udevmonitor, udevadm
Erweiterte Operationen für Charakter-Treiber
- ioctl
- unlocked ioctl
- compat ioctl
- API im Benutzerraum
- API im Kernelraum
- Lebenszyklus von Prozessen
- Schlafmodus/Blockierung
- Schlafmodus/Aufwachen
- Wait-Queue (Warteschlange)
- Thundering Herd Problem
- poll/select
Kernel-Debugging
- Debugging
- Debugging des Kernels
- Binäre Suche mit git
- Debug-Unterstützung aus dem Kernel
- printk syslogd, klogd, Loglevel, Rate Limiting, Debug-Level, selektive Subsysteme debuggen
- Debugging durch Abfragen von debugfs
- Oops-Debugging, Oops provozieren
- Magic SysRq-Taste
- kgdb/kdb
- JTAG
Tracing
- gcov
- lcov
- oprofile
- ftrace
- nop tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamic tracer
- trace-cmd/kernelshark
- perf
- LTTng
Interrupts
- Interrupts vs. Polling
- Interrupt
- Programmausführungsabschnitte
- Reentrancy (Wiederaufrufbarkeit)
- Ereignisse
- Interrupt-Handler
- Shared Interrupt-Handler
- Interrupt-Flow
- Interrupt-Steuerung
Aufgabeverschiebung (Deferring Work)
- Top-Half/Bottom-Half
- Softirqs
- Tasklets
- Work Queues
- Threaded Interrupts
Nebenläufigkeit
- Kritischer Bereich
- atomar
- Race Condition
- Synchronisation
- Locking
- Locking-Lösungen
- Deadlock
- Contention
- Was soll gelockt werden?
- Was kann verwendet werden?
- atomare Operationen
- Spinlocks
- Reader-Writer-Spinlocks
- Semaphore
- Binäres Semaphore
- Mutex
- Reader-Writer-Semaphore
- Completion-Variablen
- Sequenzielle Sperren
- Vorpriorität deaktivieren
- Reihenfolge und Barriers
Zeit
- HZ
- Jiffies
- große/kleine Verzögerungen
- Kernel-Timer
Hardware-Eingabe und -Ausgabe
- I/O-Ports
- I/O-Speicher
- Wie mit Nebeneffekten beim Zugriff auf Register umgehen?
Kommunikation Benutzer-Kernel
- put(get)_user()
- copy to(from)_user()
- Kernel-I/O
- Speicherzuordnung (Memory Mapping)
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilität
- Wortgröße
- Opaque Typen
- signed/unsigned char
- Daten-Ausrichtung (Alignment)
- Integral Promotion
- Code-Wiederverwendung
- Endianness
- System-Takt
- Seitengröße
- Befehlsreihenfolge
- SMP/Preemption/High Memory
Sofern nicht anders angegeben, sind Inhalte und dieser Kursplan lizenziert unter Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-NC-SA 4.0).
Voraussetzungen
- Basiskenntnisse in der Nutzung eines GNU/Linux-Systems als Endbenutzer
- Basiskenntnisse in einem Kommandozeilen-Shell
- Basiswissen in der Entwicklung von Benutzeroberflächen-Anwendungen
- Mittelstufe Kenntnisse in der C-Programmierung
- Es wird dringend empfohlen, vorher die Schulung Embedded GNU/Linux Systems Architecture besucht zu haben und/oder die dort behandelten Themen gut zu verstehen.
35 Stunden
Erfahrungsberichte (3)
Alles ist in Ordnung.
Adrian Rybka - SEOyon
Kurs - Flutter Development Bootcamp with Dart
Maschinelle Übersetzung
Sehr nützliche zusätzliche Informationen
Grzegorz - Comp S.A.
Kurs - BLoC Pattern
Maschinelle Übersetzung
Die Präsentation des Trainers und seine Art der Kommunikation.
Gianpiero Arico - Urmet Spa
Kurs - Embedded Linux Systems Architecture
Maschinelle Übersetzung