System programming

The content on this page was translated automatically.

Lecture

The following students have passed the practical part of the course and thus gained admission to the
exam:
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
The evaluation of the reports can be viewed during the examination.

Permitted aids for the written exam: A self-created DIN A4 sheet (front and back) - handwritten or computer-generated. A non-programmable calculator.

Learning objectives:
Basics of system program development, evaluation criteria of system software components, models of system software development, inter-process communication, process synchronization, system commands, application of system commands.

Contents:

System software development, system commands, evaluation criteria

Prior knowledge:
Operating systems, basics of C programming, basics of mathematics

Course number: FB16-6605

Time and place:
Tuesdays, 10:00 - 12:00, Room -1418

Start: 19.04.2016

Lecturer:

Scope:
3 SWS or 5 CP

Exercise

Time and place:
Tuesdays, 17:00 - 19:00, Room -1201
Wednesdays, 14:00 - 16:00, Room -1201

Start: First date will be announced in the lecture.

Exercise supervisor:

Exercisesheets:
Exercise sheet 1
Solution-exercise sheet 1
Exercise sheet 2
Solution-exercise sheet 2
Exercise sheet 3
Solution-exercise sheet 3
Exercise sheet 4
Solution-exercise sheet 4
Exercise sheet 5
Solution-exercise sheet 5
Exercise sheet 6
Main.c
Makefile
Task.c
Task.h

Contact:
Email to the secretariat

Practical part

Submission of the project report
Please hand in one printed report per project group. Please also print
the source code of your driver. The deadline for submission is Friday,
August 12, 2016. The project report can be submitted daily from 9 a.m. to 5 p.m. in
room 3105.
The current ACTUAL status of your driver will be automatically saved at
at the submission deadline. This status serves as the basis for evaluation. However, the boards are still available to
afterwards for exam preparation.

Note: To download your source code, you can connect to any board using an FTP
client that supports the sFTP protocol (e.g. FileZilla) with your
access data.

The lab is available for independent work on the
project every Thursday and
Friday from 9 a.m. to 12 p.m. outside the regular exercise times.

Systematic System Software - Development of a Real - Time - Clock - Driver

Documentation for the practical part of the event

Online access

vi quick reference

Command reference

Driver programming:

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

Online version (German)

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

Online version (English)

I2C interface and its integration into the kernel:

Writing Clients (article based on the version of the I2C interface used in the driver project)

I2C-Drivers Part 1 (Article based on a slightly modified version of the I2C interface compared to the one used in the driver project)

I2C-DriversPart 2 (Article based on a slightly modified version of the I2C interface compared to the one used in the driver project)

Using the I2C Bus with Linux (article based on a slightly modified version of the I2C interface compared to the one used in the driver project)

Bits in single file

RTC chip:
Datasheet (English)

Bibliography

General literature:

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 Technical. 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, p. 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