虚拟内存是否与虚拟化技术有某种关系?



我认为这是一个有点模糊的问题。但我试图清楚地了解虚拟机管理程序如何与底层操作系统交互,以及是什么让它们如此不同。让我带你完成我的思考过程。

如果我们已经有一个操作系统来管理共享的资源,为什么我们需要一个虚拟化管理器(又名虚拟机管理程序)?

我得到的一个答案是:假设系统崩溃了,如果我们没有虚拟化管理器,那么它就是完全损失。因此,虚拟化通过提供隔离来保持另一个系统不受影响。

好的,那我们为什么需要操作系统呢?好吧,操作系统和虚拟机管理程序都有不同的任务要处理:虚拟机管理程序处理如何分配资源(计算、网络等),而操作系统处理进程管理、文件系统、内存(嗯。我们还有一个虚拟内存。对吧?

我想我没有以微不足道的方式问过这个问题?但是我很困惑,所以也许我可以得到一点帮助来清除我的洞察力。

">

虚拟"大致意思是"看起来不一样的东西"。用一件事代替另一件事是计算中的常见任务。

"虚拟资源"是一种常见的方法。这也意味着系统中有一个实体,它透明地用另一部分资源替换一部分资源。内存是计算系统中最重要的资源之一,因此"虚拟内存"是历史上最早引入的术语之一。

但是,还有其他资源值得虚拟化。人们可以虚拟化寄存器,或者更具体地说,虚拟化它们的值。输入/输出设备、时间、处理器数量、网络连接 — 如今,所有这些资源都可以虚拟化(请参阅:英特尔 VT-d、虚拟时间论文、多核模拟器、虚拟交换机和网络适配器作为各自的示例)。这些东西的组合大致构成了"虚拟化技术"。这不是一个定义明确的术语,除非您谈论英特尔®虚拟化技术,这是一个供应商的商品名称。

从这个意义上说,虚拟机管理程序就是这样一个实体,它以透明的方式替换/管理选定的资源给其他受控实体,然后说这些资源驻留在"容器"、"监狱"、"虚拟机"中——存在不同的名称。

操作系统和虚拟机管理程序都有不同的任务要处理

事实上,他们没有。

  1. 操作系统只是普通用户应用程序的虚拟机管理程序,因为它在背后管理资源,并且对他们透明。资源是:虚拟内存,因为操作系统使每个应用程序似乎都有一个巨大的平面内存空间来满足自己的需求;虚拟时间,因为每个应用程序不管理上下文切换点;虚拟 I/O,因为每个应用程序都使用系统调用来访问设备,而不是直接写入其寄存器。

  2. 虚拟机管理程序是一种说"二级操作系统"的奇特方式,因为它虚拟化了操作系统可见的资源。资源本质上是相同的:内存、时间、I/O;一个新事物是系统寄存器。

  3. 它可以继续下去,即您可以拥有更高级别的虚拟机管理程序,为较低级别的实体虚拟化某些资源。对于英特尔系统,它大致对应于堆栈SMM -> VMM -> OS ->用户应用程序,其中SMM(系统管理模式)是最外层的虚拟机管理程序,用户应用程序是内部实体(实际上在运行您现在使用的Web浏览器和Web服务器方面非常有用)。

如果我们已经有一个操作系统来管理资源的共享方式,为什么我们需要一个虚拟化管理器(又名虚拟机管理程序)?

如果选择的计算机体系结构支持多个级别的间接资源管理(例如嵌套虚拟化),则不需要它。因此,这取决于所选的架构。在某些 IBM 系统(System/360,1960-1970 年)上,虚拟机管理程序的发明和使用比现代意义上的操作系统引入要早得多。更常见的基于 Intel x86 CPU(1975 年左右)的 IBM 个人计算机架构存在缺陷,如果不在架构中引入第二层抽象(虚拟机管理程序),则无法在多个操作系统之间实现所需的隔离级别(发生在 2005 年左右)。

最新更新