Difference between Virtual Machine and a Hypervisor

29

If you Google the term "hypervisor" you get endless definitions that state a hypervisor is also known as either a virtual machine monitor or a virtual machine manager, and that it is a form of hardware virtualization. But, being brand new to VMs and their concepts, this is a fuzzy definition for me.

So, what is the difference - and/or relationship between - a virtual machine and its hypervisor? Can someone give a concrete example?

pnongrata

Posted 2011-09-22T20:37:40.250

Reputation: 2 212

Do see the wikipedia article on hypervisors. There are a couple different types, which may be partly why you are confused. http://en.wikipedia.org/wiki/Hypervisor

– Zoredache – 2011-09-22T21:00:17.927

Answers

17

The hypervisor is the device or software which runs the virtual machine. It's typically responsible for allocating the resources, providing the interface between the virtual machine (the "guest") and the host system as well as any management software.

So if you're using VMware Workstation to run a Windows 7 virtual machine, VMware Workstation is the hypervisor.

Coding Gorilla

Posted 2011-09-22T20:37:40.250

Reputation: 706

So... What's the difference between VMM and Hypervisor? – allyourcode – 2014-09-03T23:01:07.657

@allyourcode Depends on which "VMM" you're talking about and in what context. – Coding Gorilla – 2014-09-04T12:31:31.577

Excellent answer, upvoted. But what about software emulators? Could we say that emulator (DOSBox) is a software which runs the virtual machine? – john c. j. – 2019-01-22T19:43:19.857

5Why can't they just say that in the reference documentation?!? Thanks! – pnongrata – 2011-09-22T20:51:36.917

10They don't want to make it too easy on you, or you won't pay for the support contract. ;) – Coding Gorilla – 2011-09-22T20:52:13.463

5

Check this link. http://blogs.msdn.com/b/virtual_pc_guy/archive/2006/07/10/661958.aspx

Answer is from Ben Armstrong’s Virtualization Blog

here are actually two meanings for 'VMM'. The first is 'virtual memory manager' - this is part of the Windows operating system and has nothing to do with computer virtualization - and everything to do with operating system memory management. This is not what I am discussing today :-)

The second meaning is 'Virtual Machine Monitor'. There are a number of different programs and implementations that use the moniker 'Virtual Machine Monitor'. In the simplest terms - the VMM is the piece of software responsible for monitoring and enforcing policy on the virtual machines for which it is responsible. This means that the VMM keeps track of everything happening inside of a virtual machine, and when necessary provides resources, redirects the virtual machine to resources, or denies access to resources (different implementations of VMMs provide or redirect resources to varying levels - but that is a topic of discussion for another day).

Classically there are two types of VMM.

A type II VMM is one that runs on top of a hosting operating system and then spawns higher level virtual machines. Examples of type II VMMs include the JavaVM and .Net environment. These VMMs monitor their virtual machines and redirect requests for resource to appropriate APIs in the hosting environment (with some level of processing in between).

A type I VMM is one that runs directly on the hardware without the need of a hosting operating system. Type I VMMs are also known as 'hypervisors' - so the only true difference between a VMM and a hypervisor is where it runs. The functionality provided by both is equitable. Examples of type I VMMs include the mainframe virtualization solutions offered by companies such as Amdahl and IBM, and on modern computers by solutions like VMware ESX, Xen and Windows virtualization.

Rajind Ruparathna

Posted 2011-09-22T20:37:40.250

Reputation: 151

3

This is an extension of existing operating system terminology — one that is one of the several alternatives to the seed/nut metaphor. user programs are controlled by the supervisor program, and in a non-virtual system that's where things stop. With virtualization, the supervisor is, in turn, controlled (or monitored, or managed) by a hypervisor program.

All of these programs are softwares. The virtual machine is the pretense of a machine that the supervisor and user programs experience themselves running on. It looks like hardware from the inside.

JdeBP

Posted 2011-09-22T20:37:40.250

Reputation: 23 855

3Ironically, and this is off-topic, and if I remember correctly, Latin "super" and Greek "hyper" derive from the same original word and mean the same thing. German "ueber" is another sibling. So "supervisor" and "hypervisor" are actually the same word, except that one is all Latin while the other is half Latin, half Greek. :-) – Andrew J. Brehm – 2011-09-23T17:20:22.060

2But in fact, the terminology is all Greek to most of us. – Daniel R Hicks – 2012-07-08T04:07:27.477

2

Don Skiba about Hypervisor history:

I was with IBM in 1966, when we were trying to get the new System 360s installed. As you might imagine, converting all that "old code" from the old 1401, 1440, 1410, 7080, 7090 models was the biggest mess you'll ever want to see. On the 360 model 65, there was an emulator for a couple of older machines. Actually, all the 360 models, except for the model 75, were emulators of the 360 instruction set. The one that was popular for the model 65 was the emulator for the IBM 7080. However, you had to dedicate the machine to either 360 mode or 7080 mode. That was not making our customers very happy.

It turned out that there were some special registers on the model 65 that were inactive, but active on the model 67 that were used for time sharing and eventually a virtual operating system, CMS. I convinced the engineer's on the model 65 that we could use those registers to swap between programs running in the lower half of memory to programs running in the upper half and either half could operate in 360 or 7080 mode. We just needed a "little" code to do the swapping, mode setting and resource (I/O) allocation. I convinced a system engineer in Philadelphia, who had a customer who desperately needed this function, to write the code. We tossed around a lot of names for code at the time. I suggested that "hypervisor" might be appropriate, because, prior to the 360, there were no "operating systems" and the prior systems all had "supervisors". So, "hypervisor" seemed appropriate and the name stuck.

Artru

Posted 2011-09-22T20:37:40.250

Reputation: 131