转载自:http://blog.csdn.net/winherry/archive/2005/04/07/339400.aspx
----------------------------------------------------------------------------------------------------------------------------------------------
OSI虚拟机模型
“虚拟”就是在暗示某时某地,虽然一个对象或者设备并不存在,但人们可以看到它
|
“虚拟机”这个词容易让许多人产生丰富的联想。流行媒体和新闻广播在报道关于计算机模拟和计算机游戏的新发展时,通常会用到“虚拟”这个词。在任何一种情况下,使用“虚拟”就是在暗示某时某地,虽然一个物体或者设备并不存在,但人们可以看到它。虚拟的这一用法是关于扩展虚拟机发展的合理假设。扩展虚拟机的创建和继续发展是计算机操作系统在能力和灵活性上的双重逻辑提高。
系统是如何控制它的。现代操作系统由一系列的指令集组成,指令集结合在一起组成服务例程。服务例程和数据结合在一起,成为提交给计算机的应用程序。把指令组合成一个服务例程,就好比办公室职员将简单的动作组合起来,完成一个更复杂的任务(比如办公室供应目录)一样。例如,文员只有一个可以在内存执行的有限指令集。这些指令仅限于计算,记录前一操作的结果,以及将某种信息存档以备后用。单独使用这些指令并没有多大的价值,但是这些指令可以被组合成一个序列,使得文员完成一个办公室供应目录。这个指令序列可能会是:数出记录纸的数量,记录结果,数出铅笔的数量,记录结果,数出纸夹的数量,记录结果,存档保存。这个序列可以被反复使用,来完成目录服务请求。使用“数出记录纸的数量”这样的指令,是假设办公室文员具有像识别出记录纸和精确计数这样的本能。对于人类来讲,识别物体和计数是文员大脑和眼睛的自然功能。而对于模拟的办公室文员或者计算机,这些功能需要在硬件级别设计并在电路系统中体现。当详细考察办公室文员的动作时,很显然需要在电路系统中实现一些经常使用的基本功能,而不是组合较简单的指令。办公室文员必须亲自在办公室走来走去,检查物体,用记事本和铅笔记录计数结果等等。这些功能将被当作一系列重复的硬件动作和软件指令来实现。例如,“记录最后一次结果”这条指令将包括以下操作:访问一个存储部件(如磁盘存储器),定位存储数据的空间,在本地寄存器中获得要记录的数据,传输数据,以及将数据写入硬盘。在电路层,有一个基本层,所有指令都是从这个层面上衍生而来。
最底层的指令是那些提交给计算机的零一代码。它们生成移动数据,配置系统或者为下一个动作创建条件的操作。这个级别可以被认为是机器指令级别,操作系统级别的指令就是从这个级别上衍生出来的。现在,我们都清楚地知道任何指令集都是它下一层指令集的简单组合。办公室文员所要完成的任务,实际上是一系列子任务。这些子任务被组合在一起,形成一个更复杂的操作序列。当“目录”命令下达给办公室文员时,观察者只能知道目录这个词的含义和办公室文员的整体动作。底层的指令子集对于观察者来说是不可见的。每个连续的指令层,包括机器电路,机器代码,操作系统指令和应用程序代码,都对它的下一层用户隐藏底层指令。组合指令和构建更复杂操作的能力,是理解扩展虚拟机的关键。
扩展虚拟机的最终目标是建立计算机中并不存在的能力和模拟设备。例如,大部分计算机都有一个硬盘来存储数据和程序指令。这个硬盘可能实际上在其它计算机上,或者由计算机上的多个设备组成的。在这种情况下,扩展虚拟机方法就是编写一个指令序列,使用户觉得计算机上只有一个硬盘驱动器。模拟出来的这个单一驱动器,它的存储能力和所有计算机上的硬件驱动器的存储能力相同。通过计算机,用户只能看到一个硬件驱动器。用户只要使用组合而成的指令,就可以像在一个大的硬件驱动器上存储和获取数据一样。用户调用的指令访问由底层指令组合而成的子例程。子例程中的底层指令处理什么样的信息存储在哪个硬盘上这样的细节。