Windows沙盒工作原理


Windows 沙盒的核心是一个轻量级虚拟机,但它不像普通虚拟机那样需要下载映像,而是能够直接使用Windows系统作为副本。

Windows沙盒内部原理

动态生成镜像

Windows 沙盒的核心是一个轻量级虚拟机,因此,需要一个操作系统镜像才能启动。Microsoft为Windows 沙盒提供的一项重要增强功能,能够使用安装在计算机上的Windows 10 副本,而不是像使用普通虚拟机那样下载新的VHD映像。

Microsoft希望始终呈现一个干净的环境,但挑战在于某些操作系统文件可能会发生变化。解决方案是构建一个称之为“动态基础镜像”的操作系统镜像:一个干净的操作系统镜像,文件可以变动,大多数文件是链接(不可变文件),镜像中完整的操作系统的大小为100MB左右。

如果未安装Windows 沙盒,动态基础镜像仅仅是25MB的压缩包。安装动态基础包时,它占用大约100MB的磁盘空间。

Windows Sandbox

智能内存管理

Microsoft的虚拟机管理程序,允许将单个物理机器划分为多个,共享相同物理硬件的虚拟机。虽然这种方法适用于传统的服务器,但它不适合在资源有限的设备上运行。Microsoft设计了Windows 沙盒,以便主机可以根据需要从沙盒中回收内存。

 此外,由于Windows 沙盒所使用的镜像,基本上与主机的操作系统镜像保持一致,因此允许Windows沙箱通过“直接映射”的技术,使用与主机相同的物理内存页面。换句话说,ntdll的相同可执行页面,将映射到主机的沙箱中。

Windows Sandbox

集成内核调度程序

对于普通虚拟机,Microsoft的虚拟机管理程序,只能控制VM中虚拟处理器的调度。但是,对于Windows 沙盒,Microsoft使用称为“集成调度程序”的新技术,该技术允许主机决定何时运行沙箱。

对于Windows 沙盒,采用了一种独特的调度策略,该策略允许以为进程调度线程的方式(类似的原理),调度沙箱的虚拟处理器。主机上的高优先级任务,可以抢占沙箱中不太重要任务的执行时间。使用集成调度程序的好处是,主机将Windows 沙盒作为一个进程,而不是虚拟机来管理,从而产生响应速度更快的主机,类似于Linux KVM。

Windows 沙盒的目标是将Sandbox视为应用程序,但仍具有虚拟机的安全保障。

快照和克隆

如上所述,Windows 沙盒使用Microsoft的虚拟机管理程序。因此另启一个Windows副本进行运行时,是需要一些时间的。所以,最终的方案并不是每次启动Windows 沙盒时,都重塑一个沙盒操作系统,而是使用另外两种技术; “快照”和“克隆”。

快照允许我们在启动沙盒环境时并将内存、CPU和设备状态保存到磁盘。然后,当我们需要一个新的Windows 沙盒实例时,可以从磁盘恢复沙箱环境并将其放入内存而不是启动它。这显着改善了Windows 沙盒的启动时间。 

图形虚拟化

对于图形密集型或多媒体密集型实例,硬件加速渲染是平稳和响应式用户体验的关键。但是,虚拟机与其主机隔离,无法访问GPU等高级设备。因此,图形虚拟化技术的作用是弥合这一差距,并在虚拟化环境中提供硬件加速,例如Microsoft RemoteFX。

最近,Microsoft与图形生态系统伙伴合作,将现代图形虚拟化功能,直接集成到DirectX和WDDM中,以下是Windows上显示驱动程序使用的驱动模型。

从较高层面来看,这种形式的图形虚拟化的工作原理如下:

在Hyper-V VM中运行的应用程序正常使用图形API。

VM中的图形组件(已支持虚拟化)在VM边界与主机协调以执行图形工作负载。

主机在VM所运行的应用程序之间,分配和调度图形资源以及本机运行的应用程序。从概念上讲,它们表现为一个图形客户端池。

此过程如下所示

Windows Sandbox

这使得Windows 沙盒VM能够受益于硬件加速渲染,Windows可以在主机和来宾之间动态分配图形资源。其结果是提高了Windows 沙盒中,应用程序的性能和响应能力,并提高了图形处理较多的电脑的电池寿命。

要利用这些优势,需要一个具有兼容GPU和图形驱动程序(WDDM 2.5或更高版本)的系统。不兼容的系统,将导致Windows 沙盒中的应用程序,依然使用Microsoft基于CPU的渲染技术。

电池感应

Windows 沙盒还能感受到主机的电池状态,从而可以优化功耗。这对于笔记本电脑的至关重要,不过高的消耗电池对用户来说非常重要。


本文标题:Windows沙盒工作原理
转载请保留页面地址:https://xieyonghui.com/tech/Windows-Sandbox-install-and-internals_218.html
已有0人评论

评论专区