操作系统实验报告
实验目的:
随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。计算机操作系统体系结构一、模块组合结构 操作系统刚开始发展时是以建立一个简单的小系统为目标来实现的,但是为了满足其他需求又陆续加入一些新的功能,其结构渐渐变得复杂而无法掌握。以前我们使用的MS-DOS就是这种结构最典型的例子。这种操作系统是一个有多种功能的系统程序,也可以看成是一个大的可执行体,即整个操作系统是一些过程的集合。系统中的每一个过程模块根据它们要完成的功能进行划分,然后按照一定的结构方式组合起来,协同完成整个系统的功能。如图1所示: 在模块组合结构中,没有一致的系统调用界面,模块之间通过对外提供的接口传递信息,模块内部实现隐藏的程序单元,使其对其它过程模块来说是透明的。但是,随着功能的增加,模块组合结构变得越来越复杂而难以控制,模块间不加控制地相互调用和转移,以及信息传递方式的随意性,使系统存在一定隐患。 二、层次结构 为了弥补模块组合结构中模块间调用存在的固有不足之处,就必须减少模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。从这一点出发,层次结构的设计采用了高层建筑结构的理念,将操作系统或软件系统中的全部构成模块进行分类:将基础的模块放在基层(或称底层、一层),在此基础上,再将某些模块放在二层,二层的模块在基础模块提供的环境中工作;它只能调用基层的模块为其工作,反之不行。严格的层次结构,第N+l层只能在N层模块提供的基础上建立,只能在N层提供的环境中工作,也只能向N层的模块发调用请求。 在采用层次结构的操作系统中,各个模块都有相对固定的位置、相对固定的层次。处在同一层次的各模块,其相对位置的概念可以不非常明确。处于不同层次的各模块,一般而言,不可以互相交换位置,只存在单向调用和单向依赖。Unix/Linux系统采用的就是这种体系结构。 在层次结构中,强调的是系统中各组成部分所处的位置,但是想要让系统正常运作,不得不协调两种关系,即依赖关系和调用关系。 依赖关系是指处于上层(或外层)的软件成分依赖下层软件的存在、依赖下层软件的运行而运行。例如,浏览器这部分软件就依赖GUI的存在和运行,GUI又依赖操作系统的存在和运行。在操作系统内部,外围部分依赖内核的存在而存在,依赖内核的运行而运行,内核又依赖HAL而运行。处在同层之内的软件成分可以是相对独立的,相互之间一般不存在相互依赖关系。 三、虚拟机结构 虚拟机的基本思想是系统能提供两个功能:多道程序处理能力;提供一个比裸机有更方便扩展界面的计算机。操作系统是覆盖在硬件裸机上的一层软件,它通过系统调用向位于它之上的用户应用程序服务。从应用程序的角度看来,操作系统像是一台“计算书”,只不过它的功能比硬件裸机更强,它的指令系统是系统调用集而己。因此,从概念上来讲,操作系统是“虚拟机”。这是“虚拟机”概念的来源。利用CPU调度以及虚拟内存技术,操作系统可以给运行于系统中的进程以假象:好像进程拥有自己的CPU和存储器,如同系统中只有一个进程,系统所有资源都为它服务。从这个角度来讲,操作系统为每一个进程创建了一个使该进程独立运行于其中的“虚拟机”,在这个“虚拟机”中,进程拥有自己的“CPU”和“存储器”,同时进程还得到了硬件所无法提供的文件系统功能。虚拟机操作系统就是根据这一想法而产生的。 虚拟机操作系统不提供传统操作系统中的文件系统的功能。最初的虚拟机仅仅为进程提供一个访问底层的接口,它通过对硬件的复用提供给每一个进程以硬件的一个拷贝,因此能够直接的运行在硬件上的程序都可以直接运行在虚拟机之上。后来出现了另外三种体系结构的虚拟机:由机器虚拟指令映射构成的虚拟机虚拟机操作系统并没有提供一个供应用程序直接运行的现成环境,它仅仅是对硬件进行(分时)复用从而得到硬件的多个拷贝,应用程序不可以直接运行在硬件之上,因此它也无法运行在虚拟机操作系统之上。通常的情况是,普通的操作运行在虚拟机之上。而应用程序运行在各自的操作系统之上,由于虚拟机操作系统是通过(分时)复用硬件资源同时提供多台虚拟机,因此同时可以有多个不同的操作系统运行在同一物理硬件机器之上,因此可以有多个不同操作系统的应用程序可以同时运行在同一台物理硬件机器之上。 虽然虚拟机操作系统有着诱人的特性,但是最突出的一个问题是实现比较困难。如果要实现的是底层硬件的完全拷贝,也即它要模拟硬件几乎所有的特性,那将是相当困难的一件事情。因此现代许多商业虚拟机采用映射部分指令结合直接调用宿主操作系统功能的方法,但这样必然会导致虚拟机性能的损失,所以