Linux Kernel - Interna und Entwicklung - Schulung (4 Tage)
Linux Kernel Internals and Development (LFD420)
Kurzbeschreibung
Dieser Linux-Kurs vermittelt Kenntnisse und Fertigkeiten zum Einsatz des Linux Kernels. Erfahrene Programmierer erlernen den Aufbau von Linux, die grundlegenden Entwicklungsmethoden im Kernel und die effiziente Zusammenarbeit mit der Linux-Entwicklergemeinschaft. In praktischen Übungen und Demonstrationen werden u.a. folgende Themen erarbeitet: Die Kernel-Architektur, die Modularisierungsmethoden, die Kernel-Initialisierung und - Konfiguration, die Systemaufrufe, die Hardware- und Speicherverwaltung, das Monitoring, das Debugging und die Sicherheit.
Voraussetzungen
• Vertrautheit mit der Programmiersprache C
• Grundlegende Linux-Dienstprogramme (UNIX) wie ls, grep und tar
• Hilfreich, aber nicht zwingend erforderlich, wäre eine Vertrautheit mit verfügbaren Texteditore• n (z. B. emacs, vi usw.)
Seminarinhalt
Einführung in Linux
• Ziele
• Vorstellung
• Die Linux Foundation
• Das Linux Foundation Training
• Linux Distributionen
• Plattformen
• Systemvorbereitung
• Verwendung und Herunterladen einer virtuellen Maschine
• Veränderungen in Linux
• Dokumentation und Links
• Registrierung
Übersicht
• Verfahren
• Kernel-Versionen
• Kernelquellen und Verwendung von git
Die Arbeit in OSS-Projekten
• Überblick über den richtigen Beitrag
• Die Mainline zur Gewährleistung der Sicherheit und Qualität
• Das Projekt DNA
• Herausfinden was abgebrochen wird
• Identifikation der Maintainer und ihre Arbeitsabläufe und Methoden
• Einholung eines frühzeitigen Inputs und offenes Arbeiten
• Inkrementelle Bits - nicht große Code-Dumps
• Kein Ego- keine Überempfindlichkeit
• Geduld, Hilfsbereitschaft, Entwicklung langfristiger Beziehungen
Kernel-Architektur I
• UNIX und Linux
• Monolithische und Mikro-Kernels
• Objektorientierte Methoden
• Die wichtigsten Kernel-Tasks
• User-Space und Kernel-Space
• Kernelmodus Linux
Kernel-Programmiervorschau
• Fehlernummern und Kernel-Output
• Task-Struktur
• Speicherzuweisung
• Datenübertragung zwischen Benutzer- und Kernel Space
• Verlinkte Listen
• Konvertierungen von Zeichenfolgen in Zahlen
• Jiffies
• Best Practice
Module
• Die Bedeutung der Module
• Ein triviales Beispiel
• Kompilation der Module
• Module vs. Built-in
• Modul-Dienstprogramme
• Automatisches Laden / Entladen von Modulen
• Anzahl der Modulnutzung
• Modul Usage Count
• Modul-Lizenzierung
• Export der Symbole
• Auflösung der Symbole
• Best Practice
Kernel-Architektur II
• Prozesse, Threads und Tasks
• Prozess-Kontext
• Kernel-Preemption
• Echtzeit-Preemption-Patch
• Dynamic Kernel Patching
• Laufzeit-Alternativen
• Portierung auf eine neue Plattform
• Best Practice
Kernel-Initialisierung
• Überblick über die Systeminitialisierung
• System-Boot
• Das U-Boot für Embedded Systeme
Kernel-Konfiguration und -Kompilierung
• Installation und Layout der Kernel-Quelle
• Kernel-Browser
• Kernel-Konfigurationsdateien
• Kernel Building und Makefiles
• initrd und initramfs
• Best Practice
Systemaufrufe
• Die Bedeutung der Systemaufrufe
• Verfügbare Systemaufrufe
• Implementierung der Systemaufrufe
• Hinzufügung eines Systemaufrufs
• Best Practice
Kernel-Stil und allgemeine Überlegungen
• Codierungsstil
• kernel-doc
• Verwendung generischer Kernel-Routinen und -methoden
• Erstellung eines Kernel-Patchs
• sparse
• Verwendung von likely() und unlikely()
• Schreiben des Portable Code, CPU, 32/64-Bit, Endianness
• Schreiben für SMP
• Schreiben für High Memory Systeme
• Power Management
• Wartung der Sicherheit
• Mischen von Benutzer- und Kernel-Space-Headern
• Best Practice
Rade Conditions und Synchronisations-Methoden
• Parallelität und Synchronisationsmethoden
• Atomare Operationen
• Bit-Operationen
• Spinlocks
• Seqlocks
• Deaktivierung von Preemption
• Mutexe
• Semaphore
• Vervollständigungsfunktionen
• Read-Copy-Update (RCU)
• Reference Counts
• Best Practice
SMP und Threads
• SMP-Kernel und -Module
• Prozess-Affinität
• CPUSETS
• SMP-Algorithmen - Scheduling, Locking usw.
• Per-CPU-Variablen
• Best Practice
Prozesse
• Die Bedeutung der Prozesse
• Das task_struct
• Erstellung von Benutzerprozessen und Threads
• Erstellung der Kernel-Threads
• Zerstörung der Prozesse und Threads
• Ausführung von User-Space-Prozessen innerhalb des Kernels
• Best Practice
Prozessgrenzen und Fähigkeiten
• Prozessgrenzen
• Fähigkeiten
• Best Practice
Monitoring und Debugging
• DebugInfo-Pakete
• Rückverfolgung und Profilierung
• sysctl
• SysRq Key
• oops Nachrichten
• Kernel-Debugger
• debugfs
• Best Practice
Scheduling Grundlagen
• Wichtige Scheduling-Tasks
• SMP
• Scheduling Prioritäten
• Planung der Systemaufrufe
• Die 2.4 schedule () - Funktion
• O (1) Scheduler
• Zeitscheiben und Prioritäten
• Load Balancing
• Prioritätsinversion und Prioritätsvererbung
• Der CFS-Scheduler
• Berechnung der Prioritäten und fairer Zeiten
• Scheduling-Klassen
• CFS-Scheduler-Details
• Best Practice
Speicheradressierung
• Virtual Memory Management (VSM)
• Systeme mit und ohne MMU und TLB
• Speicheradressen
• High und Low Memory
• Speicherzonen
• Spezielle Geräte-Nodes
• NUMA
• Paging
• Page-Tabellen
• page structurer
• Kernel Samepage Merging (KSM )
• Best Practice
Huge Pages
• Huge Page Support
• libhugetlbfs
• Transparente Huge Pages
• Best Pracice
Speicherzuweisung
• Anforderung und Freigabe von Seiten
• Buddy-System
• Zuweisung von Slabs und Cache
• Speicher-Pools
• kmalloc ()
• vmalloc ()
• Frühe Zuweisung und bootmem ()
• Speicher-Defragmentierung
• Best Practice
Bearbeitung des Adressraums
• Zuordnung der Benutzerspeicher und Adressräume
• Sperrung von Seiten
• Speicherbeschreibungen und Regionen
• Zugriffsrechte
• Zuweisung und Freigabe von Speicherbereichen
• Seitenfehler
• Best Practice
Laufwerk Caches und Swapping
• Cache
• Page Cache-Grundlagen
• Die Bedeutung von Swapping
• Swap-Bereiche
• Ein- und Auslagerung von Seiten
• Überwachung der Swappiness
• Der Swap-Cache
• Reverse Mapping
• OOM Killer
• Best Practice
Gerätetreiber
• Gerätearten
• Geräte-Nodes
• Zeichen-Treiber
• Ein Beispiel
• Best Practice
Signale
• Bedeutung der Signale
• Verfügbare Signale
• Systemaufrufe für Signale
• Sigaction
• Signale und Threads
• Installation des Signal Handlers durch das Kernel
• Das Senden der Signale des Kernels
• Aktivierung der Signal Handler durch den Kernel
• Echtzeit-Signale
• Best Practice
Abschluss- und Bewertungsumfrage
Zielgruppen
• Entwickler
Preise und Termine
Eine offene Schulung findet in einem unserer Schulungszentren statt.
Dauer: | 4 Tage |
Preis: | 1.895,00 € zzgl. USt. pro Teilnehmer (2.255,05€ inkl. USt.) |
Seminarstandorte: | |
Starttermine: (ortsabhängig) | |
Unterlagen: | zzgl. |
Verpflegung: | zzgl. |
Prüfung/Zertifizierung: | zzgl. |
Eine Firmenschlung kann sowohl bei Ihnen vor Ort als auch in einem unserer Schulungszentren stattfinden.
Dauer: | 4 Tage |
Preis ab: | 1.590,00 € zzgl. USt. pro Tag (1.892,10€ inkl. USt.) |
Schulungszentren: |
|
Starttermin: | individuelle Vereinbarung |
Unterlagen: | zzgl. |
Verpflegung: | zzgl. |
Prüfung/Zertifizierung: | zzgl. |
Software
Linux Kernel
Verwandte Schulungen
Linux - Entwicklung von Gerätetreibern für Linux-Systeme - SchulungLinux Kernel - Debugging und Sicherheit - SchulungLinux Embedded - Entwicklung mit dem Yocto Projekt (LFD460) - Schulung
Seminarsprache
die Seminarsprache ist deutsch, sofern keine andere Angabe. Englisch ist in aller Regel machbar, andere Seminarsprachen sind möglich, fragen Sie bitte an.