Advanced Operating Systems


The objective of this course is to study existing approaches for building an OS kernel. We aim to discuss monolithic kernels, lightweight kernels, embedded OS, distributed OS, etc. We will discuss the pros and cons of each of these design decisions. We will see how modern languages play a crucial role in designing the end to end software stack. Students are expected to read research papers before the class discussions.

  1. The students can understand the design principles of different OS kernels and identify the right operating system for a given application.
  2. The students can exploit memory safety vulnerabilities in an application and comprehend an alternative operating system design for preventing such exploitation.
  3. The students can analyze the tradeoffs between safety and performance.
  4. The students can compare between lightweight and monolithic OS kernels.

Course Offering