Skip to content
loading...
Discussion
markdown guide
 

It's like Inception, but with computers.

A computer takes program instructions and sends them to the hardware to be processed.

A virtualized computer takes program instructions and sends them to virtualized hardware to be processed. That is, a program that acts like a piece of hardware, but instead of processing the instructions directly, it takes commands and converts them to different instructions that run on the actual hardware.

 

Virtualization has a lot of different moving pieces and parts. There are a few different products for virtualization as of writing, but for the most part the underlying structures stay the same.

There is a virtualization manager that creates virtual copies of the physical hardware. Basically, virtual addressing for the CPU, RAM, GPU, and I/O. These addresses are overlayed on top of the physical hardware and mapped by the virtualization manager. Intel and AMD both have virtualization technologies that allow the manager to utilize these virtual addresses in containers that are separate (meaning that one virtual machine cannot see the code being executed by any of the other virtual machines since the address spaces are kept private, even when using shared resources).

The virtual manager is then responsible for distributing the workload from the virtual machines to the physical machine. Each manager handles this very, very differently. The key thing is that each virtual machine can have its own share of the hardware or it can share with all the other virtual machines. When it is dedicated then it literally "steals" that particular hardware away from the physical computer and dedicates to that virtual machine so nothing else can ever use that hardware. When it is shared, the commands to the computer are sent in when the resources are ready for it (queuing as needed).

I hope that is ELI5 enough. I am not always the best at breaking things down to the simplest level, but I think this hits the high-level overview of that. As I mentioned, there are a lot of different virtual managers that handle things differently. I work with VMware and Hyper-V, mostly, but do have experience with KVM and Xen as well.

 
Classic DEV Post from Aug 1 '19

Which dev.to loading GIF do you prefer?

I made some dev.to loading gifs

Belhassen Chelbi profile image
UX Designer/ Front End Engineer I help businesses develop products with impact on humans.