About the Course

This is a research focused course that covers the advanced topics of operating systems design. In the last few decades, operating systems have seen a tremendous growth starting from standalone operating systems (like Windows or Linux based systems) to networked and distributed operating systems as well as embedded operating systems like Android or Apple iOS. Further different innovative technologies like virtualization, automated log analytics, distributed processing of large scale data have added various new and challenging flavours to this classical computer science topic.

This course will give you a good hands-on experience of various internals and advancements of the operating system concepts that you have covered as a part of your undergraduate OS course. We'll start with a discussion on the internals of Linux operating system with a hands-on experience of the latest Linux Kernel developments. We'll cover the details of process handling, process scheduling, memory management, system calls and interrupt handling in Linux based operating systems. Next we'll move to the concept of virtualization which will cover the design of Xen virtualization platforms, memory management aspects during virtualization, various concepts of lightweight virtualization, and so on. We'll also discuss and try out containers -- the latest developments in the virtualization technology. Then we'll discuss about the file system details starting from Unix Fast file system, Log structured file system, networked file system (NFS) and Google's datacenter file system. Finally we'll touch upon some more advanced topics like Trusted Execution Environments (TEE), Embedded operating systems like optimizations done in Android design, various system level aspects of Blockchain technologies, and various applications of machine learning applications over computer systems.

Throughout this course, we'll cover various recent research works from top OS conferences like OSDI, SOSP and ASPLOS. Students are highly encouraged to keep on checking the latest publications at these conferences.

Course Credit

3-0-0-3

Class Time

MON: 11:00 - 12:00
TUE: 08:00 - 10:00

Teaching Assistant

Bishakh Chandra Ghosh
Soumyajit Chatterjee

Classroom

Online

Grading Scheme

To be announced

DIscussion Forum

To be announced

Other Details

Reference Books and Reading Materials:

  1. “Professional Linux Kernel Architecture”, Wolfgang Mauerer
  2. Various research papers from conferences like OSDI, SOSP and ASPLOS
  3. Other reading materials will be provided as the classes progress.

Term Projects

The students will be divided into few groups. Every group will be given a specific problem to work throughout the semester. There will be an assigned mentor who will guide in executing the problem. The problem set will be shared with the students on the first week of the class.

Assignments

Will be announced

Lectures

Welcome and Introduction

Lecture notes

Additional materials

Topic 1

UNIX Design Philosophy

Lecture notes

Additional materials

Topic 2

Exokernel

Lecture notes

Additional materials

Topic 3

Kernel Process Management

Lecture notes

Additional materials

Topic 4

Linux Process Scheduling

Lecture notes

Additional materials

Topic 5

File Systems

Lecture notes

Additional materials

Topic 6