Description

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.

News

Lectures

The reference teachers for this course are:

  • Prof. Roberto Beraldi, course owner
  • Ing. Gabriele Proietti Mattia

For attending the course you need to join to the Google Classroom by using this invite link and your Sapienza G Suite account.

Schedule

The course starts on 24th February, 2021 and ends on 28th May, 2021. During the week, two lectures are held in mixed mode (lecture in presence + Google Meet):

  • Wednesday, Room A3, 17-19
  • Friday, Room A3, 8-11

For attending the course in presence you need to follow the COVID19 Sapienza general rules for phase-3 available at this link. Room A3 is located at the Department of Computer, Control and Management Engineering “Antonio Ruberti” (Building RM102), Via Ariosto 25, Roma (00185).

Plan and material

# Date Topics Ref
1 24/02/2021
17.00 ~ 19.00
0. Introduction
  • Course Outline
  • A first glance on the boot process
1. x86 Boot
  • 1. Step1: BIOS/UEFI
  • 1.1 Pre-Boot and Real Mode
  • 1.2 BIOS
  • 2. Step 2: Stage 1 Bootloader
  • 2.1 MBR
  • Slides T#0
  • Slides T#1, up to 27
2 26/02/2021
08.00 ~ 11.00
1. x86 Boot
  • 2.1 MBR
  • 2.2 x86 Protected Mode
  • 2.3 x86 Memory Addressing
  • 2.4 x86 Privileges and Protection
Lab01 - Git: an essential guide
  • Slides T#1, up to 51
  • Slides L#1
3 03/03/2021
17.00 ~ 19.00
1. x86 Boot
  • 2.4 Paging
  • 3. Step 3: Stage 2 Bootloader
  • 3.1 GRUB/UEFI
  • 3.2 Multi-core Support
Slides T#1, up to end
4 05/03/2021
08.00 ~ 11.00
2. Step 4: Kernel Boot
  • 1. Initial Life of the Linux Kernel
  • 2. startup_32()
Lab02 - Building the Kernel
  • Slides T#2, up to 18
  • Slides L#2
5 10/03/2021
17.00 ~ 19.00
- -
6 12/03/2021
08.00 ~ 11.00
- -
7 17/03/2021
17.00 ~ 19.00
- -
8 19/03/2021
08.00 ~ 11.00
- -
9 24/03/2021
17.00 ~ 19.00
- -
10 26/03/2021
08.00 ~ 11.00
- -

Slides

Slides can be found in the public shared folder of the course.

Theory

  1. Introduction
  2. x86 Boot
  3. Kernel Boot
  4. -
  5. -
  6. -
  7. -
  8. -
  9. -
  10. -
  11. -

Lab

  1. Git: an essential guide
  2. Building the Kernel
  3. -
  4. -
  5. -
  6. -
  7. -
  8. -
  9. -
  10. -

Exams

The exam consists of a written test and a practical project. 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.

Written part

The written part consists of open questions about all the topics presented within the lectures. The following dates refer to the written exam that you need to book on InfoStud. During the written exam no material is allowed, of any kind. The mode of operation (online/mixed/presence) will be updated as soon as available.

Call Date Mode Results
0* 15 April 2021 Online -
1 June 2021 - -
2 July 2021 - -
3 September 2021 - -
4* October 2021 - -
5 January 2022 - -
6 February 2022 - -

* extraordinary exam session / past editions of the course

Project part

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.

You can present the project in any moment and the final mark will be officially registered in the nearest exam call (if not already closed). For presenting the project you need to book an appointment with the teacher Proietti Mattia (by sending an email). Project presentation will be likely hold via Google Meet.

For developing the project you need a GitHub account and to join the course GitHub classroom (TBA).

More details will be published during the course.

Links

References

References and links that I provide here are meant to help the students increasing their understanding of 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.

  • Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel. O’Reilly.
  • Robert Love, Linux Kernel Development, Addison-Wesley Professional.
  • Mel Gorman, Understanding the Linux Virtual Memory Manager. Prentice Hall.
  • Alessandro Rubini, Jonathan Corbet, Linux Device Drivers, O’Reilly.