14.04.
2009
|
Anmeldung zum Kurs: über Clix!
|
Im SS2009 wird ein Kurs "Unix
II - Systemprogrammierung
unter Unix-artigen Systemen" von der Arbeitsgruppe Programmierung
(Prof. Hack) angeboten. (Schwerpunkt:
Systemprogrammierung unter GNU/Linux).
Der Kurs findet
während der Vorlesungszeit wöchentlich statt: 2-stündig mit
Übungen (2 CPs).
- Begriff "Systemprogrammierung"
bezeichnet die Erstellung von System-Software für ein
Rechnersystem.
- System-Software
kann grob unterteilt werden in "Betriebssystem-Software
(->Kern, Dienste)" und "(Betriebs-)
System-nahe Software".
- Hierbei
"vermittelt" (Betriebs-) System-nahe Software zwischen Anwendungen und
den rudimentären Funktionen des unterliegenden Betriebssystems;
einer der bekanntesten Vertreter für System-Software ist ein
Kommando-Interpretierer (Shell -- wie die
bash unter GNU/Linux-Systemen).
- Die
Programmierung von System-naher Software wird auch als Programmierung
auf der Betriebssystem-Ebene bezeichnet.
Ein Systemprogrammierer ist hier mit einer Vielfalt an
rudimentären Systemfunktionen und -eigenschaften konfrontiert, aus
denen er geeignet auswählen muss, um eine hohe Performance
und/oder Sicherheit seiner zu erstellenden Systemkomponente zu
erreichen: z.B.
- Funktionen
zum Kreieren und Termieren von Prozessen;
- Funktionen
zum Kreieren und Termieren von Threads innerhalb Prozessen;
- Funktionen
für Eingabe/Ausgabe von/zu Geräten oder Dateien;
- Funktionen
für Kommunikation und Datenaustausch zwischen Prozessen;
- Funktionen
für Synchronisation zwischen Prozessen;
- Funktionen
zur Kommunikation über Netzwerke;
- Funktionen,
um Systemobjekte (z.B. Dateien) vor unberechtigtem Zugriff zu
schützen;
- usw.
In
Teilen wird der Systemprogrammierer sogar die Eigenschaften der
unterliegenden Hardware des
Rechnersystems gewahr, z.B. Anzahl der Prozessoren, Festplatten usw.
Somit ist ein tiefgehendes Verständnis verfügbarer
Betriebssystemfunktionen und
Systemeigenschaften für den Systemprogrammierer als Ersteller
System-naher
Softwarekomponenten unerläßlich!
Dieser Kurs
präsentiert
- die Funktionen und Eigenschaften von Unix-artigen
Systemen (insbesondere GNU/Linux-Systemen),
welche durch einen
Unix/Linux-Systemprogrammierer eingesetzt werden können, um
System-nahe Software für Unix/Linux in der Programmiersprache C zu
erstellen.
- kleinere Beispiele demonstrieren ihre
prinzipielle Nutzung;
- das
Zusammenspiel einiger Funktionen wird demonstriert, indem die
Implementierung einiger Shell-Mechanismen durch diese Funktionen
skizziert wird.
- Themen in
Schlagworten:
- fundamentale
Konzepte Unix-artiger Systeme; Standards; GNU clib und GNU gcc;
- Zeichensatz,
Zeichensatz-Kodierungen, Konvertierungen von Zeichensatz-Kodierungen;
Lokalisierung, Internationalisierung;
- File
I/O: von open() bis close(); blockierend/nicht-blockierend;
synchron/asynchron; Filedeskriptoren und File-Sharing; Eigenschaften
von Files und Directories;
- Prozesse:
Prozess-Eigenschaften (PID, ...); Prozess-Kontrolle (fork, exit,
wait,...);
- Programm:
-Struktur; -Speicherlayout; -Argumente/-Optionen; -Environment; Starten
eines Programms (exec);
- POSIX-Threads:
Thread-Kontrolle und -Synchronisation
- Speicherverwaltung:
Speicherallokation; Shared-Memory; Memory-Mapped Files;
- Interprozess-Kommunikation/-Synchronisation:
Pipes, Named-Pipes ("Fifos"); Message-Queues; Shared-Memory; Semaphore
- Signal-Handling
- Terminal-I/O:
Session; Prozess-Gruppen; Konsolen;
- Linux-Spezifisches:
z.B. clone(); cpuset; ...
Der Kurs mit
den zugehörigen Übungen findet in deutscher Sprache statt.
Termine,
Uhrzeit,
Hörsaal
|
Präsenz-Veranstaltung:
-
Uhrzeit, Ort: Freitag, 12.00 - 14.00 Uhr; Hörsaal 003 im
Informatik-Gebäude E13
Übungsbetrieb:
-
Uhrzeit, Ort: Mittwoch, 16-18 Uhr;
Computer-Raum 104, E13
Kredit-Punkte, Klausur-Termin
|
- Der Kurs
ist
keine verpflichtende Veranstaltung, sondern ein zusätzliches
Angebot für Studierende (Bachelor) der Fachrichtung 6.2.
- Bei
regelmäßiger Teilnahme, Bearbeitung der Übungen
und Bestehen einer Klausur gibt es
2 Kredit-Punkte.
- Klausur-Termin:
(geplant) 1te September-Woche
-
Dieser
Kurs richtet sich an Studenten der FR 6.2 (ab dem 3ten
Semester!)
Voraussetzungen für die Teilnahme
|
Grundlegende Kenntnisse in:
- Programmiersprache
C:
- u.a.
Zeiger, Vektoren, Funktions-Typ, Bit-Operatoren,
C-Präprozessor-Direktiven
- Nutzung
von C unter der GNU-Compiler-Collection (gcc)
- Vertraut
sein mit einer Unix-Umgebung, insbesondere mit einer GNU/Linux-Umgebung:
- Shell(bash)-Benutzung
für Kommando-Eingaben über die Tastatur,
- Basis-Unix(Linux)-Kommandos
wie cd, find, grep, usw.
- in groben
Zügen: Aufbau (Hardware,
Software)
und Funktionsweise von Computersystemen kennen: Prozessor, Speicher,
Platte, ... ; Betriebssystem, Betriebssystemkern und Treiber; Desktop;
Compiler; Netzanbindung eines Computers;
z.B. durch
die tagtägliche Nutzung eines Rechners im Studium (Programmierung 1, Programmierung 2, Systemarchitektur)
Vorteilhaft
sind grundlegende Kenntnisse aus der Grund-Vorlesung "Nebenläufige Programmierung":
Threads und Synchronisation.
Anmeldungen sind ab dem 15. April über das eLearning-Portal CLIX der
Universität des Saarlandes möglich.
Kurs-Dozenten,
Kurs-Tutoren |
- Dozent: Dipl.Inform. R.
Spurk (srk at cs dot uni-sb dot de;
Zi 434
E13; Tel. 3016)
Fragen (und
Anregungen) richten Sie bitte an ihn!
- Tutoren/Betreuer: ... zur
Zeit noch gesucht! (Interessenten bitte melden!)
Programmierübungen
(Systemprogrammierung) unter GNU/Linux-Systemen (gegebenenfalls auf
Virtueller Maschine mit einem GNU/Linux-System als Gast-System).
-----
R. Spurk, Aktualisiert: 05 Mai 2009; srk at cs dot
uni-sb.
dot
de