Systempraktikum
Praktikum im Wintersemester 2008/2009 (LMU)
Prof. Dr. H.-G. Hegering, Prof. Dr. Dieter Kranzlmüller, Thomas Schaaf
Aktuelles
- 19.02.2009: Die benoteten Praktikumsscheine (nur Diplom-Studenten) liegen ab der kommenden Woche (23.02.) zur Abholung im Lehrstuhl-Sekretariat bereit. Bitte die Sprechzeiten beachten!
Inhalte des Praktikums
Das Systempraktikum richtet sich an Studenten der LMU und gilt als Wahlpflichtpraktikum für die Studiengänge Informatik Bachelor und Medieninformatik Bachelor (sowie die Studiengänge Informatik Diplom und Medieninformatik Diplom, jeweils vor dem Vordiplom). Im Rahmen des Praktikums werden ausgewählte Probleme und Fragestellungen aus dem Bereich der systemnahen Programmierung behandelt. Die Themen und Aufgaben umfassen u.a.:
- Spezifikation von Schnittstellen und modularer Aufbau von Systemsoftware
- Formatierte Ein-/Ausgabe
- Parser-Generierung
- CPU-Zuteilungsstrategien (Scheduling)
- Prozesse und deren Verwaltung
- Verfahren der Prozesskommunikation und -synchronisation
- Signale, Pipes und Sockets
- Kommunikationsprotokolle
- Die TCP/IP-Protokollfamilie
- Das Client/Server-Modell
Voraussetzungen
Im Unterschied zum Softwareentwicklungspraktikum (Programmierpraktikum) werden Vorkenntnisse in einer spezifischen Programmiersprache nicht vorausgesetzt. Im Rahmen der praktikumsbegleitenden Vorlesungen werden die erforderlichen Grundkenntnisse in der Programmiersprache C vermittelt. Dennoch ist es sinnvoll, Grundkenntnisse einer imperativen Programmiersprache (z.B. C/C++, Pascal, Java) mitzubringen oder im Vorfeld zu erlernen und mit Text-Editoren umgehen zu können.
Voraussetzungen zur Teilnahme am Systempraktikum sind:
- Grundkenntnisse einer imperativen Programmiersprache
- Rechtzeitige Anmeldung (siehe Termine)
Ein begleitender Besuch der Vorlesung Betriebssysteme (Informatik III) ist ebenfalls sinnvoll, aber nicht zwingend erforderlich. Einige der Konzepte aus der Vorlesung werden im Systempraktikum praktisch umgesetzt/angewendet. Insofern ergänzen sich die beiden Veranstaltungen.
Termine
Die erste Praktikumsvorlesung im Wintersemester 2008/2009 findet voraussichtlich am Montag, 13.10. (erster Tag des Wintersemesters), von 10 bis 14 Uhr statt. Danach findet die wöchentliche praktikumsbegleitende Vorlesung jeden Donnerstag von 14 bis 16 Uhr im Raum 1.14 im Gebäude der Oettingenstraße 67 (Institutsgebäude am Englischen Garten) statt.
Weitere Termine (vorläufig; es können sich noch Änderungen ergeben):
- 18.06.2008: Informationsveranstaltung/Praktikumsvorstellung für Studenten im zweiten Semester von 14.30 bis 15 Uhr im Raum M 118 (Hauptgebäude, Geschwister-Scholl-Platz 1)
- 18.06.2008: Beginn des Anmeldezeitraums
- 02.07.2008: Letzter Tag der Anmeldung
- 13.10.2008: Vorbesprechung und erste Vorlesung (mit Anwesenheitspflicht) von 10 bis 14 Uhr im Raum H.E.009 (Leibniz-Rechenzentrum Garching)
- 12.11.2008: Zwischenprüfungen ab 18 Uhr im Raum 1.14
- 22.01.2009: Abschlussprüfungen ab 14 Uhr im Raum 1.14
Anmeldung
Es gibt einen gemeinsamen Anmeldeprozess für das System- und das SWE-/Programmierpraktikum. Die Anmeldung für beide Praktika erfolgt dabei über ein Web-Formular, das an dieser Stelle zur Verfügung gestellt wird. Der Anmeldezeitraum läuft vom 18.06.2008 bis zum 02.07.2008 (letzter möglicher Tag der Anmeldung).
Einige Informationen zur Anmeldung: Sie können bei der Anmeldung zum Grundstudiumspraktikum eine Präferenz angeben und auswählen, an welchem Praktikum (System- oder Softwareentwicklungspraktikum) Sie gern teilnehmen möchten. Es ist nicht möglich, beide Praktika im gleichen Semester zu belegen. Der Zeitpunkt der Anmeldung innerhalb des Anmeldezeitraums spielt keine Rolle bei der Platzvergabe. Durch Ihre frühzeitige Anmeldung helfen Sie uns aber, sinnvoll zu planen und Sie später optimal zu betreuen.
Web-Anmeldung: Zum Anmeldeformular (freigeschaltet vom 18.06. bis zum 02.07.2008).
Aufgabenblätter
An dieser Stelle werden die Aufgabenblätter und das zugehörige Material zur Verfügung gestellt.
-
Merkblatt:
[PDF]
Material dazu: ---
-
Blatt 0 (Einführung in Linux, keine Abgabe erforderlich):
[PDF]
Material dazu: ---
-
Blatt 1:
[PDF],
[HTML]
Material dazu:
Aufgabe P-1-4 a [prog-1-4.c.rahmen]
-
Blatt 2:
[PDF],
[HTML]
Material dazu:
Aufgabe T-2-3 a [theo-2-3.c]
Aufgabe P-2-1 a [prog-2-1.c.rahmen]
-
Blatt 3:
[PDF],
[HTML]
Material dazu:
Aufgabe T-3-2 [theo-3-2-A.c],
[theo-3-2-B.c],
[theo-3-2-C.c],
[theo-3-2-D.c]
-
Blatt 4:
[PDF],
[HTML]
Material dazu:
Projektaufgaben [util.h],
[server.h],
[config.h],
[config.lex.rahmen],
[logger.h],
[logger.c.rahmen]
-
Blatt 5 (Achtung: Update!):
[PDF],
[HTML]
Material dazu:
Projektaufgaben [util.getToken.c],
[streamParser.c],
[stateMachine.c.rahmen],
[stateMachine.h.rahmen]
-
Blatt 6:
[PDF],
[HTML]
Material dazu:
Projektaufgaben [server.main.c.input],
[server.sighandler.c.rahmen],
[sched.c],
[sched.h],
[schedulers.h],
[rr.c],
[rr.h],
[util.readargv.c],
[util.readargv.h],
[util.semXXX.c],
[pri.h]
-
Programmrahmen für die Transition Functions:
[processTransition_invalidCommand.c.rahmen],
[processTransition_help.c.rahmen],
[processTransition_quit.c.rahmen] (selbst zu implementieren),
[processTransition_auth.c.rahmen],
[processTransition_editJob.c.rahmen],
[processTransition_setJobPri.c.rahmen],
[processTransition_newJob.c.rahmen],
[processTransition_remJob.c.rahmen],
[processTransition_status.c.rahmen] (selbst zu implementieren),
[processTransition_result.c.rahmen],
[processTransition_args.c.rahmen],
[processTransition_runJob.c.rahmen],
[processTransition_stopJob.c.rahmen],
[processTransition_return.c.rahmen] (selbst zu implementieren)
Hinweis: Die Programmrahmen der Transitionsfunktionen dienen zur Orientierung und als Hilfestellung. Eventuell sind Anpassungen an die eigene Implementierung erforderlich.
-
Blatt 7:
[PDF],
[HTML]
Material dazu:
Projektaufgaben
[getaddrinfo_beispielserver.c],
[getaddrinfo_beispielclient.c],
[listen_server.h],
[connect_client]
Skript
Ein begleitendes Folienskript wird hier kapitelweise zum Download zur Verfügung gestellt.
- Foliensatz 1:
[PDF]
Material dazu:
Folie 9 [hello.c]
Folie 13 [einausgabe.c]
Folie 15 [zeiger1.c]
Folie 16 [zeiger2.c]
Folie 17 [params.c]
Folie 21 [speicher.c]
Folie 28 [createfile.c]
Folie 32 [p1_modul1.c],
[p1_modul2.c],
[p2_main.c],
[Makefile]
- Foliensatz 2:
[PDF]
Material dazu:
Folie 6 [modul1.c],
[modul2.c],
[main.c]
Folie 7 [modul1.c],
[modul2.c],
[main.c]
Folie 9 [geometrie.h],
[geometrie.c]
Folie 10 [main.c]
Folie 11 [algebra.h],
[algebra.c]
Folie 12 [cbrfalsch.c]
Folie 13 [main.c],
[plusminus.c]
Folie 14 [main.c],
[plusminus.c]
Folie 15 [main.c],
[plusminus.c]
Folie 17/18 [array.c]
Folie 20 [structure.c]
- Foliensatz 3:
[PDF]
Material dazu:
Folie 11 [fork1.c]
Folie 12 [fork2.c]
Folie 13 [fork3.c]
Folie 14 [fork4.c]
Folie 16 [printargs.c]
Folie 17 [exec.c]
Folie 21/22 [pipes1.c]
- Foliensatz 4:
[PDF]
Material dazu:
Folie 17 [myparser.lex]
- Foliensatz 5:
[PDF]
Material dazu:
Folie 9 [signal1.c],
[signal2.c],
[signal3.c]
Folie 10 [signal4.c]
Folie 11 [signal5.c]
Folie 14/15 [signal6.c]
Folie 18/19 [signal7.c]
- Foliensatz 6:
[PDF]
Material dazu:
Folie 16/17 [shm1.c]
Folie 23/24 [semaphore.c]
- Foliensatz 7:
[PDF]
Material dazu:
Folie 26 [socksrv.c]
Kontakt
Bei Fragen, Kritik oder Anregungen schreiben Sie bitte eine E-Mail an schaaf@nm.ifi.lmu.de.