Systemnahe Software II
Die Vorlesung setzt den ersten Teil (Systemnahe Software I) fort und beschäftigt sich mit der Entwicklung fortgeschrittener Anwendungen im systemnahen Umfeld des POSIX-Standards, wozu hier insbesondere das Prozesssystem, die Signale, die Interprozesskommunikation und Sockets gehören. Behandelt wird insbesondere auch die Entwicklung von Protokollen für bidirektionale, verbindungsorientierte Kommunikationskanäle und deren effiziente Implementierung. Beachtet werden dabei auch Sicherheitsaspekte und die Vermeidung typischer Schwachstellen. Die Vorlesung ist sehr praxisorientiert und die Übungen sind integraler Bestandteil der Veranstaltung.
Inhalt
- Prozesse unter UNIX
- Signale
- Interprozesskommunikation mit Pipelines
- Einführung in Netzwerkdienste, TCP/IP und die Socket-Schnittstelle
Termine
- Vorlesung: Montag, 14–16 Uhr, Helmholtzstraße 22, Raum E.04
- Übungen: Dienstag, 14–16 Uhr, Helmholtzstraße 18, Raum E.44 (nach Ankündigung auch in der Helmholtzstraße 22, Raum E.03)
Voraussetzungen
Der erste Teil der Vorlesung, Systemnahe Software I, wird inhaltlich vorausgesetzt. Dazu gehört insbesondere
- der sichere Umgang mit der Programmiersprache C einschließlich der dynamischen Speicherverwaltung, dynamischer Datenstrukturen in C, Grundkenntnisse der POSIX-Schnittstelle im I/O-Bereich (bei Dateien),
- Umgang mit der UNIX-Kommandozeile (relevant, weil zu Beginn der Vorlesung auch die Implementierung einfacher Shells behandelt werden wird) und
- Grundkenntnisse des POSIX-Dateisystems.
Prüfungen
Die Prüfung erfolgt mündlich zu individuell verabredeten Terminen.
Vorlesungen
Zur Vorlesung werden ein Vorlesungsbegleiter und die in der Vorlesung verwendeten Folien hier zur Verfügung stehen.
Vorlesungsfolien:
- 23. April 2019: Syllabus und Einführung zu Prozessen
- 29. April 2019: Wechsel zu anderen Programmen, Arbeitsweise der Shell, tinysh.tar.gz
- 6. Mai 2019: Einführung zu Signalen (1. Teil)
- 13. Mai 2019: Einführung zu Signalen (2. Teil), tinysh2.tar.gz
- 20. Mai 2019: Pipes (1. Teil)
- 27. Mai 2019: Pipes (2. Teil), pipesh.tar.gz, Ausmessen der Größe eines Pipe-Puffers
- 3. Juni 2019: Einführung zu Netzwerken (1. Teil)
- 11. Juni 2019: Einführung zu Netzwerken (2. Teil) und zur BSD-Socket-Schnittstelle
- 18. Juni 2019: Parallele Sitzungen (1. Teil), mutexd.tar.gz, mutexd-preforked.tar.gz, netperftest.c
- 24. Juni 2019: Parallele Sitzungen (2. Teil), mutexd-multiplexed.tar.gz
- 1. Juli 2019: UDP-Sockets, UNIX-Domain-Sockets, Übertragung von Dateideskriptoren
- 8. Juli 2019: Kommunikation und Synchronisierung über gemeinsame Speicherbereiche
- 15. Juli 2019: Beyond POSIX
- 22. Juli 2019: Optimierungen bei C
- Alle Folien in einem PDF-Dokument (Stand: 22. Juli 2019)
Übungen
- Melden Sie sich bitte für die Teilnahme in den Übungen bei SLC an.
- Die Übungen sind zeitintensiv und integraler Teil einer praxisorientierten Vorlesung.
Übungssitzungen:
- 30. April 2019: Systemaufrufe fork und wait
- 7. Mai 2019: Systemaufruf exec und Umgebungsparameter
- 14. Mai 2019: Signale und Prozessgruppen
- 28. Mai 2019: Fork-and-Join-Pattern mit Pipelines
Übungsblätter:
Blatt | Ausgabe | Abgabe | Material | Lösung | |
---|---|---|---|---|---|
1 | 30. April 2019 | 7. Mai 2019 | blatt01.pdf | primes.tar | |
2 | 7. Mai 2019 | 14. Mai 2019 | blatt02.pdf | par.c | |
3 | 14. Mai 2019 | 21. Mai 2019 | blatt03.pdf | pcontrol.c | |
4 | 21. Mai 2019 | 28. Mai 2019 | blatt04.pdf | rgbcolor.h, rgbcolor.c, mandelbrot.h, mandelbrot.c | mandelbrot.tar.gz |
5 | 28. Mai 2019 | 4. Juni 2019 | blatt05.pdf | aliquot.tar.gz | |
6 | 4. Juni 2019 | 11. Juni 2019 | blatt06.pdf | tf.tar.gz | |
7 | 11. Juni 2019 | 18. Juni 2019 | blatt07.pdf | whoisd.c | |
8 | 18. Juni 2019 | 25. Juni 2019 | blatt08.pdf | mastermind.tar.gz | |
9 | 25. Juni 2019 | 2. Juli 2019 | blatt09.pdf | mastermind.tar.gz | |
10 | 2. Juli 2019 | 9. Juli 2019 | blatt10.pdf | chat.c | |
11 | 9. Juli 2019 | 16. Juli 2019 | blatt11.pdf | Makefile, smrun.c | mandelbrot.tar.gz |
12 | 16. Juli 2019 | 23. Juli 2019 | blatt12.pdf | chatd.c |
Kontakt
Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.23