Academic Year 2017/2018
- Extraordinary Exam Session: March 22, 2019 @ Room A5 via Ariosto 25, 03.00 pm - results
- Fifth Exam Session: February 13, 2019 @ Room 8 via Eudossiana 18, 09.00 am
- Fourth Exam Session: January 18, 2019 @ Room 8 via Eudossiana 18, 10.00 am - results
- Extraordinary Exam Session: October 23, 2018 @ Aula Magna via Ariosto 25, 10.00 am - text - results.
- Third Exam Session: September 21, 2018 @ Room 29 via Eudossiana 18, 10.00 am - text - results.
- Second Exam Session: July 20, 2018 @ Room 29 via Eudossiana 18, 10.00 am - text - results.
- First Exam Session: June 28, 2018 @ Room 29 via Eudossiana 18, 10.00 am - text - results.
- The benchmark for the project has been published.
- The course is over. You can give an anonymous feedback on the lectures.
- Homework Assignment: You have the opportunity to gain up to 3 points on the final exam mark by preparing an essay on the rootkit module which we have seen in action in class. The essay should describe from a high-level point of view what the module is doing, what kernel subsystems are involved, and why it is actually working. A code commentary, explaining what the statements in all the functions do is then required. You should submit the essay via email to the instructor before taking the written test. The latest deadline is the second exam session.
- April 14, 2018 Written Test Results have been published.
- The assignment for this year’s project has been released. See here for details.
- Lectures on Friday 30 and April 3 are canceled for the Easter break.
- We have a larger classroom!
From Tuesday March 13, we move to San Pietro in Vincoli, according to the new schedule below.
On Friday March 9, we’re still in room A3.
- Due to bad weather conditions, the University has canceled all teaching activities on February 27. The first lecture will be on March 2.
- Lectures will start on February 27, 2018.
- Lecture hours:
- Tuesday, 08.00–10.00 (Room 8, SPV)
- Friday, 08.00–11.00 (Room 39, SPV)
- Tuesday, 08.00–10.00 (Room 8, SPV)
Course Objectives and Exam Rules
The Advanced Operating Systems and Virtualization course (6 CFUs) 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, and 4.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.
The specifications of the project for the year 2017/2018 can be found here. The software to test and to perform the performance evaluation can be found here.
After a student has passed the written test, a one-year grace period to hand off the project is granted. The final mark is the weighted average of the scores obtained at the written test and at the project. The written test is worth 2/5 of the final mark, while the project is worth 3/5 of the final mark. Rejecting the final mark is possible, but requires the student to pass the written test again.
- Booting on an x86 System
- Memory Management
- Virtual File System
- Process/Threads Management
- Kernel API (e.g., System Calls)
- Interrupt Management
- Kernel Data Structures
- How to make a portable Kernel
- Additional Kernel Facilities
- Loadable Kernel Modules
- Kernel Debugging
- Hot Patching
- Operating systems security aspects
- Authentication and abilitation
- Protection domains and secure operating systems
- System internal attacks and countermeasures
- IDS and Reference Monitor architectures
- System Virtualization
- Basic Techniques for System Virtualization
- Support for the Guest System Execution Flow
Slides and Material
- x86 Initial Boot Sequence.
- Linux Kernel Boot.
- Starting and Managing Processes.
- Loadable Kernel Modules.
- Kernel Messaging.
- Virtualization Support.
- Dealing with Concurrency in the Kernel.
- Hot Patching.
- Code Examples.
- William Stallings, Operating Systems. Jackson Libri.
- Abraham Silberschatz, Peter B. Galvin, Operating Systems. Addison - Wesley.
- Andrew S. Tanenbaum, Modern Operating Systems. Jackson Libri.
- Alessandro Rubini, Jonathan Corbet, Linux Device Drivers, O’Reilly.
- David A. Rusling, The Linux Kernel.
- Mel Gorman, Understanding the Linux Virtual Memory Manager. Prentice Hall.
- Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel. O’Reilly.