GAYATHRI CHANDRASEKARAN
WINLAB | Rutgers, The State University of New Jersey | Technology Centre of New Jersey
671 Route 1 South | North Brunswick | NJ 08902
Email: chandrga@cs.rutgers.edu

CS 416: Operating Systems Design


General information

  • Course number: 01:198:416, Indices: Section 01: 43422
  • Class hours: Tuesdays and Thursdays, 1:40pm to 3:00pm.
  • Class location: SEC-203.
  • Recitations: Section 01: Thursdays, 12:15pm-1:10pm, SEC 204.

  • Instructor: Gayathri Chandrasekaran (chandrga@cs.rutgers.edu)
    Office hours: Tuesdays, 3.30pm to 4.30pm
    Office Room: Hill 418

  • Teaching assistant:
    • Nishat Islam (nislam@cs.rutgers.edu)
      Office hours: Friday, 2.30pm to 3.30pm
      Office Room: Hill 486

  • Required textbook: Operating System Concepts, Eighth Edition, by Avi Silberschatz, Peter Baer Galvin and Greg Gagne, John Wiley and Sons, Inc. ISBN 0-470-12872-0.
    You may be able to use an older edition of this book but the sections that I want you to read from the book will be based on eighth edition.
    Book Supporting Website

    In addition, we also highly recommend that you own a copy of this book as a reference for the C programming language:
    The C Programming Language (2nd edition), by Brian W. Kernighan and Dennis M. Ritchie, Prentice Hall.

  • Prerequisites:
    • Undergraduate computer architecture (CS211 or ECE331)
    • Undergraduate software design/programming (CS113 or ECE252)
    The programming assignments require good programming skills and a lot of time and effort. Note that these requirements are very serious; you will not be able to keep up with this course's load, if you don't have the suggested background, programming skills, and time. Even if you do have the background and the skills, the course is very heavy on reading and programming assignments, so come very motivated!

Course overview

CS416 is a senior undergraduate-level course in operating systems. We will cover the basic concepts in operating systems, such as processes, threads, synchronization, scheduling, virtual memory and file systems. For the programming assignments, we will be using C. You are expected to be comfortable with the use of the C programming.

This course is based on prior offerings of CS416 by Professors Ricardo Bianchini, Rich Martin and Thu Nguyen. Some of the slides have also been borrowed from Prof. Matt Welsh's Operating Systems course in Harvard. You are permitted to download, print, and use these notes for your personal use only. Redistribution or commercial publication is prohibited.


Schedule

Here is a tentative schedule of topics to be covered (subject to change over the course of the semester).


Homework-1 Due (before 3pm)
Date Topics Reference Slides
1/18/11 (T) Introduction and Logistics Chapters 1 and 2 PDF
1/20/11 (Th) Architecture refresher Chapters 1 and 2 PDF
1/25/11 (T) Architecture (contd.), Processes
Assignment-1 Out
Chapter 3 PDF
1/27/11 (Th) Processes and Threads
Class Cancelled Due to Bad weather
- -
2/1/11 (T) Processes and Threads Chapters 3 & 4 PDF
2/3/11 (Th) Synchronization - Locks Chapter 6 PDF
2/8/11 (T) Synchronization (Semaphores)
Assignment-1 Due
Assignment-1 Due on 2/11/2011, Midnight
Chapter 6 PDF
2/10/11 (Th) Synchronization (Monitors, CV) Chapter 6 PDF
2/15/11 (T) Memory Management
Assignment-2 Out
Chapter 8, 9 PDF
2/17/11 (Th) Memory Management Chapter 8, 9 PDF
2/22/11 (T) Memory Management Chapter 8, 9 PDF
2/24/11 (Th) Memory Management Chapter 8,9 PDF
3/1/11 (T) No Class
Assignment-2 Due
Homework-1 out
Chapter 5 -
3/3/11 (Th) Scheduling Chapter 5 PDF
3/8/11 (T) Scheduling Chapter 5 PDF
3/10/11 (Th) Midterm Review - PDF
3/15/11 (T) No Class (Spring Break) - -
3/17/11 (Th) No Class (Spring Break) - -
3/22/11 (T) Midterm Review Covered by TA (Conference Travel) - -
3/24/11 (Th) Midterm - -
3/29/11 (T) File Systems
Assignment-3 out
Chapters 10&11
Unix Implementation
PDF
3/31/11 (Th) File Systems (FFS) Chapters 10&11
Fast File System
PDF
4/5/11 (T) File Systems (LFS) Chapters 10&11
Log-structured File System
PDF
4/7/11 (Th) File Systems (NFS) Chapter 12 PDF
4/12/11 (T) Disks Chapter 12 -
4/14/11 (Th) Disks Chapter 12 PDF
4/19/11 (T) I/O
Assignment-3 Due
Homework-2 out
Chapter 13 PDF
4/21/11 (Th) I/O Chapter 13 -
4/26/11 (T) Final Review
Homework-2 due
- -
4/28/11 (Th) Finals - -

Assignments

There will be three Programming assignments, each of which will require significant amounts of programming (in C). The assignments will be posted here as the semester proceeds.

  • Assignment 1 -- -- The Shell and System Calls Out: Jan 26, 2011. Due: Feb 11, 2011, Midnight.
  • Assignment 2 --
  • Assignment 3 --
Programming assignments can be done in teams of no larger than three students. Each team member is required to contribute to the programming assignment. There will be demonstration sessions to ensure that all team members have contributed equally to the assignment.

We will also have two paper and pencil assignments typically assigned before the midterm and finals. Some parts of these assignments will be left ungraded and the student can decide to either solve them or not. However, I highly recommend students to take paper and pencil assignments seriously since they will give you the necessary practice required for the exams.

Grading

Grading will break down roughly as follows:
  • Assignment 1 -- 10%
  • Assignment 2 -- 10%
  • Assignment 3 -- 15%
  • Homeworks -- 10%
  • Midterm Exam -- 20%
  • Final Exam -- 35%

Exams and written homeworks must be strictly individual work. Programming assignments will be done in groups of up to two students. Collaboration with other groups on programming assignments is encouraged at the level of ideas. Feel free to ask each other questions, brainstorm on algorithms, or work together at a blackboard. You should not, however, copy the actual code for programming assignments, or copy the wording for written homeworks. Any violation of these rules will be considered cheating and dealt with severely. Here are links to the Rutgers University Academic Integrity Policy and the Department of Computer Science Integrity Policy.