Terms & Concept
A good blog to start with to understand some of the Hyper-V Terminology.
Data Execution Prevention (DEP)
Enlightened I/O is a specialized virtualization-aware implementation of high level communication protocols (such as SCSI) that utilize the VMBus directly, bypassing any device emulation layer. This makes the communication more efficient but requires an enlightened guest that is hypervisor and VMBus aware. Hyper-V enlightened I/O and a hypervisor aware kernel is provided via installation of Hyper-V integration services.
Modern processors (CPUs) from Intel and AMD include extensions to provide the ability to load a hypervisor virtualisation platform in between the computer hardware and the main, or host, operating system. This is currently implemented in the Intel VT and AMD-V line of processors.
Interface for communication with the hypervisor – The hypercall interface accommodates access to the optimisations provided by the hypervisor.
A layer of software that sits between the hardware and one or more operating systems. Its primary job is to provide isolated execution environments called partitions. The hypervisor controls and arbitrates access to the underlying hardware.
Unit of isolation within the hypervisor that is commonly referred to as a virtual machine. A partition is allocated physical memory address space and virtual processors.
- Root Partition – Manages machine-level functions such as device drivers, power management, and device hot addition/removal. The root (or parent) partition is the only partition that has direct access to physical memory and devices.
- Child Partition – Partition that hosts a guest operating system – All access to physical memory and devices by a child partition is provided via the Virtual Machine Bus (VMBus) or the hypervisor.
A good read;
- Synthetic Devices
It is a technique for abstracting the physical characteristics of computing resources and presenting them as logical resources, sometimes with different characteristics, to operating system(s) that interact with those resources for more details; please check this , I didn’t find any better explanation of this however this may help.
- Virtual Machine
A virtual machine is a super-set of a child partition. A virtual machine is a child partition combined with virtualisation stack components that provide functionality such as access to emulated devices, and features like being able to save state a virtual machine. It is an essentially a specialised partition, I (and many members on the team) tend to use the terms “partition” and “virtual machine” interchangeably. But, while a virtual machine will always have a partition associated with it – a partition may not always be a virtual machine.
Basic Components of Virtualisation
The scheduler manages timing-based access to physical resources by different virtual machines. The scheduler’s behavior can normally be controlled at a high level by virtual machine configuration options that are available to administrators.
- Memory management
The memory manager manages the virtual memory for virtual machines and provides them with an abstracted contiguous view of the computer’s physical memory.
- State machine
A state Machine maintains information about the running state of a virtual machine, including its CPU, memory, and devices, etc. and manages state transitions.
- Storage and networking
Storage and networking functionality enable shared access to resources by multiple virtual machines. To accomplish this, multiplexing is used to access the physical devices, such as network interface cards, from the virtual machines. This multiplexing occurs in a manner that is consistent, isolated, and secure.
- Virtualised devices
Virtualized devices provide operating systems running in virtual machines with representations of devices that behave the same as their physical counterparts. These devices are accessed by applications as if the applications were running on physical servers (i.e. using device driver software.)
- Virtual device drivers
Virtual device drivers are installed in virtualized (guest) operating systems running inside virtual machines so that applications can access the virtual representations of hardware and I/O connections the same way that they access physical hardware and I/O connections on physical hardware.
- Binary Translation
Binary translation was required in the earliest generations of virtual machine implementations for the x86 architecture, which was not designed for virtualization. Traditionally, virtual machine platforms performed a translation or emulation procedure every time a guest operating system attempted to execute a “privileged” instruction, which is a low-level instruction that only the host operating system has the right to perform. More recently, Intel and AMD introduced extensions in their processors to assist virtualization. These extensions enable multiple virtual machines to issue privileged instructions that can be detected and processed directly in hardware. As a result, it is no longer necessary for virtual machine platforms to perform this function in software.
- Management Interfaces
A virtual machine platform has to provide a variety of interfaces for managing its operation, and for controlling the virtual machines running on a host. This interface has to cover numerous operations, such as creating, configuring, and monitoring virtual machines. It is also necessary to provide both interactive interfaces, or those used by administrators, and programmatic interfaces, or those used by other software through an Application Programming Interface (API). It is important that the management interface is fully accessible over the network so that the virtual machine host and its virtual machines may be configured and operated remotely.
If you are interested in being involved – key links to be aware of are:
- Hyper-V Documentation: https://msdn.microsoft.com/virtualization/hyperv_on_windows/windows_welcome
- Container Documentation: https://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome
- Virtualization Documentation on GitHub: https://github.com/Microsoft/Virtualization-Documentation/tree/live/virtualization
hvservice.sys (Microsoft Windows Hypervisor (Hyper-V) Boot Driver)
Get-ItemProperty C:\Windows\system32\vmsp.exe | fl VersionInfo
VersionInfo : File: C:\Windows\system32\vmsp.exe InternalName: vmsp.exe OriginalFilename: vmsp.exe.mui FileVersion: 10.0.14393.0 (rs1_release.160715-1616) FileDescription: Virtual Machine Security Process Product: Microsoft® Windows® Operating System ProductVersion: 10.0.14393.0 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)
Get-ItemProperty C:\Windows\system32\vmwp.exe | fl VersionInfo
VersionInfo : File: C:\Windows\system32\vmwp.exe InternalName: Virtual Machine Worker Process OriginalFilename: vmwp.exe.mui FileVersion: 10.0.14393.0 (rs1_release.160715-1616) FileDescription: Virtual Machine Worker Process Product: Microsoft® Windows® Operating System ProductVersion: 10.0.14393.0 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)
Get-ItemProperty C:\Windows\system32\vmms.exe | fl VersionInfo
VersionInfo : File: C:\Windows\system32\vmms.exe InternalName: Virtual Machine Management Service OriginalFilename: vmms.exe.mui FileVersion: 10.0.14393.206 (rs1_release.160915-0644) FileDescription: Virtual Machine Management Service Product: Microsoft® Windows® Operating System ProductVersion: 10.0.14393.206 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)
Get-ItemProperty C:\Windows\system32\hvhostsvc.dll | fl VersionInfo
VersionInfo : File: C:\Windows\system32\hvhostsvc.dll InternalName: hvhostsvc.dll OriginalFilename: hvhostsvc.dll.mui FileVersion: 10.0.14393.0 (rs1_release.160715-1616) FileDescription: Microsoft Hypervisor Host Service Product: Microsoft® Windows® Operating System ProductVersion: 10.0.14393.0 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)
Get-ItemProperty C:\Windows\system32\drivers\hvservice.sys | fl VersionInfo
VersionInfo : File: C:\Windows\system32\drivers\hvservice.sys InternalName: HvService.sys OriginalFilename: HvService.sys.mui FileVersion: 10.0.14393.0 (rs1_release.160715-1616) FileDescription: Hypervisor Boot Driver Product: Microsoft® Windows® Operating System ProductVersion: 10.0.14393.0 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States)