Check this link.
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.