Advanced Operating Systems and Virtualization

Academic Year 2019/2020

News

  • Distance learning! In accordance with the communication of the Rector, we will proceed with lessons remotely. During the regular lesson hours, it will be possible to follow the teacher’s live video lessons. During these lessons, it will be possible to ask questions (by voice or in chat). A Google Classroom course has been created. Please connect to Google Classroom, login using your university email address (@studenti.uniroma1.it) and join the distance course using the code 3fxuvps. All lectures will be recorded and published in the classroom channel.
  • Based on the provisions of the competent authorities (Decree of the President of the Council of Ministers of 4 March 2020), curricular teaching activities are suspended from 5 to 15 March 2020 in relation to the Coronavirus emergency.
  • Lectures will start on the week of February 24, 2020.
  • Lecture hours:
    • Wednesday, 17.00–19.00 (Room A3, Via Ariosto);
    • Friday, 08.00–11.00 (Room A3, 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.

References

  • 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.