Summary

Completed
  • Virtualization is at the core of cloud computing. Virtualization allows the construction and provision of virtual hardware images VMs from underlying physical machines.
  • Virtualization enables the cloud computing model by making it possible to offer a range of cloud services, including IaaS, PaaS, and SaaS.
  • Virtualization enhances the cloud elasticity by allowing providers/users to expand or contract services, either manually or automatically.
  • Virtualization provides resource sandboxing by making it difficult for one cloud user to observe or alter another's data and/or activity.
  • Virtualization provides fault containment by preventing a software failure at one VM to propagate to another VM, even if both exist at the same physical machine.
  • Virtualization provides server consolidation by allowing multiple VMs to run on a single PM, thereby improving system utilization and reducing costs.
  • Although virtualization allows running multiple VMs side by side, it provides full isolation (such as security isolation, resource isolation, and failure isolation).
  • Virtualized systems are complex. The key to managing complexity in virtualized systems is dividing system components into levels of abstractions separated by well-defined interfaces.
  • In general, system abstractions hide details and ease software development and manageability (for example, files abstract disks, whereby programmers can simply create, read, and write files without worrying about locations and sizes of cylinders, sectors, and tracks or bandwidth allocations at disk controllers).
  • Abstractions can be applied at the hardware and software levels.
  • An interface of a system component is defined as a set of function calls that allows leveraging the component's functionalities.
  • The three most common system interfaces are the application programming interface (API), the instruction set architecture (ISA) interface, and the application binary interface (ABI).
  • ISA and ABI are of special interest in virtualization, wherein they serve in defining VM types.
  • A core task in virtualization is to share (or multiplex) the underlying system components (for example, CPUs, memory) among various VMs.
  • In general, resource sharing can be achieved in time (also called timesharing) and/or in space.
  • Sharing in time allows VMs to take turns using a resource component (for example, sharing a physical CPU among the virtual CPUs of a VM), while sharing in space enables each VM to have an exclusive access to a specific portion of a component (for example, sharing a physical memory among VMs).
  • Timesharing and space sharing in multiprocessor systems are typically more involved than their counterparts in uniprocessor systems.
  • Timesharing improves system utilization but requires sophisticated scheduling and management mechanisms.
  • Space sharing is usually a suboptimal solution for system utilization but a near-optimal solution for system complexity.