I have always found the difference between Type 1 vs Type 2 hypervisors rather uninteresting. In short, a type-1 hypervisor is a hypervisor that has direct access to the hardware, where a type-2 hypervisor executes inside an operating system. Most hypervisors are type-1 hypervisors, including IT hypervisors such as VMWare, Xen, KVM and such. Type-2 hypervisors are applications like VMWare Workstation (or Fusion), Parallels, …. The distinction between type-1 versus type-2 is really not as useful as most people think. There is a good blog article by Anthony Liguori that describes this as well, complete with references, the article is a bit old, but still correct.
What is actually much more interesting are the properties of the hypervisor, the following is my short list of important properties for an embedded hypervisor:
- real-time performance, related to interrupt latency and context switch times. For all intents and purposes interrupt latency needs to be as close to native as possible. This is usually measured in low microseconds (or sub-microsecond).
- determinism, related to things like jitter and the worst case latency time of interrupts, again measured in low microseconds or below
- footprint, how large is the hypervisor in RAM, typically measured in kilobytes, with a reasonable range around the 50-100k, though for some really small systems you may need to be able to go lower than 50k
- device access, can the virtual board have direct access to devices, without the hypervisor getting in between for best real-time behavior, while at the same time not limiting true virtualized devices (shared ethernet for example)
- configurability, is it possible for the embedded developer to configure exactly how the hypervisor is configured with regards to mapping of devices, cores and memory
- certification, becoming more and more important in many critical systems: a path to safety certification
The above properties designate an embedded hypervisor and it makes it quite evident where the embedded hypervisors differ from IT level hypervisors.