In recent years, virtual machine technology has gradually become a hot topic and is receiving more and more attention. For example, VMWare has been adopted by more than 80% of the world's top enterprises. With years of research, virtual machine technology has been widely used in enterprise computing, disaster recovery, distributed computing, and system security.
There are many classification methods for the virtual machine technology. This article argues that the essential feature of a virtual machine is to use the support of the next application (or system) to provide different interfaces for upper-layer applications (or systems, therefore, classification by interface should better reflect the characteristics of virtual machines. Based on the different interfaces provided by the Virtual Machine System for upper-layer applications (1), different levels of virtual machine technology are formed, it mainly includes hardware abstraction layer virtual machine, operating system layer virtual machine, API (Application Programming Interface, Application Programming Interface) layer virtual machine, and programming language layer virtual machine.
Figure 1 hierarchical Virtual Machine Classification
Virtual machines at the hardware abstraction layer. For upper-layer software (the customer's operating system), virtual machines on the hardware abstraction layer construct a complete computer hardware system. The interfaces between these virtual machines and the customer's operating system are processor commands.
Virtual machines at the operating system layer. By dynamically copying the operating system environment, such virtual machines can create multiple virtual running containers. For software running on each container, such virtual machines provide a complete operating system running environment, and its interface with the upper-layer software is the system calling interface.
Virtual machines at the API layer. Such virtual machines provide simulation of the specific operating system environment for upper-layer applications. However, this simulation does not simulate the processor commands, but simulates various user-state APIs of the operating system.
Programming Language layer virtual machine. This type of virtual machine runs language Virtual Machine commands through interpretation or instant compilation technology (just-in-time, JIT) to realize the cross-platform features of software.