Nezer Jacob Zaidenberg University of Jyvaskyl¨ a,¨ Finland

Abstract process virtualization as opposed to native code, cross cutting aspects implementation in virtual machines and This course is hands on course for advanced undergradu- implementations such as JVM and LLVM. ate, graduate students and experienced developers. Soft- ware development skills in C and are required. We introduce aspects of virtualization. System virtu- 3.1 Java virtual machine (JVM) alization (such as VMWare), Proces virtualization (such We will discuss features and design principals of JVM as JVM) , Storage virtualization and cloud based virtual- including Just-in-time, sandboxing of applets etc. ization. 3.2 Low level virtual machine (LLVM) 1 Virtualization We will discuss features and design principals of LLVM We will discuss theoretical and practical models for vir- and the CLang compiler. tualization. The goals for running software on virtual machines. 4 Storage virtualization

2 System virtualization Introduction to storage virtualization concepts. Replica- tion, mirroring, snapshots, distributed file systems. System virtualization refers to running a complete sys- tem in a virtual environment (Products such as Virtual 5 Cloud based virtualization Box, , VMWare etc.) We will review the goals of system virtualizations and why are they used. We will discuss clustering issues of virtualization. We will use as a simple example 2.1 Lguest to using virtual IP in the cloud. We will also discuss running application in GRID sandbox. Lguest[1] is a minial system virtuaization implemented in the for padagogic purposes. We will re- view Lguest code and understand how to build a system 6 Duration virtualization environment. The course will be given in 16 hours. 4 hours a day for 4 days. The course will be taught in English! 2.2 Virt I/O Virtual I/O are the basis for paravirtualization drivers in 6.1 First day Linux. We will review the Virt I/O infrastructure. • Introduction to virtualization. 3 Process virtualization • Introduction to Process virtualization • JVM Process virtualization refers to running a process inside a virtual machine such as CLR, JVM etc. We will discuss • LLVM & CLANG 6.2 Second day 8 Prior knowledge requirement • Introduction to system virtualization 1. Basic familiarity with OS and computer architec- • Introducing lguest ture. You need to understand how interrupts, device drivers etc. is implemented normally before you can • Code review of lguest boot process understand how to virtualize them.

• Code review of lguest char dev 2. Solid C background Please examine Linux source tree for example at http: 6.3 third day //lxr.linux.no/linux+v2.6.37/ Documentation/lguest/lguest.c and • Code review of lguest launcher http://lxr.linux.no/linux+v2.6.37/ drivers/lguest/lguest device.c If you • Code review of lguest kernel module are unable to read the code please do not sign up to • Code review of virt I/O driver. the course. • Introduction to Cloud based virtualization 3. Using Linux/UNIX (shell and development tools)

4. kernel development skills recommended but not re- 6.4 forth day quired. • Linux Virtual Server (LVS) 5. Assembler for x86 is recommended but not re- • Introduction to storage virtualization quired. • Storage virtualization in Linux block layer References • Summary and projects [1] RUSSELL, R. Rusty’s remarkably unreliable guide to Lguest. http://lguest.ozlabs.org/lguest.txt. 7 Grading

Following the course each student will have to submit a final project. The final project should include some of the ideas mentioned in class and will be implemented on top of lguest, llvm or other virtualization model. Project can be done in pairs and project ideas include but are not limited to: • Adding aspects to process virtual machine (such as profiling etc.) • Support for ”on the fly” insertion or removal of devices from guest (like plugging and unplugging thumb drive) • An efficient guest to guest communication system • An efficient guest to host communication system • Support for external devices in guest (like Fi- brechannel or Firewire in guest) • An interface for debugging the current kernel run- ning on lguest via kernel debugger. • Network testing tools using virtualization (simulat- ing packet losses, packets out of order etc.) • Any other project, of proper volume, that involves lguest, VirtIO or virtualization

2