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, 16-18 Uhr, Helmholtzstraße 18, Raum E20.
- Übungen: Dienstag, 16-18 Uhr, Helmholtzstraße 18, Raum 120.
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 Vorlesung ist für die Master-Studiengänge Informatik und Medieninformatik im Modulhandbuch. Ebenso kann die Vorlesung als Wahlpflichtfach bei den Bachelor-Studiengängen Mathematik, Wirtschaftsmathematik, Mathematische Biometrie und Wirtschaftsphysik gewählt werden. Die Prüfung wird schriftlich stattfinden mit zwei offen wählbaren Terminen:
- Donnerstag, den 23. Juli 2015 in der Zeit von 14:00 bis 16:00 Uhr im Hörsaal H12 in N24
- Donnerstag, der 1. Oktober 2015 in der Zeit von 10:00 bis 12:00 Uhr im Raum 1.42 in der Helmholtzstraße 22
Zur Vorbereitung auf die schriftliche Prüfung steht eine Probeklausur zur Verfügung, die am 13. Juli in der Vorlesung besprochen werden wird.
Vorlesungen
Zur Vorlesung steht ein Vorlesungsbegleiter zur Verfügung, der jedoch nicht den gesamten Inhalt abdeckt und nicht immer so weitgehend aktualisiert wurde wie die Folien zur Vorlesung. Die Vorlesungsfolien stehen ebenfalls zur Verfügung und werden hier kapitelweise veröffentlicht:
- 13. und 20. April 2015: Syllabus, Prozesse, Implementierung einer einfachen Shell
- 27. April 2015: Einführung zu POSIX-Signalen, tinysh.tar.gz
- 4. Mai 2015: Mehr zu Signalen
- 11. Mai 2015: sigaction-Schnittstelle, Semantik von POSIX-Signalen, Signalbehandlung in einer Shell, tinysh2.tar.gz
- 18. Mai 2015: Pipes
- 26. Mai 2015: Einführung zu Netzwerkdiensten und TCP/IP
- 1. Juni 2015: Aufbau von Netzwerkverbindungen mit der BSD-Sockets-Schnittstelle
- 8. Juni 2015: Umgang mit fragmentierten Paketen, Ein- und Ausgabe von Paketen über Netzwerkverbindungen, Protokollbeispiele
- 15. Juni 2015: Parallele Sitzungen mit Hilfe des Fork- bzw. des Prefork-Modells, mutexd.tar.gz
- 22. Juni 2015: Prefork-Modell mit Hilfe von poll, Parallele Sitzungen in einem Prozess mit Hilfe von poll, mutexd-preforked.tar.gz, mutexd-multiplexed.tar.gz
- 29. Juni 2015: Einführung zu UDP-basierten Netzwerkdiensten, tftp.tar.gz
- 6. Juli 2015: UNIX-Domain-Sockets, synchronisierte Kommunikation über gemeinsame Speicherbereiche
- Alle Vorlesungsfolien in einer PDF-Datei (Stand 15. Juni 2015)
Ü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. Eine erfolgreiche Teilnahme an den Übungen (Vorleistung) ist erforderlich, um sich für die schriftliche Prüfung anmelden zu können.
- Zu den Übungsblättern und den zugehörigen Materialien
Kontakt
Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.22
Fabian Berstecher (Übungsleiter)