半虚拟化:用软件接口来代替实际的硬件的功能。比如,半虚拟化提供一组虚拟化调用,当在虚拟操作系统中的进程需要使用系统调用时,这个时候进程就会向虚拟机管理程序请求这组虚拟化的调用,来达到类似于系统调用的效果。
半虚拟化的缺点:安装在半虚拟化的环境中的操作系统需要了解虚拟机的API,实际运行的时候,需要知道哪个API能够实现自己的要求,这就需要操作系统为这个半虚拟化定制相应的功能,才能正常的在半虚拟化环境中使用,这就给操作系统的编写增加了工作量
另外需要指出的是,有时候的虚拟化并不需要虚拟整个操作系统,比如进程级别的虚拟化。
因为有时候我们仅仅想让某个程序运行起来,不必为这个程序单独创建一个虚拟的操作系统,就可以使用进程级别的虚拟化功能,例子有:WINE兼容层,允许WINDOWS程序允许运行在POSIX系统兼容的系统上,它的做法就是运用API转换技术做出Linux对应到Windows相对应的函数来调用DLL(动态链接库)以运行Windows程序。