Linux-Systemprogrammierung

In diesem Seminar geht es um die Schnittstelle des Linux-Kernels zum Userspace, dem Syscall-Interface.
Vorausgesetzt werden gute Kenntnisse in der Programmiersprache C sowie sicherer Umgang in der Linux-Shell.
Die Kursdauer beträgt 4 Tage.

Im Verlauf des Kurses werden diverse kleinere Programme erstellt, die die Funktionsweise der jeweiligen Mechanismen demonstrieren bzw. anhand von Übungsvorlagen vervollständigt werden.
Großer Wert wird darauf gelegt, nicht nur die Funktionalitäten zu vermitteln, sondern auch Hintergrundinformationen aus Sicht des Kernels zu liefern. Dadurch wird ein tieferes Verständnis der Systemprogrammierung erreicht.
Dem Teilnehmer wird ermöglicht, die Theorie direkt in die Praxis im eigenen Projekt umzusetzen.

Agenda

Alles ist eine Datei

Zugriff auf Dateien
Warten auf Ereignisse (poll, select)
Memory-Mapping

Prozesse und Threads

Erzeugung von Prozessen
Laden von Programmen
Zombie-Prozesse
Multithreading
Linux-Scheduler
CPU-Affinitäten, CPU-Sets

Interprozesskommunikation

Signale
Message-Queues
Semaphore
Shared Memory
POSIX-Timer
Netzwerk-Sockets
Mutex
Barrier

Security

Control Groups (cgroups)
Capabilities

Debugging und Tracing

strace und ltrace
trace-marker, uprobes
GNU-Debugger gdb
Remote-Debugging mit gdbserver

Userlevel-Treiber

IO-Memory mit /dev/mem
GPIO-Zugriff über sysfs und ioctl
I2C- und SPI-Bus-Zugriff
Zugriff auf Industrial-IO-Sensoren