Software that simulates the hardware of a physical computer

When the first computers came out, they had to be programmed. Programmers would have to manually specify a sequence of 0s and 1s (binary) that was a program you wanted to run. As time went by, these programs got longer and more complex. It became difficult for programmers to write programs that could fit in computer memory so they started calculating their binary calculations on paper while they were writing their program. This is when computers started simulating the hardware of a physical computer.

Imagine it. You’re a developer of a commercial application, and you’ve been tasked in creating an emulator that is capable of running multiple instances of your software clients on virtual machines. Unfortunately, each instance of the client might require different hardware specifications (or “requirements”). Furthermore, each virtual machine must be capable of running any operating system (distribution) used in production, one at a time.

This software simulates the hardware of a physical computer. It has the ability to emulate the functioning of the processor, memory, hard disk drives, and other components that are in a computer. It is used for testing software without having to use an actual physical computer. This software can also be used for virtualization purposes.

Physical computers are made up of hardware, which is the physical components of a computer. The software that simulates this hardware can be used to test and analyze how the computer will perform in the real world. Simulation software allows you to create a virtual version of your computer, so that you can test different scenarios without having to actually use the physical device. For example, if you have an app that needs to run on a specific operating system, you can test it using simulation software instead of having to install all of those programs on your actual computer.

What is Virtualization?

Virtualization is the simulation of an operating system, server, storage, or network resource. It is a virtual computer system with simulated hardware and operating systems. All these processes are happening inside a computer. It is like a computer inside a computer. 

Virtual Machines: What are they?

Virtual Machines are virtual environments that simulate a physical computer inside a software. Let’s call a Virtual Machine a VM.

A VM is an emulated equal of a computer system that runs on top of another system. Virtual Machines will be sharing resources with the computer itself.

If the virtual machine can get stored on a virtual disk, this is often referred to as a disk image. A disk image may contain the files for a virtual machine. It also may contain any other specific storage needs.

It has an isolated software container with an Operating System (OS) and application inside. 

Each of the self-contained Virtual Machines is completely independent with each other. Putting many VMs on a single computer enables several operating systems.

Properties of Virtual Machines

  • VMs run many operating systems on one physical machine
  • VMs also divide the system resources among other functionalities that also uses the memory of the computer
  • VMs provide the fault and security isolation at the hardware level
  • VMs also preserve performance using advanced resource controls
  • VMs save the entire state of a Virtual Machine into files
  • VMs also enable “move” and “copy” functionality of Virtual Machines
Hardware Independence
  • VMs make provision or migrate any virtual machine to any physical server.

Hypervisors: Why are they important to VMs? 

A hypervisor is a program for creating and running virtual machines. It serves as an interface between the VM and the physical hardware. It also ensures that each has access to the physical resources it needs to execute.

It ensures that the Virtual Machines don’t interfere with each other by hogging from each other’s memory.

Types of Hypervisors

Bare Metal hypervisors (Type 1)

  • They interact with the underlying physical resources, replacing the traditional operating system altogether.
  • They are appearing in virtual server scenarios.
  • They run guest virtual machines on a system’s hardware which can mimic as an operating system.

Hosted hypervisors (Type 2)

  • They behave like traditional applications that can get started and stopped.
  • Most used on endpoint devices to run alternative operating systems. They carry a performance overhead due to using the host OS to access the hardware resources.

Types of Virtualization

Desktop Virtualization

It lets you run any desktop OS, each in its own VM on the same computer 

  • Virtual Desktop Infrastructure (VDI) – It runs many desktops in Virtual Machine on the main server and streams them to users. In this way, VDI lets an organization provide its users access to a variety of OS from any device.
  • Local Desktop Infrastructure – It runs a hypervisor on a local computer, enabling the user to run one or more extra OS on that computer. Then it also switches from one OS to another without modifying anything about the primary OS.
Network Virtualization

It uses software to create a view of the network that an admin can use to manage the network from a single console. It also abstracts hardware elements and functions like connections, switches, and routers. It also abstracts them into software running on a hypervisor.

  • Software-defined networking (SDN) – It virtualizes hardware that controls network traffic routing called the control plane
  • Network function virtualization (NFV) – It virtualizes one or more hardware appliances that provide specific network functions. Examples of network functions are firewalls or traffic analyzers. Those make the appliances easier to configure, provision, and manage.
Storage Virtualization

It enables all the storage devices on the network both on individual servers or storage. They can get accessed and managed as a single storage device.

Data Virtualization

It creates a software layer between the applications and the systems storing it. The layer translates an application’s data request or query as needed. And it also returns results that can span many systems. Data virtualization can help break down data silos. Meanwhile, other types of integration are not workable, desirable, or affordable.

Application Virtualization

It runs application software without installing it on the user’s OS. It is different from complete desktop virtualization due to the application running. Meanwhile, the OS on the end user’s device runs as usual

  • Local application virtualization – It runs on the endpoint device but runs in a runtime environment instead of on the native hardware.
  • Application streaming – It lives on a server which sends small components of the software to run on the end user’s device when needed.
  • Server-based application virtualization – It runs on a server that sends only its user interface to the client device.
Data Center Virtualization

It abstracts most of a data center’s hardware into software. This enables an admin to divide a single data center. This caters to virtual data centers for different clients.

CPU Virtualization

It is the fundamental technology that makes hypervisors, virtual machines, and OS possible. It allows a single CPU to get divided into many virtual CPUs for use by many Virtual Machines.

GPU Virtualization

It is a special multi-core processor that improves computing performance. This gets done by taking over heavy-duty graphic or mathematical processing. It also lets many VMs use all or some of a single GPU’s processing power. This is for faster video, AI, and other graphic or math-intensive applications.

  • Pass-through GPUs – It makes the entire GPU available to a single guest OS.
  • Shared virtual GPUs – It divides physical GPU cores among several virtual GPUs for use by server-based VMs.
Linux Virtualization

It includes its own hypervisor, called the kernel-based virtual machine (KVM). This gets done to support Intel and AMD’s virtualization processor extensions. This can create x86-based Virtual Machines from within a Linux OS. 

Cloud Virtualization 

The Cloud computing model depends on virtualization. By virtualizing servers and storage, cloud computing can offer many services to customers 

  • Infrastructure as a service (IaaS) – The virtualized servers, storage, and network resources that you can configure. This depends on their requirements.
  • Platform as a service (PaaS) – The virtualized development tools, databases, and other cloud-based services get involved.  You can use it to build your own cloud-based applications and solutions this way.
  • Software as a service (SaaS) – Software applications you use on the cloud. SaaS is the cloud-based service most abstracted from the hardware.

Leave a Comment