Systemprogrammierung

Vorlesung

Den praktischen Teil des Kurses bestanden und damit die Zulassung zur
Klausur erlangt haben folgenden Studenten:
25205110, 26213279, 28103057, 29251814, 30205613, 30207048, 30211063,
31202534, 32206584, 32207059, 32208977, 32209426, 32215685, 32219649,
32221404, 32223101, 32223525, 32227725, 33104656, 33202477, 33203230,
33205089, 33205445, 33206127, 33207304, 33207508, 33210016, 33210032,
33211455, 33211882, 33211934, 33212755, 33227258, 33230711, 33236906,
33246909, 33303729, 33305824, 33306386, 33306441, 33306522, 33307123,
33307686, 33308410, 33311326, 33311711, 33312574, 33312642, 33313214,
33313227, 33313764, 33313829, 33313858, 33314352, 33349204, 33360542,
33365932, 33369271, 33375087, 33436324
Die Bewertung der Berichte können bei der Klausureinsicht betrachtet werden.

Erlaubte Hilfsmittel für die Klausur: Ein selbsterstelltes DIN-A4-Blatt (Vorder- und Rückseite) - handschriftlich oder per Computer erstellt. Ein nicht programmierbarer Taschenrechner.

Lernziele:
Grundlagen der Systemprogrammentwicklung, Bewertungskriterien von Systemsoftwarekomponenten, Modelle der Systemsoftwareentwicklung, Interprozesskommunikation, Prozesssynchronisation, Systembefehle, Anwendung der Systembefehle.       
 
Inhalte:

Systemsoftwareentwicklung, Systembefehle, Bewertungskriterien

Vorkenntnisse:
Betriebssysteme, Grundlagen der C Programmierung, Grundlagen der Mathematik

Lehrveranstaltungsnummer: FB16-6605  

Ort und Zeit:
Dienstags, 10:00 Uhr - 12:00 Uhr, Raum -1418

Beginn: 19.04.2016

Dozent:

Umfang:
3 SWS bzw. 5 CP 

Übung

Ort und Zeit:
Dienstags, 17:00 Uhr - 19:00 Uhr, Raum -1201
Mittwochs, 14:00 Uhr - 16:00 Uhr, Raum -1201

Beginn: Erster Termin wird in der Vorlesung bekanntgegeben.

Übungsbetreuer:

Übungsblätter:
Übungsblatt 1
Lösung-Übungsblatt 1
Übungsblatt 2
Lösung-Übungsblatt 2
Übungsblatt 3
Lösung-Übungsblatt 3
Übungsblatt 4
Lösung-Übungsblatt 4
Übungsblatt 5
Lösung-Übungsblatt 5
Übungsblatt 6
Main.c
Makefile
Task.c
Task.h

Kontakt:
Email an das Sekretariat

Praktischer Teil

Abgabe des Projektberichts
Geben Sie bitte pro Projektgruppe einen ausgedruckten Bericht ab. Drucken
Sie auch den Quelltext ihres Treibers mit aus.  Abgabeschluss ist Freitag,
12. August 2016. Der Projektbericht kann täglich von 9 Uhr bis 17 Uhr in
Raum 3105 abgegeben werden.
Der aktuelle IST-Stand Ihres Treibers wird bei Abgabeschluss automatisch
gesichert. Dieser Stand dient als Grundlage zur Bewertung. Die Boards stehen
danach jedoch weiterhin zur Klausurvorbereitung zur freien Verfügung.

Hinweis: Für den Download ihres Quelltextes können Sie sich mit einem FTP
Client der das sFTP Protokoll unterstützt (z.B. FileZilla) mit ihren
Zugangsdaten auf ein beliebiges Board verbinden.

Das Labor steht außerhalb der regulären Übungszeiten jeden Donnerstag und
Freitag jeweils von 9 Uhr bis 12 Uhr für selbstständiges Arbeiten an dem
Projekt zur Verfügung.

Systematische Systemsoftware - Entwicklung eines Real - Time - Clock - Treibers

Dokumentation für den praktischen Teil der Veranstaltung

Online Zugang

vi-Kurzreferenz

Befehlsreferenz

Treiberprogrammierung:

Quade, J.;Kunst, E-K.: Linux-Treiber entwickeln : Gerätetreiber für Kernel 2.6 systematisch eingeführt, Dpunkt.Verlag Gmbh, 2006

Online-Version (Deutsch)

Corbet, J.; Rubini, A.; Kroah-Hartman, G.: Linux device drivers, O'Reilly Media, 2005

Online-Version (Englisch)

I2C-Schnittstelle und ihre Einbindung in den Kernel:

Writing Clients (Artikel basiert auf der Version der I2C-Schnittstelle die im Treiberprojekt verwendet wird)

I2C-Drivers Part 1  (Artikel basiert auf einer leicht veränderten Version der I2C-Schnittstelle gegenüber der im Treiberprojekt verwendeten) 

I2C-Drivers Part 2  (Artikel basiert auf einer leicht veränderten Version der I2C-Schnittstelle gegenüber der im Treiberprojekt verwendeten)  

Using the I2C Bus with Linux (Artikel basiert auf einer leicht veränderten Version der I2C-Schnittstelle gegenüber der im Treiberprojekt verwendeten)  

Bits im Gänsemarsch 

RTC-Chip:
Datenblatt  (Englisch)

Literaturverzeichnis

Allgemeine  Literatur: 

Achilles, A.: Betriebssysteme: eine kompakte Einführung mit Linux, Springer Verlag, 2006

Amme, W.: Implementierung und Evaluierung verschiedener Speicherverwaltungsstrategien in einem UNIX-ähnlichen Lehrbetriebssystem, Tectum-Verlag, 1995

Andleigh, P. K.: Unix System Architecture, Prentice Hall, 1989

Bach, M. J.: UNIX -- Wie funktioniert das Betriebssystem?, Hanser, 1991

Balzert, H.: Lehrbuch der Software- Technik 1/2, Spektrum Akademischer Verlag, 2000

Beck M., Böhme, H., Dziadzka, M.: Linux- Kernel- Programmierung. Algorithmen und Strukturen der Version 2.0, Addison-Wesley, 1997
UNIX-Werkzeuge "lex" und "yacc", Diplomarbeit, FH Hamburg, FB E/I, 1997

Bock, W.: Shellprogrammierung, bhv Buch Verlag, 2006

Boehm B. W.: Software Engineering Economics, Prentice-Hall, 1981. Boich, G.: Echtzeitbetriebsysteme, Universität Erlangen-Nürnberg, Informatik, 2002

Booch, G., Rumbaugh, J., Jacobson, I.: Das UML-Benutzerhandbuch, Addison-Wesley, 1999

Brecht, W.: Einführung in UNIX : ein Lehr- und Arbeitsbuch für Studium und Praxis, Vieweg, 1996

Burmeister, A.: Der Einstieg in UNIX, Hanser Verlag, 2000

Buschlinger, E.: UNIX für Software-Entwickler : Konzepte, Werkzeuge und Ideen, Teubner, 1993

Carre B. A., Jennings T. J., Maclennan F. J., Farrow P. F., Garnsworthy, J. R.: SPARK - The SPADE Ada Kernel, 3rd Edition,
Validation Limited, 1990

Christian, K.: C. and UNIX Dictionary: From Absolute Pathname to Zombie, John Wiley & Sons Inc., 1988

Crowley, C.: Operating Systems, Richard D. Irwin, 1997

Cullyer W. J., Goodenough S. J., Wichmann, B. A.: The choice of computer language for use in safety-critical systems, Software Engineering Journal, Vol. 6, No. 2, March 1991

Dijkstra, Edsger W.: Cooperating Sequential Processes, Report EWD Tech. Univ. Eindhoven 1965

Dümbgen, L.: Stochastik für Informatiker, Springer Verlag,2003

Egan, J. I.: Writing a UNIX device driver, Wiley, 1992

Ehrenberger, W.: Softwareverifikation - Verfahren für den Zuverlässigkeitsnachweis von Software, Hanser Verlag, 2002

Ehses, E. et. Al.: Betriebssysteme : ein Lehrbuch mit Übungen zur Systemprogrammierung in UNIX/Linux, Pearson Studium, 2005

Gräfe, M.: C und Linux: die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen, Hanser Verlag, 2003

Griffith, A.: GCC. The Complete Reference, Osborne McGraw-Hill, 2002

Haviland, K.: UNIX system programming : a programmer's guide to software development, Addison-Wesley, 1999

Herold, H.: Linux-Unix-Systemprogrammierung, Addison-Wesley, 2003

Heuer, K.: Programmentwicklung unter UNIX, Addison-Wesley, 1994

Horn, T.: Systemprogrammierung unter UNIX, Addison-Wesley, 1994

Linda L., Robbins A.: Learning the vi Editor, O'Reilly, 1998

Mauerer, W.: Linux Kernelarchitektur, Hanser Verlag, 2004

Negus, C.: Linux Bible, John Wiley & Sons, 2005

O'Dowd, D. / Kleidermacher, D.: Wenn 99,999 Prozent nicht reichen Elektronik 7, 2002, S. 78 - 81

Quade J., Kunst E.: Linux-Treiber entwickeln. dpunkt-Verlag 2004

Rubini A., Corbet J.: Linux-Gerätetreiber. O'Reilly, 2002

Robbins, K. A.: Practical UNIX programming : a guide to concurrency, communication, and multithreading, Prentice Hall, 1996

Rochkind, M.J. : Advanced UNIX Programming, Prentice-Hall Inc., Englewood Cliffs, New Jersey, ISBN 0-73-011818-4, 1985

Siever, E.: LINUX in a Nutshell, O'Reilly, 1999

Sommerville, I.: Software Engineering, Addison Wesley, 2004

Stevens, W. R.: UNIX Network Programming, Volume 1, Second Edition: Networking APIs: Sockets and XTI, Prentice Hall, 1998

Stevens, W. R.: UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications, Prentice Hall, 1999

Stevens, W. R.: Advanced programming in the UNIX environment, Addison-Wesley, 2005

Tanenbaum, A. S.: Modern Operating Systems, Prentice Hall, 1992

Tanenbaum, A. S.: Operating systems: design and implementation. Prentice-Hall, 1997

Thaller, G. E.: Verifikation und Validation, Vieweg, 1994

Wolf, J.: Linux-Unix-Programmierung, Galileo Press 2005