[OSC] Day8:Virtualization
Virtualization
Fundamental idea: Virtual Machines
- Abstract hardware of a single computer into several different execution environments.
- Similar to layered approach, but layer creates virtual system(virtual machine, or VM) on which operation systems or applications can run several components
- The base is hardware, and there is a VMM, on the top is different server on different OS
We have already seen that an OS virtualises(Why?)However, a VM virtualises an entire physical machine:
Virtual Memory
Virtual file system
Providing the illusion that software has full control over the hardware
As implication, you can run multiple instances of an OS(or different OS) on the same physical machine
Components
Host -underlying hardware systemVirtual machine manager(VMM) or hypervisor - creates and runs virtual machines by providing an interface that is identical to the host(Except in the case of paravirtualization)
Guest -process provided with virtual copy of the host(usually an operating system)
Main properties
- Isolation: each VM is independent, so failures do not affect the host
- Encapsulation: state can be captured into a file(checking pointing, migration. It is easier than migrating processes. We merely have to move the memory image that contains OS tables)
- Interposition: All guest actions go through the monitor(VMM), which can inspect, modify, deny operations
- Fewer physical machines saves money on hardware and electricity
- Run legacy applications
Requirements for virtualisation
- Safety: the hypervisor should have full control of the virtualised resources(Resources sharing)
- Fidelity: the behaviour of a program on a VM should be identical to that of the same program running on bare hardware. What if we run privileged instructions?(Virtualisation Technology(VT) - hardware support)
- Efficiency: much of the code in the VM should run without intervention by the hypervisor(Overheads)
It is not like java VM. A java VM is very different from the physical machine that runs it. A hardware-level VM reflects underlying processor architecture
It is not like simulator or emulator. Simulators generally have very high overhead. A hardware-level VM utilises the underlying physical processor directly
Approaches to virtualisation
Full Virtualisation: It tries to trick the guest into believing that is has the entire systemParavirtualisation: VM does not simulate hardware. It offers a set of hypercalls which allows the guest to send explicit requests to the hypervisor(as a system call offers kernel services to applications)
Process-level virtualisation: The aim is to simply allow a process that was written for a different OS to run. For instance, “Wine” in Linux to run Windows applications, “Cygwin” to run Linux shell on Windows.
Types of hypervisors
There are two main types of VMMs:- Natives(Type 1): Technically, it is like an OS, since it is the only program running in the most privileged mode. Its job is to support multiple copies of the actual hardware.
- Hosted(Type 2): It relies on a OS to allocate and schedule resources, very much like a regular process
- Both VMMs act as real hardware
Native Virtual Machines(Type 1 Hypervisors)
Hypervisor installs directly on hardwareThe hypervisor is the real kernel
(Unmodified) OS runs in the user mode:
- It seems to be in kernel model: virtual kernel mode
- Privileged instructions need to be processed by the hypervisor
- Hardware VT technology will be necessary
Paravirtualisation-based VMs are typically based on type 1 hypervisors.
Examples: VMware ESX Server, Xen, Microsoft Viridian (2008)
Hosted Virtual Machines(Type 2 Hypervisors)
Installs and runs VMs as an application on an existing OS.Relies on host scheduling. Therefore, it may not be suitable for intensive VM workloads.
I/O path is slow because it requires world switch.
Process-level virtualisation will rely on type 2 hypervisors. It needs an OS.
Examples: VMware Player/Workstation/Server, Microsoft Virtual PC/Server, Parallels Desktop
A hypervisor must virtualise:
- Privileged instructions (Exceptions and interruptions)
- CPU
- Memory
- I/O devices
What do we need to Virtualise?
Virtualising Privileged InstructionsIt is not safe to let guest kernel run in kernel mode
So a VM needs two modes: virtual user mode and virtual kernel mode. Both of which run in real user mode!
What happens when the guest OS executes an instruction that is allowed only when the CPU really is in kernel mode?(e.g. map virtual pages to physical pages)
- Type 1 hypervisors: In CPUs without Virtual Techonology (VT), the instruction fails, and the OS crashes.
- Attempting a privileged instruction in user mode causes an error -> trap
- VMM gains control, analyses error, executes operation as attempted by guest
- Returns control to guest in user mode
- Known as trap-and-emulate
评论
发表评论