IBM虚拟机模型
在IBM模型中,每个虚拟机都是真正机器的完整拷贝,只是内存少了点。
IBM(International Business Machines)版的虚拟机是现在仍然在使用的主流虚拟机之一。在IBM模型中,每一个虚拟机都是一台真正机器的完整拷贝,只是内存少了点。根据这一概念,一个功能强大的大型主机可以被分割成许多虚拟机。这些虚拟机仅比原来的主机少一点资源而已。
IBM的虚拟机版本和其他虚拟机流派类似,因为它也是提供功能映射的服务。这意味着虚拟机负责解释虚拟指令,并把它们映射为实际的机器指令。对于IBM流派的虚拟机而言,这种指令的映射基本上是一种一一映射。这意味着一条虚拟指令仅仅与一条实际指令对应,并完成一条实际指令的工作。从本质上讲,用户实际上就是在访问并执行机器的指令。
现在,你可能感到很疑惑:如果IBM VM操作系统实际上是把实际机器的所有功能都给了用户,那么它如何保证安全性呢?安全性也是通过映射来实现的。只要阻止或限制一个认为敏感的特定指令集就可以了,例如那些试图访问处理器存储器(寄存器)的指令。如果允许访问这类指令,就等于允许用户直接修改实际的机器,从而改变其它正在运行的虚拟机。如果这种情况允许发生,那么每个用户的虚拟机就不是完全无关的了,并可能因此破坏其他用户的环境。
本质上讲,IBM VM系统直接执行所有非敏感指令,同时截获敏感指令。当机器截获这些敏感指令以后,它会试着模拟出预期的操作,以使用户不会察觉他们试图进行一次非法操作。如果可能的话,VM系统为敏感指令提供一种虚拟执行,从而为用户提供所有他们希望的功能,而同时还要维护OS/370硬件的系统完整性。所有这些功能都由运行在硬件上的虚拟操作系统提供。
它是如何工作的?
因此,IBM虚拟机系统不仅允许共享资源,而且保护了系统资源。
虚拟机操作系统是整个IBM虚拟机体系结构的“大脑”。包括操作系统和硬件在内的整个系统被称作虚拟机系统(VM System)。每个虚拟机系统都被一个叫做控制程序的程序控制。控制程序除了管理实际的物理硬件,还要为每个系统用户创建一个虚拟机,这种虚拟机是370系统或390系统的全真模拟。IBM虚拟机概念的重点在于:每个用户都可以在他们的虚拟机上运行程序,存储数据,甚至使虚拟机崩溃,这不会影响虚拟机系统本身和其他的系统用户。所以,IBM虚拟机模型不仅允许资源共享,而且实现了系统资源的保护。
控制程序实际实际上直接运行在主机硬件上,是虚拟机系统中最重要的一部分。控制程序要管理系统硬件,包括启动和关机在内的系统支持任务,以及请求的排队和执行。同时控制程序还要管理每个虚拟机的编程特征和每个虚拟机的建立和维护。
除了控制程序以外,另一个和虚拟机系统用户交互的重要组件就是会话监视系统(Conversational Monitor System,CMS)。这个称呼听起来有点复杂,但CMS只提供用户需要的操作系统的基本任务。其中包括文件系统命令,程序加载和执行功能,内存管理,屏幕和窗口服务以及允许用户书写申请的服务。CMS是一种单用户单任务的操作系统。尽管系统有能力在同一时间处理多个任务,但起初它被用做单任务系统。每个虚拟机都有它自己的CMS拷贝,从而使所有用户拥有同样的接口和功能。
IBM虚拟机系统的指令集实际上是一种一一对应
除了CMS以外,VM系统体系还有一些其他的组成部分,包括组控制系统(Group Control System),透明的系统访问工具(Transparent System Access Facility),一些附加的服务,以及倾印视图工具(Dump Viewing Facility)。我知道你可能正在想所有这些罗嗦的官方名词究竟是什么意思。老实说,上面提到的那些东西对于大体理解IBM虚拟机系统并不重要。所以,我们将会集中精力来讨论控制程序和会话监视系统是如何来映射指令的。
正如在综述中提到的那样,指令集实际上是一一映射的。基于速度和便利性的考虑,370系统和390系统上的大部分指令都是由系统直接运行的。这意味着CMS使得用户在没有速度损失的情况下运行指令并获得他们所希望的功能。现在我最想说的是一个小的指令子集,VM系统认为这个指令子集是敏感的。
一条敏感的指令实际上指的就是一条这样的指令:它允许用户改变另外一个用户虚拟机的状态,改变系统硬件状态,以及其他一些敏感或者受保护的函数。为了说明这个问题,现在让我们看一个例子:
比如说一个用户试图执行一条可以访问其他用户虚拟机和资源的指令。这条指令将会被CMS截获,并标记为敏感指令。这意味着CMS将把这条指令当作一条受保护的指令,然后在将这条指令传递给控制程序的时候加上一个特殊的标志,这个标志将告诉控制程序:“这是一条受保护的指令。”计算机术语管这叫做中断,但这对本文并不重要。
控制程序接收带有标志的指令,这个标志告诉控制程序,这是一条敏感的指令。然后控制程序对这条指令执行一些特定的例程或检查,以决定如何来处理它。这些例程可以告诉控制程序是否需要模拟这条指令的执行,或者是否完全阻止这条指令的执行。如果控制程序模拟这条指令,用户将永远不会知道他们刚刚试图去执行一条敏感的指令,他们的系统也会象没什么特殊事情发生一样而继续执行。如果控制程序必须阻止这条指令的执行,那么它会给用户返回一条消息,告诉他们发生了错误。用户程序很可能因此而停止执行。
小结
阅读完以上几段以后,你现在已经对什么是IBM虚拟机模型和IBM虚拟机如何工作有了基本的了解。这很好,但是我敢打赌,你一定在想这个模型真的能够工作吗?它真的像宣传的那样工作吗?我曾经用过这个系统,老实说,它确实能够工作。
IBM虚拟机系统提供了一种安全环境下,多用户共享大型系统的途径。
IBM虚拟机系统提供了一种安全环境下多用户共享大型系统的途径。通过为每个用户创建一个真实机器的拷贝,IBM系统允许每个用户获得同样的功能和资源,而不会危及任何用户的封装性和安全性。经过将近三十年的发展,这个系统已经足够的稳定。这使得它作为一个资源共享系统在企业和大学里得到广泛的应用。