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.

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

Tag 5: Verschiedenes aus der Hardware-Ecke