Advanced Operating Systems
This is the home page for the "Advanced OS" course.
Here, you will find (in a badly-organised form) all the
material, slides, and information needed to attend the course
For the previous edition of the course, check the old website.
Lessons:
- First lesson: 2019/04/11, 14:00 -> 16:30
- Second lesson: 2019/04/16, 14:00 -> 16:30
- Third lesson: 2019/05/02, 14:00 -> 16:30
- Fourth lesson: 2019/05/16, 14:00 -> 16:30
- Fifth lesson: 2019/06/06, 14:00 -> 16:30
- Sixth lesson: 2019/06/07, 9:30 -> 12:00
- Seventh lesson: 2019/06/13, 14:00 -> 16:30
- Eighth lesson: 2019/06/14, 9:30 -> 12:00
- Ninth lesson: 2019/06/20, 14:00 -> 16:30
- Tenth lesson: 2019/06/21, 9:30 -> 12:00
- Elevent lesson: 2019/06/27, 9:30 -> 12:00
- Tenth lesson: 2019/06/28, 9:30 -> 12:00
Project Ideas
Here are some ideas for possible projects
for the exam. Remember to contact me when you chose one.
Slides and references:
Source Code and Examples:
- Examples about periodic timers
- Some tests with Xenomai
- Simple l4re example, and its
compiled version
- A more complex l4re example,
similar to the Xenomai example
- A simple experiment with trap-and-emulate on Intel x86 (64).
This simple "hypervisor" (executing in ring 0) just runs the
"guest code" in ring 3...
The guest executes a sensitive privileged instruction (mov cr0, edx)
that is emulated, and a sensitive non privileged instruction
(smswl eax) that cannot be trapped / emulated...
Since in theory the two instructions should return the same value,
the guest can easily understand that some kind of hypervisor is
in action! This shows the need for VT-x.
- A half-working example about Intel VT-x.
This Linux module tries to show how to use the Intel virtualization
extensions; unfortunately, the Virtual Machine Control Structure
is not setup in a 100% correct way (tries to copy the CPU state
set up by the Linux kernel, but fails somewhere). So, it works only
in some cases (do not use on real hw! Test only in a VM!!!).
This is a log of a correctly working
execution.
- Simple example about KVM
- Simple test about namespaces: try
unshare -pmrf chroot _install/ /bin/sh
, where "_install
" is a directory containing a simple Linux-based OS... You can generate id by using BuildCore or similar tools...
Links:
- Some u-kernel based systems:
the family of L4 uKernels
- Paper comparing u-kernels and hypervisors
- Some references about lightweight virtualization: