计算机操作系统体系结构实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告

实验目的:

随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构、层次结构、虚拟机结构和微内核结构。为了更好的了解计算机操作系统体系结构,以及linux的体系结构,特作此报告。

实验内容:

计算机操作系统体系结构

一、模块组合结构

操作系统刚开始发展时是以建立一个简单的小系统为目标来实现的,但是为了满足其他需求又陆续加入一些新的功能,其结构渐渐变得复杂而无法掌握。以前我们使用的MS-DOS就是这种结构最典型的例子。这种操作系统是一个有多种功能的系统程序,也可以看成是一个大的可执行体,即整个操作系统是一些过程的集合。系统中的每一个过程模块根据它们要完成的功能进行划分,然后按照一定的结构方式组合起来,协同完成整个系统的功能。如图1所示: 在模块组合结构中,没有一致的系统调用界面,模块之间通过对外提供的接口传递信息,模块内部实现隐藏的程序单元,使其对其它过程模块来说是透明的。但是,随着功能的增加,模块组合结构变得越来越复杂而难以控制,模块间不加控制地相互调用和转移,以及信息传递方式的随意性,使系统存在一定隐患。二、层次结构

为了弥补模块组合结构中模块间调用存在的固有不足之处,就必须减少模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。从这一点出发,层次结构的设计采用了高层建筑结构的理念,将操作系统或软件系统中的全部构成模块进行分类:将基础的模块放在基层(或称底层、一层),在此基础上,再将某些模块放在二层,二层的模块在基础模块提供的环境中工作;它只能调用基层的模块为其工作,反之不行。严格的层次结构,第N+l层只能在N 层模块提供的基础上建立,只能在N层提供的环境中工作,也只能向N层的模块发调用请求。

在采用层次结构的操作系统中,各个模块都有相对固定的位置、相对固定的层次。处在同一层次的各模块,其相对位置的概念可以不非常明确。处于不同层次的各模块,一般而言,不可以互相交换位置,只存在单向调用和单向依赖。Unix/Linux系统采用的就是这种体系结构。

在层次结构中,强调的是系统中各组成部分所处的位置,但是想要让系统正常运作,不得不协调两种关系,即依赖关系和调用关系。

依赖关系是指处于上层(或外层)的软件成分依赖下层软件的存在、依赖下层软件的运行而运行。例如,浏览器这部分软件就依赖GUI的存在和运行,GUI又依赖操作系统的存在和运行。在操作系统内部,外围部分依赖内核的存在而存在,依赖内核的运行而运行,内核又依赖HAL而运行。处在同层之内的软件成分可以

是相对独立的,相互之间一般不存在相互依赖关系。

三、虚拟机结构

虚拟机的基本思想是系统能提供两个功能:①多道程序处理能力;②提供一个比裸机有更方便扩展界面的计算机。操作系统是覆盖在硬件裸机上的一层软件,它通过系统调用向位于它之上的用户应用程序服务。从应用程序的角度看来,操作系统像是一台“计算书”,只不过它的功能比硬件裸机更强,它的指令系统是系统调用集而己。因此,从概念上来讲,操作系统是“虚拟机”。这是“虚拟机”概念的来源。利用CPU调度以及虚拟内存技术,操作系统可以给运行于系统中的进程以假象:好像进程拥有自己的CPU和存储器,如同系统中只有一个进程,系统所有资源都为它服务。从这个角度来讲,操作系统为每一个进程创建了一个使该进程独立运行于其中的“虚拟机”,在这个“虚拟机”中,进程拥有自己的“CPU”和“存储器”,同时进程还得到了硬件所无法提供的文件系统功能。虚拟机操作系统就是根据这一想法而产生的。

虚拟机操作系统不提供传统操作系统中的文件系统的功能。最初的虚拟机仅仅为进程提供一个访问底层的接口,它通过对硬件的复用提供给每一个进程以硬件的一个拷贝,因此能够直接的运行在硬件上的程序都可以直接运行在虚拟机之上。后来出现了另外三种体系结构的虚拟机:由机器虚拟指令映射构成的虚拟机。虚拟机操作系统并没有提供一个供应用程序直接运行的现成环境,它仅仅是对硬件进行(分时)复用从而得到硬件的多个拷贝,应用程序不可以直接运行在硬件之上,因此它也无法运行在虚拟机操作系统之上。通常的情况是,普通的操作运行在虚拟机之上。而应用程序运行在各自的操作系统之上,由于虚拟机操作系统是通过(分时)复用硬件资源同时提供多台虚拟机,因此同时可以有多个不同的操作系统运行在同一物理硬件机器之上,因此可以有多个不同操作系统的应用程序可以同时运行在同一台物理硬件机器之上。

虽然虚拟机操作系统有着诱人的特性,但是最突出的一个问题是实现比较困难。如果要实现的是底层硬件的完全拷贝,也即它要模拟硬件几乎所有的特性,那将是相当困难的一件事情。因此现代许多商业虚拟机采用映射部分指令结合直接调用宿主操作系统功能的方法,但这样必然会导致虚拟机性能的损失,所以虚拟机操作系统在业界是属于非主流的,但是在学术界有着重要意义,因为它是研究操作系统技术的理想平台。

四、微内核结构

操作系统研究领域最近十几年突出的成就应该是微内核技术。微内核的研究动机是为克服已有的操作系统内核由于功能的增加而逐渐变大的缺点。图3所示:

微内核体系结构的基本思想是把操作系统中与硬件直接相关的部分抽取出来作为一个公共层,称之为硬件抽象层(HAL)。这个硬件抽象层其实就是一种虚拟机,它向所有基于该层的其它层通过API接口提供一系列标准服务。在微内核中只保留了处理机调度、存储管理和消息通讯等少数几个组成部分,将传统操作系统内核中的一些组成部分放到内核之外来实现。如传统操作系统中的文件管理系统、进程管理、设备管理、虚拟内存和网络等内核功能都放在内核外作为一个独立的子系统来实现。因此,操作系统的大部分代码只要在一种统一的硬件体系结构上进行设计就可以了。

微内核体系结构的主要特点有:①内核非常小。②许多操作系统服务不属于内核,而是运行在内核之上的,这样,当高层模块更新时内核无须重新编译。③有一个硬件抽象层,内核能方便地移植到其它的硬件体系结构中。因为当需要移植到新的软件或硬件环境中时,只需对与硬件相关的部分稍加修改即可把微内核嵌入到新的硬件环境中,在多数情况下并不需要移植外部服务器或客户应用。④灵活性和扩展性.微内核最大的优点之一就是它的灵活性和扩展性。如果要实现另一个视图,可以增加一个外部服务器。若要想扩展功能,可以增加和扩展内部服务器。

微内核思想虽然是一种非常理想的,理论上具有明显先进性的操作系统设计思想,但是现代微内核结构操作系统还存在着许多问题,现代微内核操作系统结构和性能还不够理想。在市场和应用领域,微内核的应用在近几年逐渐广泛,很多过程控制计算机不以通用计算机的面貌出现,只是完成特定的专用功能,常常采用微内核结构。

Linux 体系结构

随着操作系统的不断发展,其内核的设计也有了新的变化,因此,传统的UNIX 也出现了很多不同的实现版本,其中,Linux 就是其中一个具有很好的代表性以及广阔的发展前景的开放源码的操作系统,其内核结构如图 2 所示,Linux 与大部分UNIX一样仍然采用单内核体系结构,即它是由几个逻辑功能上不同的部分组合而成的大程序,与UNIX 不同之处在于它使用“模块”来弥补纯粹的单一内核的缺点,即采用模块实现机制。这种机制进一步精简内核,内核只包括同步原语、简单的进程调度及进程间通信机制等功能,而将文件系统,设备驱动程序等属于内核上层的功能用模块加以实现。在此,模块是在运行时能够被动态链接到内核的目标文件,当然,它也可从内核中动态地移出,一旦对系统进行修改或扩充,无须重新编译整个内核,只需对模块进行修改或添加。与Windows 2000 采用的微内核体系结构不同之处在于,这些模块不是作为独立的进程在用户态下运行,而是与其他静态链接到内核的功能一样在核心态下运行,这样,就可以无须花费在微内核体系结构中所需的消息传递的时间及相应的系统开销,避免了由于缩小内核而带来的性能损失。既然模块与内核一样都运行在核心态下,那么,哪些功能放在内核实现,哪些又放在模块中实现呢?在Linux 系统中,重要的功能如进程管理、内存管理等都放在内核加以实现;而如各种驱动程序、文件系统等则用模块加以实现。当然,模块机制的引入也会带来一些问题。首先,运行在核心态的内核是不会换出的,所以链接进内核的模块就会占用一定的内存和花费一定的系统开销;其次,由于链接入内核的模块可以访问内核的所有资源,并且该模块有可能请求其他模块的功能,这样,内核就必须维护符号表及模块之间的依赖性;最后,链入内核的模块也会成为内核的一部分,也可以对内核进行修改,因此,使用不当会导致系统瘫痪。

Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

1.

进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的

进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了

相关文档
最新文档