Informationen zur Technologie

Linux oder GNU/Linux ist ein freies, unix-ähnliches Mehrbenutzer-Betriebssystem, das als Open Source-Projekt ins Leben gerufen wurde. Es basiert auf dem Linux-Kernel und wesentlich auf GNU-Software. Dieser Systemkern (Kernel) ist die Schnittstelle zwischen Hard- und Software, das Anwenderprogramme den Komponentenzugriff auf Speicher, Festplatte, Tastatur und Maus, Druckerschnittstellen etc. ermöglicht und ist eine zuverlässige Plattform für eine Vielzahl von Anwendungen.


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

    offene Schulung
    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.
    Firmenschulung
    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:
    • Hamburg
    • Berlin
    • Frankfurt
    • München
    • Nürnberg
    • Düsseldorf
    • Wien
    • Stuttgart
    • Hannover
    • Köln
    • Dortmund
    Starttermin:individuelle Vereinbarung
    Unterlagen:zzgl.
    Verpflegung:zzgl.
    Prüfung/Zertifizierung:zzgl.

    Software

    Linux Kernel



    Seminarsprache

    Wir bieten unsere Seminare hauptsächlich in deutscher Sprache an – je nach Wunsch aber gerne auch in Englisch oder einer anderen Seminarsprache. Bitte fragen Sie doch einfach bei uns an.