Virtualization Technologies

CS 441 Lecture Notes, 2016-04-11, Dr. Orion Lawlor

"Virtualization" is a broad and elastic term, covering everything from virtual memory to cloud computing.  Today virtualization refers to virtual machines, a software construct where we can boot a separate operating system alongside our normal operating system, providing security and customization benefits.  

Major types of virtualization today include:

  • Software as a Service: the provider runs, e.g., a blog host like  You add posts to your blog.
  • Platform as a Service (Application Hosting): the provider supplies a runtime system for a particular version of a particular language.  You write your applications in that language.  This allows users to create their own applications.
  • Containers: the provider supplies a UNIX environment, but it is stripped down and restricted to live in a single directory, the "chroot jail".  Used by Docker and NetRun.  This allows users to run arbitrary applications, but still share a single kernel and management infrastructure.
  • Infrastructure as a Service (Virtual Machines): a complete operating system kernel, drivers (for virtual hardware), filesystem, etc.  This gives maximum flexibility to the user, and allows users to stage their own kernel updates when desired.

A variety of companies sell or give away virtual machines or hosted applications:

  Amazon Google Microsoft Other Examples

Applications (Platform as a Service)

   E.g., Python, PHP, Node.js

 Elastic Beanstalk  App Engine  Azure Cloud Services  

Virtual Machines (Infrastructure as a Service)

   E.g., Run a Linux or Windows VM

 AWS EC2  Compute Engine  Azure


Humor: the Onion explains 'That Cloud Thing'; Chris Watterson explains why 'There is no Cloud'.