Agenda: Linux Systemnahe Programming¶
Tag 1: Überblick¶
Ziel ist es, mit Hilfe der Shell/Commandline einen Überlick über die Systemkonzepte zu vermitteln, ohne noch einen Strich zu programmieren. Viele beziehungsweise alle dieser Konzepte werden in den folgenden Kurstagen programmatisch behaldelt werden.
Tag 2: (File) I/O und Prozesse¶
Files und Prozesse sind die Eckpfeiler des UNIX-Designs. Sehr stabile Konzepte, die seit ihrer “Erfindung” in den Siebzigerjahren des vorigen Jahrtausends unverändert geblieben (ergo von MacOS, Linux, Android, und anderen UNIXen für gut befunden wurden). Das Design wurde in Linux unverändert erweitert, und vieles aus hardwarenaher Programmierung (siehe unten) baut darauf auf.
Prozesse (Kapitel “Processes” aus
Systemnahe Programmierung (PDF)
)System Calls, Blocking, und File I/O
Tag 3: Netzwerkprogrammierung (inklusive CAN-Bus)¶
Siehe Linux Systems Programming: Network Programming
TCP/IP Networking: die vorhandenen Netzwerkschnittstellen (Ethernet, Wifi, …) nutzen
CAN-Bus (broadcast-only, aber eben Netzerk)
Fortgeschrittene Paradigmen wie Event-Driven Programming
Tag 4: Multithreading, und Realtime¶
Siehe Linux Systems Programming: Multithreading
Die Gefahren (Race Conditions) und deren Vermeidung (Mutexes)
Kommunikationsmechanismen
Atomics
Realtime
Note
Unter Umständen kann in diesem Zusammenhang auch auf die relevanten Neuerungen in C++ eingegangen werden
Tag 5: Verschiedenes aus der Hardware-Ecke¶
Eine Auswahl aus Linux Hardware Interfaces
USB aus dem Userspace
Serielle Schnittstellen (UART): Einführung in termios