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.
3-0-0-3
MON: 11:00 - 12:00
TUE: 08:00 - 10:00
Neha Dalmia
Nisarg Upadhyaya
Arobinda Gupta
Sandip Chakraborty
Term Projects: 20%
Assignments: 15%
Mid Sem: 25%
End Sem: 35%
Attendance: 5%
Slack (joining link will be shared)
There will be three programming assignments -- (1) Loadable Kernel Modules (LKM), (2) System Call Handling through LKM, and (3) extended Barkeley Packet Filters (eBPF).