CS 347 Operating Systems / CS 333 Operating Systems Lab

Autumn 2016

Note: the contents of this course have been revised and hosted at Lecture Notes on Operating Systems.

Lectures: LH 101, Slot 1 (Mon 8:30-9:25, Tue 9:30-10:25, Thu 10:35-11:30)

Lab: Software Lab 2, Thu 2-5 pm

Instructor: Mythili Vutukuru (mythili @ cse.iitb.ac.in)

Instructor Office Hours: After lecture, or during the lab.

Important Dates
  • Fri Nov 4: crib session for labs and quizzes, 5 pm onwards, SL2.

This is a core course, open to 3rd year CSE B.Tech. students only. The theory part of the course (CS347) covers the fundamentals of modern operating systems. The accompanying lab (CS333) will reinforce the concepts taught in class using programming exercises.

CS347: Grading Policy

All examinations will be closed notes and closed book. No calculators will be required. There will be no make-up exams, unless in the case of emergencies. Any form of cheating will not be tolerated during the tests.

CS333: Lab policies

CS333 will have 12 labs, roughly one per week. 8 of the labs are take-home labs and 4 are lab quizzes.

Take-home labs: The take home labs are mainly designed to help you learn the lab material at your own pace; they need not be solved and submitted within the three hour lab slot. You can solve the take-home labs in groups of one or two students. If you solve the lab in a team, you are both expected to contribute equally to the assignment. You may discuss and brainstorm with your friends, but the final writeup and code must be yours. You can bring your own laptops and use them for the take home labs. You are strongly encouraged to work in the lab during the lab slot even during the weeks when the lab assigned is a take-home lab. Most take-home labs will span multiple weeks, and will take more than 3 hours to solve. Therefore, it will be most useful for you to start working on the lab before the allocated lab slot; the lab slot can then be used to get your doubts cleared by the TAs and instructor. Needless to say, any plagiarism or copying of code will not be tolerated.

Lab quizzes: The lab quiz will have to be solved and submitted within the three hour lab slot itself. The labs will be designed in a way that you can complete the lab in 3 hours, provided you have sincerely attempted the related take-home labs. No extensions will be permitted. You must solve the lab individually, without discussing with anyone. You must use the lab machines only, not your own laptops. There will be no network access during the tests, so you will not have access to any online resources. Please get comfortable using man pages and such to write code on your own. Any form of cheating will not be tolerated during the lab quizzes.

The following are tentative dates for the 4 lab quizzes: Aug 18, Sep 1, Oct 6, Oct 27.

The grade distribution will be roughly as follows:


Lecture Notes

  1. Introduction to Operating Systems.
  2. Processes and Threads.
  3. Process Management in xv6.
  4. Process Synchronization.
  5. Process Scheduling.
  6. Scheduling and Synchronization in xv6.
  7. Memory Management.
  8. Memory Management in xv6.
  9. File Systems and I/O management.
  10. The xv6 filesystem.

Practice Problem Sets

The practice questions below will reinforce your understanding of the lecture material. These problems sets are for your practice only; they need not be submitted.

  1. Problem Set 1 and solutions (covers lectures 1--3 above).
  2. Problem Set 2 and solutions (covers lectures 4--6 above).
  3. Problem Set 3 and solutions (covers lectures 7--8 above).
  4. Problem Set 4 and solutions (covers lectures 9--10 above).

CS333: Take-home Labs

Below are the take-home labs and their due dates. You must submit the labs via Moodle before midnight on their due date.

Lab files Topics Due
lab1.pdf, lab1_files.tgz Basics of OS, Linux, processes. July 24
lab2.pdf, lab2_files.tgz Building multi-threaded and multi-process applications. Aug 7
lab3.pdf, lab3_files.tgz Building a custom shell, process lifecycle management. Aug 17
lab4.pdf Synchronization. Aug 28
lab5.pdf New scheduler in xv6. Sep 25
lab6.pdf Copy-on-write fork in xv6. Oct 2
lab7.pdf Understanding features of modern filesystems. Oct 16
lab8.pdf Building a new userspace filesystem. Oct 23