Home > Teaching > CS 730: Topics in Operating Systems

CS 730: Topics in Operating Systems

Credits: 3-0-0-0 (9)
Prerequisite:

Expertise in programming using C/C++, undergraduate course on Operating Systems (for Masters and Ph.D. students). For IIT Kanpur UG students, CS330 is a prerequisite.

Co-requisite:

Exposure to one or more of the following courses---CS622 (Advanced Computer Architecture), CS628 (Computer Systems Security), CS665 (Secure Memory Systems), CS632 (Topics in Distributed Systems), CS625 (Advanced Computer Networks)---is desirable but not a mandatory requirement.

Who can take the course:

Phd., Masters, 3rd and 4th year UG Students

Course Objective:

Understanding the challenges of system software design is crucial in modern era computing as system softwares are backbones of many computing models like cloud computing, big-data analytics and IoT.  One of the main goals of this course is to expose students to Linux OS (a.k.a. Linux Kernel) internals to provide an up-close view of design and features of a widely used open source OS. Further, exposure to state-of-the-art hypervisors like KVM and Xen is intended to provide better understanding of virtualized systems. The course will primarily be structured around programming assignments and a project. The programming assignments are meant to enhance the understanding of  the concepts discussed in the lectures. The project component plays a crucial part of the course which exposes students to carry out research through empirical analysis, design and implementation and  experimental evaluation followed by a report and a presentation.

Course Contents:

The course will primarily focus on the  following  topics.

  1. Introduction: Operating System concepts catch-up using Linux kernel as the reference OS.
  2. Linux kernel programming: Customizing the Linux kernel, design and implementation of simple kernel modules, and, design of new kernel features with user space interfacing using system call API and character devices.
  3. Isolation enforcement in the Linux kernel: Isolation between user and kernel space, process level isolation, process group level isolation techniques (Linux Cgroups), application containers (e.g., docker and LXC), security issues and advanced isolation techniques.
  4. OS design for multi-core machines: Synchronization challenges and solutions to address performance and scalability aspects. I/O scalability using hardware enhancements like solid state devices (SSDs), IOMMU, SR-IOV etc.
  5. Advanced isolation mechanisms: Design and implementation of virtualized systems,  hypervisors (KVM and Xen).
References:
  1. Research papers
  2. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces. Online 2018.
  3. Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel - from I/O ports to process management (Third ed.), O'Reilly 2005.
  4. Robert Love. Linux Kernel Development (Third ed.), O'Reilly 2010.
  5. James E. Smith, Ravi Nair, Virtual machines - versatile platforms for systems and processes, Elsevier 2005.