虚拟机 v.s. 沙盒(区别)
虚拟机和和沙盒具有很多相同的特点,因而容易混淆。在讨论虚拟机和沙盒区别之前,我们先来看下一般计算机的大致结构(在一个很高的抽象层次上)。
一般的计算机结构:
图1-1. 一般计算机的结构从图1-1可以看出,操作系统operation system(简称os)windows作为应用程序application和硬件hardware的驱动程序driver的桥梁。application运行在windows之上并通过windows与用户user和机器硬件进行“互动”(在操作系统出现之前只有专业人员会操作计算机,正是因为有了操作系统的出现,普通人也能够操作计算机)。此外,操作系统负责访问硬盘上的文件资源,并通过驱动程序来控制机器硬件。驱动程序有很多,针对不同的硬件需要配置不同的驱动程序。
沙盒sandbox:
沙盒的特点在于很好的系统隔离性。在某种程度上,沙盒sandbox可以视为一个容器container,application运行在沙盒中,沙盒运行在windows操作系统上。运行在沙盒中的application和沙盒外的application一样可以访问硬盘中的文件等资源。运行在沙盒中的application和沙盒外的application的主要区别在于:
1. 对于沙盒外的application而言,沙盒内的application是透明的(即不可见的);
2. 当沙盒内的application退出后,所做的更改将不会被保存。
一个很好的例子是:当沙盒内的application退出后,沙盒内的application已下载或“安装”的恶意软件都将被丢弃。
虚拟机virtual machine:
虚拟机简称VM,其本质上是一个运行在操作系统之上的application,其特殊之处在于,虚拟机通过软件的方法模拟出一个完整独立的计算机的环境(但是并不是真是的计算机环境),这也是虚拟机名字的由来。因此,虚拟机就像是真实计算机的一个copy副本,虚拟机可以视为“机器内部的机器”。比如我们经常在windows操作系统上安装一个linux虚拟机,在这种情况下windows被称为host,linux被称为guest,一个host上可以安装多个guest虚拟机,就像是一个windows上可以安装多个application。
带有sandbox的计算机结构:
图1-2. 带有沙盒的计算机结构运行在沙盒中的application和沙盒外的application共享机器的存储内存和计算资源。
带有虚拟机的计算机结构:
图1-3. 带有虚拟机的计算机结构在一个虚拟机内部,可以安装很多个application,这些application可以使用虚拟机内部的资源,包括虚拟硬盘和计算资源。此外虚拟机内部可以享有属于自身的驱动程序,因此虚拟机是作为一个application,利用真是的硬件资源来模拟了属于自己的硬件资源和软件环境。因此当虚拟机退出后,发生在虚拟机内部的更改(包括下载、设置、更新、安装等操作)会被保存下来。
带有多个虚拟机的计算机结构:
图1-4. 带有多个虚拟机的计算机结构经过上面的讨论,我们可以看出虚拟机和沙盒的主要区别在于:
1. 当沙盒中的应用程序退出后,其所做的更改会被丢弃;而当虚拟机退出后,其所做的更改会被保存下来;
2. 沙盒中的application和其他application共享机器的硬件资源;而虚拟机在安装时需要为其指定内存memory和cpu核且虚拟机不和其他application共享硬件资源。因此虚拟机实际上是很耗系统资源的。