Virtual Machines and Hypervisors

"Virtual machines and hypervisors" on a slightly blurred background of clouds with the word cloud in the background.

In last week’s post we looked at the concept of cloud computing, and some of the services cloud computing can provide. But what actually makes cloud computing work?

Cloud computing wouldn’t be possible without virtualization. Virtualization wouldn’t be possible without hypervisors. Virtualization and hypervisors therefore support the entire cloud computing ecosystem.


Virtualization software creates an abstraction layer on top of computer hardware. This allows the hardware elements of a single computer — processors, memory, storage, networking, etc. — to be divided into multiple virtual computers, called virtual machines (VMs). VMs operate independently of each other, even though they are running on the same physical hardware. Each VM provides the functionality of a separate stand-alone computer.

Each VM can run its own operating system (OS), called a guest operating system. The guest operating system can run any software as if it were running on a stand-alone physical computer. Each user is provided with a separate VM having its own memory space, virtual devices, storage, etc.

Some virtual machines are designed to emulate (or “virtually imitate”) different system architectures. These allow operating systems and applications written for another architecture or CPU to be run.

A mainframe can typically run hundreds or even thousands of virtual machine instances. In this way, virtualization uses computer hardware very efficiently. It is currently a standard practice in many enterprises. Higher returns on hardware investment can be achieved when using virtualization.

Virtualization and the Cloud

Virtualization is also the technology that drives cloud computing. Cloud providers can serve multiple clients using virtualization. Cloud users only have to buy the computing resources they need when they need it. As demand or workloads grow and shrink, users can cost-effectively scale resources up and down.


The heart of the VM architecture is the hypervisor controlling program. It runs on the physical hardware and creates the virtual machine environment. It performs the system’s resource-sharing, including device and virtual storage management, and other standard operating system tasks.

Before hypervisors became popular, most computers could only run one operating system at a time. This made them very stable because the hardware only had to handle requests from that single operating system. Unfortunately the operating system couldn’t always use all of the computer’s power. This had the potential to waste computer resources.

Hypervisors solved that problem. A hypervisor is a relatively small software layer that allows a number of operating systems to run alongside each other on the same physical computer. These operating systems come as virtual machines — files that emulate an entire computing hardware environment in software.

The hypervisor manages these VMs as they run alongside each other. It assigns a slice of the underlying computing power, memory and storage to each VM. The hypervisor separates and isolates VMs, and prevents them from interfering with each other. If a VM crashes or is compromised in some way, the others survive. Hypervisors are also known as virtual machine monitors (VMM).

Modern hypervisors use hardware-assisted virtualization. The host CPU contains virtualization-specific instructions and hardware.

Virtualization vs. Containerization

As we’ve seen, virtualization divides the hardware elements of a single computer into multiple virtual computers, each of which then runs an entire OS. The OS runs one application. This is a lot more efficient than having no virtualization. However, it still creates duplicate and often unnecessary services for each application being run.

Containers take a different approach. They share an underlying OS kernel, and only run the application with its dependencies, such as environment variables and API libraries. This makes containers smaller with faster deployment and startup.

Next week we’ll have a look at containers.

Don’t forget to share your comments and experiences.

Leave a Comment

Your email address will not be published. Required fields are marked *

Code like a Java Guru!

Thank You

We're Excited!

Thank you for completing the form. We're excited that you have chosen to contact us about training. We will process the information as soon as we can, and we will do our best to contact you within 1 working day. (Please note that our offices are closed over weekends and public holidays.)

Don't Worry

Our privacy policy ensures your data is safe: Incus Data does not sell or otherwise distribute email addresses. We will not divulge your personal information to anyone unless specifically authorised by you.

If you need any further information, please contact us on tel: (27) 12-666-2020 or email

How can we help you?

Let us contact you about your training requirements. Just fill in a few details, and we’ll get right back to you.

Your Java tip is on its way!

Check that is an approved sender, so that your Java tips don’t land up in the spam folder.

Our privacy policy means your data is safe. You can unsubscribe from these tips at any time.