Systemprogrammierung

Wie nutze ich die Linux-API mit Posix-Funktionen

Dieser Kurs richtet sich an Entwickler, welche systemnah mit Hilfe der Linux-API und Posix-Funktionen selber Software in der Programmiersprache C erstellen wollen. Vom Zugriff auf Dateien, der Generierung von Prozessen bis hin zur Interprozess-Kommunikation spannt sich der Bogen über die ganze Bandbreite der Systemprogrammierung unter Linux.

Die einzelnen Abschnitte werden jeweils geübt, indem mithilfe von Vorlagen eigene Programme erstellt werden.

Der Kurs gliedert sich in drei Teile:

  • Dateien und Prozesse
  • Interprozess-Kommunikation und Netzwerkkomunikation
  • Multithreading

Entwicklungs-, Debugging- und Tracing-Werkzeuge werden jeweils am konkreten Thema beispielhaft erläutert und geübt.

Trainer und Dozenten

Andreas Klinger ist selbständiger Trainer, Berater und Entwickler. Als Spezialist für Linux beschäftigt er sich mit dem internen Aufbau des Kernels, und vor allem mit dessen Einsatz in linuxbasierten Embedded-Systemen.

Als Autor von Fachartikeln und als Referent auf Kongressen vermittelt er Open-Source Software-Technologien.

Voraussetzungen

Der Teilnehmer benötigt solides Grundwissen in der Benutzung der Linux-Shell, um dem Kurs folgen zu können. Teilnehmer ohne Linux-Erfahrungen können dazu die Schulung Linux für Entwickler oder Linux Grundlagen vorbereitend besuchen.

Inhalt

Dateien und Prozesse

  • VFS - Virtuelles Dateisystem
  • Dateien, Pipes, Filedeskriptoren
  • blockierender Dateizugriff
  • Generierung und Beendigung von Prozessen, Zombies
  • Scheduling: RT-, Deadline-, Batch-Task
  • proc- und sys-FS

Interprozesskommunikation

  • Message-Queue, Semaphore,
  • Signale, Core-Dumps
  • Shared Memory
  • Posix-Timer
  • Netzwerkkommunikation mit Sockets

Multithreading

  • Multithreading, Native Posix Threading Library (NPTL)
  • Mutex, PI-Mutex, RW-Lock, Barrier

verwendete Entwicklungswerkzeuge

  • Debugging: gdb, gdbserver
  • Tracing: strace, ltrace
  • ftrace-Framework, trace-cmd, kernelshark, debug-FS
  • gcc, objdump, addr2line