Operating Systems Lab

About

  • Course: Operating Systems Lab (CO20-320202)

  • Semester: Fall 2016

  • Instructor: Jürgen Schönwälder

  • Labs: Thursday, 15:45-17:00 (West Hall 8)

  • Labs: Thursday, 17:15-18:30 (West Hall 8)

  • Start: 2016-09-01

Content

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.

Resources

Books

  • Robert Love, "Linux Kernel Development", 3rd edition, Addison Wesley, 2010

Links

Schedule

Thursday 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/Due Name Topics
2016-09-07 Sheet #1 library/system calls and process lists
2016-09-14 Sheet #2 malloc load-time interpositioning library
2016-09-21 Sheet #3 multi-threaded coin flipping (threading overhead)
2016-10-05 Sheet #4 detectives and clients (POSIX semaphores)
2016-10-05 Sheet #5 detectives and clients (POSIX mutexes and condition variables)
2016-10-12 Sheet #6 client/server (POSIX message queues)
2016-10-19 Sheet #7 chat system (POSIX message queues)
2016-11-02 Sheet #8 backdoor kernel module
2016-11-09 Sheet #9 hangman procfs kernel module
2016-11-16 Sheet #10 hangman character device kernel module
2016-11-23 Sheet #11 word guessing game tcp server using libevent
2016-11-30 Sheet #12 dns packet munging kernel module

Rules

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 <i>grader</i> 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.