2.1 虚拟机的作用

虚拟机(Virtual Machine)这一概念最初由波佩克与戈德堡定义,是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。由此可见,虚拟机是跟特定硬件无关的一个系统。在现实应用中,虚拟机最常见的情形便是双系统。例如计算机原装系统是Windows,为了在这台机器上能够体验Linux系统,可以安装一个虚拟机环境,在这个虚拟机环境中运行Linux系统,这样就实现了“一机双系统”的功效。在现实应用中,通过虚拟机软件可以在一台物理计算机上模拟出一台或多台虚拟的计算机。这些虚拟机完全可以像真正的计算机那样进行工作,例如可以安装操作系统、安装应用程序、访问网络资源等等。对于使用用户而言,虚拟机只是运行在物理计算机上的一个应用程序。但是对于在虚拟机中运行的应用程序来说,虚拟机就是一台真正计算机。正因为如此,所以当在虚拟机中进行软件评测时,可能会发生系统崩溃的情形。但是这里崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统。可以使用虚拟机的“Undo”(恢复)功能,立即恢复虚拟机到安装软件之前的状态。

虚拟机根据它们的运用以及与直接机器的相关性分为两大类。系统虚拟机提供一个可以运行完整操作系统的完整系统平台;相反,程序虚拟机为运行单个计算机程序设计,这意谓它支持单个进程。虚拟机的一个本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里——它不能超出虚拟世界。

在现实应用中,对于一般计算机用户来说,最常见的使用虚拟机的情形是安装双系统。例如在Windows平台上安装一个虚拟机,然后在这个虚拟机中安装Linux操作系统或iOS系统,这样就实现了双系统功能。

在当前流行的编程语言Java中,便是采用了虚拟机机制,Java的虚拟机被称为JavaVirtual Machine,缩写为JVM。用Java编写的程序可以通过对Java运行环境(JRE)软件发出命令获得服务,取得期望的结果。透过提供这种服务,JRE起到了虚拟机的作用,程序不必为特定的操作系统或硬件编写。

Java虚拟机和Android虚拟机十分相似,所以在本书中将以Java虚拟机开始,逐步引领广大读者步入Android虚拟机的世界。