Linux Systems Programming (2023-02-13 - 2023-02-17)

Programming Environment

WSL For Core Linux Topics

If possible, we should use WSL for core Linux topics. Local editing in Visual Studio Code, local compilation on a virtualized Ubuntu, local running.

Cross Development For Hardware Topics

For the more involved hardware related topics, I’ll bring a Raspberry Pi and some network equipment and build up a local network where we can log in from our PCs.

Please check that connecting to some foreign untrusted LAN is permitted IT-wise.

More Detailed Topics

Those will make it into the agenda below.

Agenda (To Be Reworked)

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