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 E.20
- Übungen: Dienstag, 16–18 Uhr, Helmholtzstraße 18, Raum 1.20
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. Bitte tragen Sie sich im Uni-Portal rechtzeitig vor dem 14. Juli für die Vorleistung ein selbst wenn Sie erst den Prüfungstermin im Herbst wahrnehmen wollen. Die Prüfung wird schriftlich stattfinden mit zwei offen wählbaren Terminen:
- Donnerstag, den 21. Juli 2016 um 10:00 Uhr im H12 (Festpunkt N24)
- Donnerstag, den 6. Oktober 2016 um 14:00 Uhr in O27/123
Zur Vorbereitung auf die schriftliche Prüfung steht eine Probeklausur zur Verfügung, die in der Vorlesung am 11. Juli behandelt wird.
Vorlesungen
Zur Vorlesung steht ein Vorlesungsbegleiter zur Verfügung:
- 1. Kapitel zu Prozessen
- 2. Kapitel zu Signalen
- 3. Kapitel zu Pipes
- 4. Kapitel zu Netzwerkdiensten mit den Abschnitten 4.1 bis 4.5
- Alle bisher erschienenen Kapitel in einer PDF-Datei (Stand vom 6. Juni 2016)
Die Vorlesungsfolien und einige Beispiele stehen ebenfalls zur Verfügung:
- 11. April 2016 (Syllabus und Folien zum ersten Kapitel)
- 18. April 2016 (Beispiel: tinysh.tar.gz)
- 25. April 2016 (Folien zum zweiten Kapitel über Signale)
- 17. Mai 2016 (Folien zum dritten Kapitel über Pipes)
- 23. Mai 2015 (Einführung zu Netzwerkdiensten)
- 6. Juni 2015 (RFC 2396, Fragmentierung von Netzwerkpaketen, gepufferte Ein- und Ausgabe für Netzwerkverbindungen)
- 13. Juni 2015 (Protokollbeispiele)
- 20. und 27. Juni 2015 (Parallele Sitzungen)
- 4. Juli 2015 (UDP, UNIX-Domain-Sockets, Mutex- und Bedingungsvariablen auf gemeinsamen Speicherbereichen)
- Alle bisher veröffentlichten Folien in einer PDF-Datei (Stand vom 4. Juli 2016)
Ü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.
- Insgesamt gibt es 11 Übungsblätter, die für die Vorleistung berücksichtigt werden. Die Vorleistung wird anerkannt, wenn 60 Punkte erreicht worden sind. Das letzte Übungsblatt, das in die Bewertung eingeht, wird am 28. Juni ausgegeben.
- Die Übungsblätter und die zugehörigen Materialien sind auf einer separaten Webseite.
Kontakt
Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.22
Fabian Berstecher (Übungsleiter)