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, welche die Funktionsweise der jeweiligen Mechanismen demonstrieren erstellt bzw. unter Verwendung von Übungsvorlagen vervollständigt.
Großer Wert wird darauf gelegt, nicht nur die Funktionalitäten zu besprechen, sondern auch Hintergrundinformationen aus Sicht des Kernel zu liefern. Dadurch wird in tieferes Verständnis der Systemprogrammierung erlangt.
Dem Teilnehmer wird dadurch ermöglicht die Theorie 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

Generierung von Prozessen
Laden von Programmen
Zombies
Multithreading
Linux-Scheduler
CPU-Affinitäten, CPU-Sets

Interprozeß-Kommunikation

Signale
Message-Queue
Semaphore
Shared-Memory
Posix-Timer
Netzwerk-Sockets
Mutex
Barrier

Security

Control-Groups
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 im sysfs und mit ioctl
I2C- und SPI-Bus-Zugriff
Zugriff auf Industrial-IO-Sensoren