Advanced Operating Systems and Virtualization (AOSV)
A.Y. 2020/2021 (2° Sem.)
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
- [02/02/22 08:00 (UTC)] Exam Booking - Call #6 - February 11st, 2022 @ 08.30
- [02/01/22 08:00 (UTC)] Exam Call #5 - Results
- [12/20/21 08:00 (UTC)] Exam Booking - Call #5 - January 26th, 2022 @ 15.00
- [10/23/21 08:00 (UTC)] Exam Call #4 - Results
- [09/20/21 08:00 (UTC)] Exam Booking - Call #4 - October 11th, 2021 @ 16.00
- [09/06/21 16:00 (UTC)] Exam Call #3 - Results
- [07/30/21 08:00 (UTC)] Exam Booking - Call #3 - September 2nd, 2021 @ 16.00
- [07/12/21 13:50 (UTC)] Exam Call #2 - Results
- [06/14/21 09:00 (UTC)] Exam Booking - Call #2 - July 7th, 2021 @ 16.00
- [06/10/21 08:30 (UTC)] Exam Call #1 - Results
- [05/06/21 15:15 (UTC)] Exam Booking - Call #1 - June 7th, 2021 @ 16.00
- [04/09/21 07:30 (UTC)] Final Project Track
- [03/05/21 17:00 (UTC)] New Google Meet link
- [02/22/21 14:00 (UTC)] Lectures starting and seat booking for week 1
- [02/15/21 09:00 (UTC)] Course site created
Lectures
The reference teachers for this course are:
- Ing. Gabriele Proietti Mattia
- Prof. Roberto Beraldi, course owner
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
|
|
2 | 26/02/2021 08.00 ~ 11.00 | 1. x86 Boot
|
|
3 | 03/03/2021 17.00 ~ 19.00 | 1. x86 Boot
| Slides T#1, up to end |
4 | 05/03/2021 08.00 ~ 11.00 | 2. Step 4: Kernel Boot
|
|
5 | 10/03/2021 17.00 ~ 19.00 | 2. Step 4: Kernel Boot
| Slides T#2, up to 62 |
6 | 12/03/2021 08.00 ~ 11.00 | 2. Step 4: Kernel Boot
|
|
7 | 17/03/2021 17.00 ~ 19.00 | 3. Memory Management
| Slides T#3, up to 50 |
8 | 19/03/2021 08.00 ~ 11.00 | 3. Memory Management
|
|
9 | 24/03/2021 17.00 ~ 19.00 | 4. System Calls
| Slides T#5, up to 34 |
10 | 26/03/2021 08.00 ~ 11.00 | 4. System Calls
|
|
11 | 31/03/2021 17.00 ~ 19.00 | 5. Interrupts
| Slides T#5, up to 30 |
- | 02/04/2021 | No Lecture | - |
12 | 07/04/2021 17.00 ~ 19.00 | 5. Interrupts Management
| Slides T#5, up to 65 |
13 | 09/04/2021 08.00 ~ 11.00 | 5. Interrupts Management
|
|
14 | 14/04/2021 17.00 ~ 19.00 | 6. Time Management
|
|
15 | 16/04/2021 08.00 ~ 11.00 | 7. Concurrency in the Kernel
|
|
16 | 21/04/2021 17.00 ~ 19.00 | 8. Virtual Filesystem
|
|
17 | 23/04/2021 08.00 ~ 11.00 | 8. Virtual Filesystem
|
|
18 | 28/04/2021 17.00 ~ 19.00 | 10. Process Management
| Slides T#10, up to 46 |
19 | 30/04/2021 08.00 ~ 11.00 | 10. Process Management
|
|
20 | 05/05/2021 17.00 ~ 19.00 | 10. Process Management
|
|
21 | 07/05/2021 08.00 ~ 11.00 | 11. Scheduling
|
|
22 | 12/05/2021 17.00 ~ 19.00 | 12. Virtualization
| Slides T#12, up to 46 |
23 | 14/05/2021 08.00 ~ 11.00 | 12. Virtualization
|
|
24 | 19/05/2021 17.00 ~ 19.00 | 14. Epilogue
| Slides T#14, up to end |
25 | 21/05/2021 08.00 ~ 11.00 | No Lecture | - |
26 | 26/05/2021 17.00 ~ 19.00 | No Lecture | - |
27 | 28/05/2021 08.00 ~ 11.00 | No Lecture | - |
Slides
Slides can be found in the public shared folder of the course. Slides and the content of this site are protected by the Creative Common License (CC NC-BY-SA 4.0).
Theory
The Syllabus of the course can be found here.
- Introduction
- x86 Boot
- Kernel Boot
- Memory Management
- System Calls
- Interrupts Management
- Time Management
- Concurrency in the Kernel
- Virtual Filesystem
- User Space Initialization
- Process Management
- Scheduling
- Virtualization
- Security
- Epilogue
Lab
- Git: an essential guide
- Building the Kernel
- ASM in C
- Kernel Modules
- Kernel Messaging & Debugging
- Final project presentation and organization
- Kernel Data Structures
- Misc devices,
ioctl
and/proc
filesystem - Function Hooking: Kprobes and
ftrace
- Analysis of a rootkit
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. Please do not book on Infostud but follow the link on the Book column (see also News section), you need to book on Infostud only if you are planning to discuss the project (see next section).
Call | Date / Time | Room | Mode | Book | Results |
---|---|---|---|---|---|
0* | April 15, 2021 | - | Online | - | - |
1 | June 7, 2021 @ 16.00 | A3 | Presence** | Closed | Post |
2 | July 7, 2021 @ 16.00 | B2 | Presence** | Closed | Post |
3 | September 2, 2021 @ 16:00 | B2 | Presence** | Closed | Post |
4* | October 11, 2021 @ 16:00 | - | Online | Closed | Post |
5 | January 26, 2022 @ 8.30 | - | Online | Closed | - |
6 | February 11 2022 @ 8.30 | B2 | Presence** | Closed | - |
* extraordinary exam session / past editions of the course;
** exam will be held in presence for everyone except for those who has special needs, every case will be evaluated as specified by Sapienza rules;
Remote exam rules
If your request for taking the exam remotely will be approved you need to prepare the following:
- your id document with you photograph, that will be checked before the exam
- your environment with doors closed, that will be checked before the exam
- a webcam (that can be even your smartphone) that must point at you in which must be clearly visible:
- the screen of your pc
- your look
- your hands
The day of the exam will be the same (if not told differently by the teacher), a Google Meet will be published in the Google Classroom which you will need to join to from your pc (and, if needed, even from your smartphone). The exam will be taken with exam.net, preferably with SEB, if you can install it (Windows or macOS), otherwise you can use any browser but in that case in the webcam the pc screen must be clearly visible. Please try to join at least 15 minutes before the exam starting time.
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.
For developing the project you need a GitHub account and to join the course GitHub classroom, see this course news for the track and all of the information that you may need.
When you planned to discuss the project you need to book the proper exam call on Infostud and to send an email to the teacher Proietti Mattia according to the time range in which you want to discuss the project. For instance, if you intend to present the project in June, write an email to [email protected] and book for the #1 exam call before the 3rd June:
Call | Date / Time | Book Deadline | Project discussion range |
---|---|---|---|
0* | April 15th, 2021 | - | - |
1 | June 7th, 2021 @ 16.00 | June 3, 2021 | June 7 ~ June 30, 2021 |
2 | July 7th, 2021 @ 16.00 | July 2, 2021 | July 7 ~ July 31, 2021 |
3 | September 2nd, 2021 @ 16:00 | August 29, 2021 | Sept. 3 ~ Oct. 1, 2021 |
4* | October 11, 2021 @ 16.00 | October 5, 2021 | Oct. 11 ~ Oct. 31, 2021 |
5 | January 26, 2022 @ 8.30 | January 16, 2022 | Jan. 10 ~ Jan. 31, 2022 |
6 | February 11, 2022 @ 8.30 | February 4, 2022 | Feb. 1 ~ Mar. 1, 2022 |
Links
- Google Classroom
- Google Meet - join the Google Classroom then open the meet link under “Classwork”
- Shared folder with course resources
- Code Examples - GitHub repository with code examples presented at lectures
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.
- Mauerer, Wolfgang. Professional Linux kernel architecture. John Wiley & Sons, 2010.
Useful Links
- x86 Reference
- Kernel
- Online Kernel Books
- Navigating the Linux Kernel Source
- Others