Lecture: Systemnahe Programmierung

Course:

Exercises:

Other:

  • Term: Bachelor Computer Science
  • Requirements:
  • Faculty: BA-INF 034/129
  • Effort: 2L + 2E / 6CP

Ankündigungen - wichtige Termine

(erledigte Ankündigungen und erledigte Termine siehe ganz unten)

Die Ergebnisse der Nachklausur vom 19.03.2013 wurden am Mo 8.4.2013 in BASIS/POS eingetragen. Die bekannten undefinedGraphen mit Statistiken zum Ausfall sind hier zu finden.

Eine Klausureinsicht findet am Freitag 12.04.2013 um 13.30h statt (siehe Mailingliste).

Zulassungsliste für Nachklausur am 19.03.2013 => siehe Mail auf Mailingliste!

Ergebnisse der Modulklausur vom 06.02.2013 (undefinedGraphen mit Statistiken, undefinedErgebnisliste nach Matrikelnr.)

Die Klausureinsicht fand am Montag 04.03.2013 statt, die Noten wurden danach in BASIS/POS eingetragen. Evtl. Abweichungen bitte umgehend bei uns melden!

undefinedEndgültige Zulassungsliste zur Teilnahme an der Prüfung (Stand Mo 28.01.2013) - bitte die begleitende Mail auf der Mailingliste beachten:

undefinedEndgültige Zulassungsliste (28.01.2013)

Vorläufige Liste vom Fr 11.01.2013, 14.45h: Zulassungsliste (undefinedKurzform), Zulassungsliste (undefineddetailliert)

undefinedGruppenzuteilung der Sys-Prog Übungen (Stand 16.10.2012, 21.00h) - bitte die begleitende Mail auf der Mailingliste beachten.

 

Klausurtermine:

  • erste Prüfungsmöglichkeit: Mittwoch 6.2.2013, vormittags 10.00h bis 11.30h (Dauer 90 min.), Römerstr. 164 HS 1+2
  • Wiederholungsprüfung: Dienstag 19.3.2012, vormittags 10.00h bis 11.30h (Dauer 90 min.), Römerstr. 164 HS 1
  • bitte bis spätestens 30.11.2012 über BASIS/POS zur Teilnahme an der Prüfung anmelden

Krankmeldungen für Prüfungstermine werden  nur als Original und mit dem Formblatt "Anlage zur Krankmeldung" akzeptiert und sind spätestens drei Tage nach dem Prüfungstermin im Prüfungsbüro Informatik einzureichen. Zusätzlich sind die Organisatoren der Systemnahen Programmierung per E-Mail über die eingereichte Krankmeldung zu informieren.

 

Programmiersprache C

Im Bereich der systemnahen Programmierung wird als Programmiersprache häufig kein objektorientiertes Java oder C++ verwendet, sondern C. Um die Vorlesung erfolgreich absolvieren zu können, ist die Kenntnis von C sehr wichtig.Im Modul BA-INF 014 "Algorithmisches Denken und imperative Programmierung" (aka ADiP, WS 2011/2012) wurde C als imperative Programmiersprache behandelt.

Davon unabhängig wird es in der zweiten Vorlesungswoche einen sehr kurzen Überblick über die wichtigsten Konzepte von C geben - dies kann aber auf keinen Fall eine praktische (tiefere) Einarbeitung in C ersetzen! 

Der Klassiker über die Programmiersprache C ist nach wie vor das Buch von Brian W. Kernighan und Dennis Ritchie: The C Programming Language. Für Teilnehmer/innen mit Vorkenntnissen und Erfahrungen mit Java könnten die folgenden Links hilfreich sein:

Mailingliste

Für die Vorlesung Systemnahe Programmierung wurde eine Mailingliste eingerichtet, über die aktuelle Informationen zur Vorlesung und den Übungen verbreitet werden sollen. Die Anmeldung ist unter dieser undefinedAdresse möglich. Es werden nur Anmeldungen von Studenten akzeptiert, die auch für die Übungen angemeldet sind. Die Mails der Mailingliste werden archiviert.

Folien und Präsentationen

Von den Studentenrechnern des Instituts aus sind die Dateien frei zugänglich; Zugriffe von anderen Rechnern erfordern ein Paßwort, welches in den Übungen zur Vorlesung bekannt gegeben wird.

KapitelPDF-File
0. Allgemeine InformationenFolien 1-19
C-Crash-Kurs für Java-ProgrammiererFolien 1-37

1. Netzwerkprogrammierung in C

1.1. Motivation
1.2. Netzwerkprogrammierung: Sockets & Co.
1.2.1. Einführung zu Sockets

Folien 1-43

1.2.2. Socket-Adressen
1.2.3. Network Byte Order
1.2.4. Kommunikation über Sockets mit UDP
1.2.5. Kommunikation über Sockets mit TCP
1.2.6. Zwischenresümee, Adressübersicht, Hilfsfunktionen
Folien 44-87
1.3. I/O-Multiplexing
1.4. Server-Strukturen
1.5. Zusammenfassung
Folien 88-131

2. Maschinenprogrammierung in Assembler

2.1. Motivation
2.2. Bezug zur Systemnahen Informatik (SS 2012)
2.3. Allgemeines zu 80x86 Assembler-Programmierung
2.4. Calling Conventions (aus C unter Linux)
2.5. Bezug zur 2-Adressmaschine (Systemnahe Informatik, SS 2012)
2.6. Assembler-Programmbeispiele
2.7. Socket-/Netzwerkprogrammierung in Assembler
2.8. Zusammenfassung

Folien 1-76
2. Ergänzung: Fall-Studien
(aktualisierte Version nach der Vorlesung vom 4.12.2012)

Folien 1-30

(Folien-Update) Link offline, s. Sys-Prog WS13/14

2. Ergänzung: SpeicherverwaltungFolien 1-18

3. Fortgeschrittene Konzepte der Systemprogrammierung

3.1. Processes

Folien 1-46

3.2. Threads
3.2.1. Fundamentals
3.2.2. Threads in Linux

Folien 1-40
3.2.3. Thread Synchronisation
3.2.3.1. Mutex variables
3.2.3.2. Condition variables
3.2.3.3. Semaphores
3.2.3.4. Barriers
3.2.3.5. Read-write locks
3.2.4. Deadlocks
3.2.5. Important Threading Mechanisms
Folien 41-108

3.3. Interprocess Communication IPC
3.3.1. Basics
3.3.2. Files
3.3.3. Message Passing
3.3.4. Shared Memory
3.3.5. Semaphores
3.3.6. Signals

Folien 1-110

Erledigte Ankündigungen - erledigte Termine

Die erste Vorlesung fand am Dienstag 09.10.2012 um 14.30 Uhr in Hörsaal 1 im AVZ-III in der Römerstr. 164 statt. Dort werden alle weiteren Informationen zur Organisation von Vorlesung und Übungen gegeben (undefinedHinweise zum Übungsbetrieb).

Der erste Übungszettel erscheint in der Woche vom 09.10.2012 (siehe unten), der eigentliche Übungsbetrieb beginnt dann in der Woche ab Montag 22.10.2012.

Eintragung/Anmeldung zu den Übungen via TVS ist geöffnet (undefinedLink hier). Die Registrierung war offen bis Mo 15.10.2012 um 23.59h. Die Gruppenzuordnung sowie die Zugangsdaten zu SVN werden am Dienstag 16.10.2012 per Mail bekannt gegeben. Biite beachtet im weiteren die Hinweise der Mail an die Mailingliste (von 10.10.2012 16:02h).