Advanced Operating Systems and Virtualization

Academic Year 2018/2019


  • Extraordinary Exam Session: May 14, 2020.
  • Fifth Exam Session: February 6, 2020 @ Room A3, 10.00 am - results.
  • Fourth Exam Session: January 16, 2020 @ Room A3, 10.00 am - results.
  • Extraordinary Exam Session: October 31, 2019, @ Room B120, 11.00 am - text - results.
  • Third exam session: September 4, 2019 @ Room B2, 10am - results.
  • Second exam session: July 19, 2019 @ Room B2, 3pm - text - results.
  • First exam session: June 25, 2019 @ Room B2, 4pm - text - results.
  • Please, fill the Students’ Opinions Questionnaire!
  • Information for the final project have been published.
  • Wednesday lecture is moved to 14.00, in Room A7.
  • Lectures will start on February 27, 2018.
  • Lecture hours:
    • Wednesday, 14.00–16.00 (Room A7, Via Ariosto);
    • Wednesday, 17.00–19.00 (Room B2, Via Ariosto);
    • Friday, 08.00–11.00 (Room B2, Via Ariosto).

Course Objectives and Exam Rules

The Advanced Operating Systems and Virtualization course (6 CFU) aims at presenting advanced design/implementation methods and techniques for modern Operating Systems, including the support for system virtualization, and several security aspects. The topics dealt with in the course are bound to case studies oriented to Linux systems and x86 processors. During the course, we will see the internals from Linux 2.4, 2.6, 3.0, 4.0, and 5.0.

The course requires basic knowledge of the organisation and services offered by modern Operating Systems, of data structures, and of C/assembly programming. Some insights on the x86 computing architectures will help at bootstrapping the new topics shown in the course.

The exam consists of a written test and a practical project. The project requires the student to develop some new services within the Linux kernel. Instructions for project assignment will be given during the lectures.

A one-year grace period since the last lecture is granted to hand off the project. The project can be handed off only after having passed the written test. The final mark is the weighted average of the scores obtained at the written test and at the project. The written test is worth 3/5 of the final mark, while the project is worth 2/5 of the final mark. Rejecting the final mark is possible, but requires the student to pass the written test again and hand over a different project.

Important Notice: On this page, I provide references and links to help the students increase their undesrtanding on the topics covered in this course. No unique handbook exists which covers all the presented topics. I hope this is an added value for the course, rather than a limitation. You can come to office hours to discuss about your doubts and to ask for clarifications.

Course Topics, Slides and Material

Slides and code examples will be published here during the course.

  1. Introduction.
  2. A Primer on Modern Hardware Architectures.
  3. x86 Initial Boot Sequence.
  4. Linux Kernel Boot.
  5. Building the Kernel.
  6. Memory Management.
  7. System Calls Management.
  8. Loadable Kernel Modules.
  9. Kernel Messaging.
  10. Kernel Data Structures.
  11. Interrupt and Time Management.
  12. Concurrency in the Kernel.
  13. Virtual File System and Devices.
  14. Userspace Initialization.
  15. Process Management and Startup.
  16. Process Scheduling.
  17. Virtualization.
  18. Security Aspects.
  19. Hot Patching.
  20. Code Examples.


  • Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel. O’Reilly.
  • Mel Gorman, Understanding the Linux Virtual Memory Manager. Prentice Hall.
  • Alessandro Rubini, Jonathan Corbet, Linux Device Drivers, O’Reilly.
  • Robert Love, Linux Kernel Development, Addison-Wesley Professional.
  • David A. Wood, Daniel Sorin, Mark Hill. A Primer on Memory Consistency and Cache Coherence. Morgan & Claypool Publishers.