|
|
Systemprogrammierung (SS 2013)
Hier finden Sie Informationen und Material zu meiner Vorlesung
"Systemprogrammierung Unix/Linux"
an der TH Nürnberg.
Systemprogrammierung Unix/Linux (SS 2013)
Im Sommersemester 2013 habe ich Vorlesungen im Fach Systemprogrammierung Unix/Linux gehalten.
Vorlesungsstart war am 19. März um 15:45 Uhr.
Unterlagen benötigen Sie zunächst keine; ich stelle im Laufe des
Semesters die verwendeten Vorlesungsfolien im PDF-Format zum Download
zur Verfügung. Übungsblätter bringe ich
als Ausdrucke mit. Wenn Sie im Praktikum ein eigenes Notebook
verwenden möchten, ist das möglich. Darauf sollten dann Linux und die
Entwicklungsumgebung (C-Compiler & Co.) installiert sein. Sie können
aber auch die Linux-PCs im Praktikumsraum nutzen.
Als Prüfungsform finden Sie im Vorlesungsverzeichnis den Eintrag
"Studienarbeit (semesterbegleitende Entwicklung eines Programms mit
abschließendem Kurzvortrag)". Sie werden im Rahmen des Praktikums eine
kleine systemnahe Anwendung unter Linux entwickeln und zum Semesterende
kurz (nach inhaltlicher Absprache) über einen Aspekt Ihrer Lösung
vortragen und Fragen dazu beantworten.
Inhalte
Die folgende Themenplanung ist provisorisch; die exakten Themen
(die nicht genau deckungsgleich mit denen vom letzten Sommersemester
sein werden) hängen von den Projektaufgaben ab. (Es wird neue
Projektaufgaben geben, nicht die alten vom SS 2012.)
- Einleitung
- Einführung in C und die Linux-Shell Bash
- Software und Betriebssystem; System Calls
- Prozesse: fork, exec, wait
- Dateien: open, read, write, close
|
- Fortgeschrittene I/O (dup, pipe, mmap)
- Speicherverwaltung: malloc, free
- Nebenläufigkeit mit POSIX-Threads
- Projekt: Implementierung einer Thread-Bibliothek
|
Aktuelles
[2013/07/04] Die Ergebnisse der Abschlussevaluation sind online.
[2013/07/02] Bitte bewerten Sie meinen Kurs (sinnvollerweise nach Erhalt der Note) auch bei
meinprof.de. Direkter Link zur Kursseite
[2013/06/28] Der Ersatztermin für den 09.07. steht jetzt fest:
Donnerstag, 04. Juli, 15:45-19:00 Uhr in Raum 305
[2013/06/25] Deadline verlängert: Der Abgabetermin ist jetzt Sonntag, 30. Juli um 10 Uhr morgens!
[2013/06/25] Bitte nehmen Sie an der
Doodle-Umfrage teil -- wir suchen
einen Ersatztermin für den 09.07.
[2013/05/28] Ich habe die Aufgaben aus Übung 9 auf 64-Bit-Linux portiert und als separates
Archiv nochmal auf diese Seite gestellt (siehe unten, fett gedruckt). Damit sollten sich die
Stack-Aufgaben auch auf den Rechnern im Rechnerpool nachvollziehen lassen. Beim Kompilieren dann
die Option -m32 nicht verwenden (aber beim Thread-Programm an
-lpthread denken).
[2013/04/30] Wir setzen heute in der Übung die Bearbeitung der Aufgaben von letzter Woche fort;
gleichzeitig gibt es auch ein neues Übungsblatt.
[2013/04/30] Die Musterlösungen zu den Übungen 2-4 sind jetzt online (Code-Archive und zu Übung 3 auch
eine PDF-Datei).
[2013/04/23] Die Ergebnisse der Evaluation sind online -- danke fürs Mitmachen!
[2013/02/06] Die Termine für das kommende Semester stehen fest.
Material
Termine:
- Dienstags, 15:45-17:15: Vorlesung
- Dienstags, 17:30-19:00: Übung
Die Folien können Sie in zwei Varianten herunterladen: 1-up
(eine Folie pro A4-Seite) und 4-up (vier Folien pro A4-Seite).
# | Tag |
Thema | Folien (pdf), Übungen, Lösungen | Video (mov) |
1 | 19.03.2013 |
Einführung, Organisatorisches, Crashkurs C / Bash (1.1-1.21, 2.1-2.16) |
Foliensatz 1:
1-up,
4-up
Foliensatz 2:
1-up,
4-up
Übung 1: ue01.pdf,
Code: ue01.tgz
|
#1 (97 MB),
#2 (19 MB)
|
2 | 26.03.2013 |
Crashkurs Bash (2.17-2.49) |
Übung 2: ue02.pdf
Lösung: ue02-loesung.tgz
|
#1 (87 MB),
#2 (17 MB)
|
3 | 09.04.2013 |
Crashkurs Bash (Rest), System Calls (2.50-2.66, 3.1-3.17) |
Foliensatz 3:
1-up,
4-up;
Übung 3: ue03.pdf,
Code: ue03.tgz;
Lösung: ue03-loesung.tgz
|
#1 (97 MB),
#2 (17 MB)
|
4 | 16.04.2013 |
System Calls (Rest), Prozesse (3.18-3.36, 4.1-4.20) Lösung Ü3 |
Foliensatz 4:
1-up,
4-up
Übung 4: ue04.pdf,
Code: myps.c
Lösung: myps1.c,
myps2.c
|
#1 (97 MB),
#2 (28 MB)
|
5 | 23.04.2013 |
Prozesse (Rest), Dateien, Evaluation (4.21-4.26, 5.1-5.28) Lösung Ü4 |
Foliensatz 5:
1-up,
4-up
Übung 5: ue05.pdf,
Code: ue05.tgz,
Lösung: ue05-loesung.tgz
|
#1 (78 MB),
#2 (23 MB)
|
6 | 30.04.2013 |
Fortgeschrittene I/O, Besprechung Eval. (6.1-6.22) |
Foliensatz 6:
1-up,
4-up
Übung 6: ue06.pdf,
Code: ue06.tgz,
Lösung: ue06-loesung.tgz
|
#1 (97 MB)
|
7 | 07.05.2013 |
Mehr zu C (2a.1-2a.9),
Speicherverwaltung (7.1-7.21)
Lösung Ü5 |
Foliensatz 2a:
1-up,
4-up
Foliensatz 7:
1-up,
4-up;
Übung 7: ue07.pdf,
Lösung: spsh-ramdisk.c
|
#1 (90 MB),
#2 (23 MB)
|
8 | 14.05.2013 |
Speicher (Rest; 7.22-7.28);
Threads (8.1-8.24); Lösung Ü6 |
Foliensatz 8:
1-up,
4-up;
Übung 8: ue08.pdf;
Link zu Thread/Fork-Artikel
Lösung: ue08-loesung.tgz
|
#1 (83 MB),
#2 (24 MB)
|
9 | 28.05.2013 |
Einführung Projekt;
Lösung Ü7 und Ü8
|
Foliensatz 9:
1-up,
4-up;
Übung 9: ue09.pdf,
Code: ue09.tgz,
ue09-64bit.tgz (64-Bit-Version)
|
#1 (100 MB)
|
10 | 04.06.2013 |
Besprechung von Übung 9; Projekt |
Übung 10: ue10.pdf,
Code: ue10.tgz
|
#1 (62 MB)
|
11 | 11.06.2013 |
Projekt (ohmthread_create, ohmthread_exit) |
Übung 11: ue11.pdf,
Code: ue11.tgz
|
-- |
12 | 18.06.2013 |
Projekt (ohmthread_join, Bibliothek) |
Übung 12: ue12.pdf,
Code: ue12.tgz
|
-- |
13 | 25.06.2013 |
Projekt |
Übung 13: ue13.pdf,
Code: ue13.tgz
|
-- |
14 | 02.07.2013 |
Projekt-Vorträge (1) |
-- |
-- |
15 | 04.07.2013 |
Projekt-Vorträge (2), Raum 305 |
-- |
-- |
Literatur
- Helmut Herold: Linux/Unix Systemprogrammierung, 2004, ISBN: 3827321603
- Richard Stevens und Stephen A. Rago: Advanced Programming in the Unix Environment, ISBN: 0321525949 (2005), 0321637739 (neue Auflage, erscheint 05/2013)
- Elias Fischer: Das C-Tutorial
- Ted Jensen: A Tutorial on Pointers and Arrays in C, 2003
Evaluation, MeinProf...
Ich evaluiere alle Veranstaltungen. Zu den verschiedenen Vorlesungen finden Sie
die Auswertungen der Evaluationen
auf einer separaten Seite.
Unabhängig von den regelmäßigen Evaluierungen würde ich mich freuen, wenn Sie
meine Veranstaltung auch auf MeinProf.de bewerten; mein Profil finden Sie
hier.
Hier ist der
direkte Link zur Kursseite bei meinprof.de.
|