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

Neha Dalmia
Nisarg Upadhyaya

Course Instructors

Arobinda Gupta
Sandip Chakraborty

Grading Scheme

Term Projects: 20%
Assignments: 15%
Mid Sem: 25%
End Sem: 35%
Attendance: 5%

Discussion Forum

Slack (joining link will be shared)

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

Programming Assignments

There will be three programming assignments -- (1) Loadable Kernel Modules (LKM), (2) System Call Handling through LKM, and (3) extended Barkeley Packet Filters (eBPF).

Lectures

Linux Kernel Overview and Process Management

Slides

Topic 1

Process Scheduling

Study Materials:

Scheduling - Part 1
Scheduling - Part 2
Scheduling - Part 3

Topic 2

XNU Kernel Primitives

Slides

Topic 3

Virtualization

Slides

Topic 4

eBPF and Kernel Programmability

Slides

Topic 5

Embedded Operating Systems

Slides

Topic 6

Topics in Distributed OS

Slides
Materials

Topic 7

File Systems Architecture

Slides

Topic 8