Operating Systems Lab (Fall 2016)
Course: Operating Systems Lab (320232)
Instructor: Jürgen Schönwälder
TAs:
Labs:
Thursday 15:45 - 17:00 West Hall 8
Thursday 17:15 - 18:30 West Hall 8
Start: September 1st, 2016
Contents:

This lab complements the Operating Systems course. Students will gain practical experience with systems programming above and below the system call interface of operating systems. Students will learn how to write concurrent programs and gain understanding how kernel programming differs from normal application development.

Lab Materials:
Books:
  • R. Love: "Linux Kernel Development", 3rd edition, Addison Wesley, 2010
Links:
Schedule:
Thu (15:45 + 17:15)Topics
2016-09-01 Tools (bash, ps, top, strace, ltrace, lsof, ...)
2016-09-08 Linking and library call interpositioning
2016-09-15 Concurrent programming (pthreads)
2016-09-22 Concurrent programming (semaphores)
2016-09-29 Concurrent programming (mutexes and condition variables)
2016-10-06 Concurrent programming (message queues)
2016-10-13 Chat system (message queues)
2016-10-20 Kernel programming and kernel modules
2016-10-27 Backdoor kernel module
2016-11-03 Proc filesystem kernel module
2016-11-10 Character device kernel module
2016-11-17 Sockets and libevent
2016-11-24 Linux netfilter and the DNS protocol
2016-12-01
Dates:
Date/DueNameTopics
2016-09-07Problem Sheet #1library/system calls and process lists
2016-09-14Problem Sheet #2malloc load-time interpositioning library
2016-09-21Problem Sheet #3multi-threaded coin flipping (threading overhead)
2016-10-05Problem Sheet #4detectives and clients (POSIX semaphores)
2016-10-05Problem Sheet #5detectives and clients (POSIX mutexes and condition variables)
2016-10-12Problem Sheet #6client/server (POSIX message queues)
2016-10-19Problem Sheet #7chat system (POSIX message queues)
2016-11-02Problem Sheet #8backdoor kernel module
2016-11-09Problem Sheet #9hangman procfs kernel module
2016-11-16Problem Sheet #10hangman character device kernel module
2016-11-23Problem Sheet #11word guessing game tcp server using libevent
2016-11-30Problem Sheet #12dns packet munging kernel module
Results:
Grading:

The final grade is made up of lab assignments (100%). The lab assignments must be submitted individually. It is required to submit the solution for programming assignments electronically. Late submissions will not be accepted. Submissions may have to be explained/defended in an oral interview.

Note 1: Students must submit solutions individually.

Note 2: If you copy material verbatim from the Internet (or other sources), you have to provide a proper reference. If we find your solution text on the Internet without a proper reference, you risk to lose your points.

Note 3: Any cheating cases will be reported to the registrar. In addition, you will lose the points (of course).

Note 4: If you are unhappy with the grading, please report immediately (within one week) to the TAs. If you can't resolve things, contact the instructor. Problem reports which come late, that is after the one week period, are not considered anymore.

Electronic submission is the preferred way to hand in homework solutions. Please submit documents (plain ASCII text or PDF, no Word) and your source code (tar, zip) via the online grader system. If you have problems, please contact one of the TAs.

Any programs which have to be written will be evaluated based on the following criteria:

  • correctness including proper handling of error conditions
  • proper use of programming language constructs
  • clarity of the program organization and design
  • readability of the source code and any output produced

For any questions stated on assignment sheets, quiz sheets, exam sheets or during makeups, we by default expect a reasoning for the answer given, unless explicitely stated otherwise.