Here are some possible ideas for the final project for the exam: 1) Reproduce the experiments measuring the kernel latency (http://retis.santannapisa.it/~luca/AdvancedOS/Slides/kernel_latency.pdf, slide 33) on more recent software and hardware. You can use cyclictest (https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest) to measure the latency, on: - A vanilla Linux kernel compiled as a non-preemptive kernel (Preemption Model = No Forced Preemption) - A vanilla Linux kernel compiled with Preemption Model = Voluntary Kernel Preemption - A vanilla Linux kernel compiled as preemptable (Preemption Model = Preemptible Kernel) - A preempt-RT kernel with full real-time preemption (http://cdn.kernel.org/pub/linux/kernel/projects/rt/) Some hints about generating a non-real-time workload that triggers high latencies can be found at https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/worstcaselatency 2) Same as above, but use a microkernel-based system instead (for example, L4RE, genode, DROPS - http://os.inf.tu-dresden.de/drops, or Secure L4 - https://docs.sel4.systems/GettingStarted) 3) Run some experiments with an unikernel (for example, based on Solo5 https://github.com/Solo5/solo5 or includeOS www.includeos.org), comparing boot time, latencies and throughput with some other "optimized" VM. For measuring latencies, you can use cyclictest 4) Reproduce the Xenomai experiment (http://retis.santannapisa.it/~luca/AdvancedOS/XenoTest) with a recent version of Xenomai. You can chose the hardware architecture you prefer 5) Run some experiments similar to http://retis.santannapisa.it/luca/VMLatencies using a different hypervisor (ACRN, or some real-time hypervisor), VMM (Intel's cloud hypervisor, Firecracker, ...) or a different hardware architecture (ARM or ARM64, ...) 6) Run some more advanced experiment with the kvm driver (extending http://retis.santannapisa.it/~luca/AdvancedOS/Src/kvm-test.tgz) 7) Try some simple "trap and emulate" experiment on ARM / ARM64 and/or run some simple experiment with the ARM / ARM64 virtualization extensions 8) Run some similar experiment with a microkernel-based system (based on Fiasco - http://os.inf.tu-dresden.de/fiasco Secure L4 - https://docs.sel4.systems/GettingStarted or something different - http://www.genode.org)