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
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.