计算机操作系统论文—微内核操作系统

系别:信息技术学院

专业:计算机应用技术

姓名:丁^^

日期:2012年5月7日

计算机操作系统论文—微内核操作系统引言:操作系统(Operating System,简称OS)是计算机系统的重要组成部分,是一个很重要的系统软件,它负责管理计算机系统的软硬件资源和整个计算机的工作流程,协调系统部件之间、系统与用户之间、用户与用户之间的关系。但是,随着操作系统的新技术不断出现功能不断增加,有很多网络攻击方法都是从寻找操作系统的缺陷入手的,互联网上传统Unix操作系统就具有先天的安全隐患,于是产生很多修补手段来解决它上面的安全问题。但是由于Unix 本身结构的原因,在很多修补方案下,仍然存在系统隐患。

本文介绍了一些关于微内核的相关知识,可以有助于从根本上解决操作系统终端的安全问题。

关键词:操作系统微内核安全性

一、相关概念

内核是操作系统的核心代码,且运行于内核模式下。

单内核(Monolithic kernel)是内核一种组织方法,内核的组织方法有两种:单内核和微内核。。

如果内核的所有模块都在同一进程中,就称为单内核;如果内核的模块在不同进程中,就称为微内核。

强内核其实是单内核的一种称法

单内核是一个很大的进程。它的内部又可以被分为若干模块(或者是层次或其它)。但是在运行的时候,它是一个独立的二进制大映象。其模块间的通讯是通过直接调用其它模块中的函数实现的,而不是消息传递。

二、微内核操作系统的基本概念

微内核操作系统(Microkernel Operating System)结构,是20世纪80年代后期发展起来的。现代操作系统设计中的一个突出思想是把操作系统中更多的成分和功能放到更高的层次(及用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,这种技术变成为微内核技术。

由于它能有效地支持多处理机运行,故非常适用于分布式系统环境。当前比较流行的、能支持多处理机运行的操作系统,几乎全部都采用了微内核结构,如卡耐基

梅隆大学研制的Mach OS,便属于微内核结构操作系统;又如当前广泛使用的Windows操作系统,也采用了微内核结构。

微内核包含的主要成分有:

1)中断和异常处理机制;2)进程间通信机制;

3)处理及调度机制;4)有关服务功能的基本机制。

我们也可以从下面四个方面,对微内核操作系统进行描述。

1) 足够小的内核

在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分,它通常用于:

①实现与硬件紧密相关的处理;②实现一些较基本的功能;

③负责客户和服务器之间的通信。

它们只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。

2) 基于客户/服务器模式

由于客户/服务器(Client/Server)模式,具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。

3) 应用“机制与策略分离”原理

在现代操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS 结构。所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在

OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。

4) 采用面向对象技术

操作系统是一个极其复杂的大型软件系统,我们不仅可以通过结构设计来分解操作系统的复杂度,还可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。

三、微内核的基本功能

1) 进程(线程)管理

大多数的微内核OS,对于进程管理功能的实现,都采用“机制与策略分离”的原理。例如,为实现进程(线程)调度功能,须在进程管理中设置一个或多个进程(线程)优先级队列;能将指定优先级进程(线程)从所在队列中取出,并将其投入执行。由于这一部分属于调度功能的机制部分,应将它放入微内核中。应如何确定每类用户(进程)的优先级,以及应如何修改它们的优先级等,都属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。

2) 低级存储器管理

通常在微内核中,只配置最基本的低级存储器管理机制。如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于机器的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法,采用何种内存分配与回收策略等,应将这部分放在微内核外的存储器管理服务器中去实现。

3) 中断和陷入处理

大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理。此时微内核的主要功能,是捕获所发生的中断和陷入事件,并进行相应的前期处理。如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息

后,把它发送给相关的服务器。由服务器根据中断或陷入的类型,调用相应的处理程序来进行后期处理。

在微内核OS中是将进程管理、存储器管理以及I/O管理这些功能一分为二,属于机制的很小一部分放入微内核中,另外绝大部分放在微内核外的各种服务器中来实现。事实上,其中大多数服务器都比微内核大。这进一步说明了为什么能在采用客户/服务器模式后,还能把微内核做得很小的原因。

四、操作系统采用微内核的优点

1、易于扩充

单块式和层次式操作系统, 增加新的功能十分费力,而且由于新功能的增加, 会使系统非常庞大和臃肿, 越来越难于使用。微内核操作系统的大部分功能都由核外的服务器提供, 因此在必要时可以增强已有服务器的功能或增加新的服务器, 在这种

情况下, 既能扩展OS的功能, 又不会使操作系统臃肿和难以使用。增加新的服务器和修改已有的服务器, 都不会触及微内核, 从而保证了系统的稳定性。

2、易于移植

基于微内核的操作系统, 由于与各种处理器相关的不同代码与微内核是相互隔离的, 因此对这种系统只需作少量的改变, 就可以把它从一种处理器移植到另一种处

理器上去运行。

3、提高系统的可靠性

在这种操作系统中, 每个服务器在分配给它的内存分区内以独立的进程方式运行, 因此它不会受到其它进程的影响;单个服务器出现

故障时也不会引起系统其它部分发生崩溃或出现各种错误。此外,由于服务器运行在用户态,它们不能直接访问硬件或修改内核的存储区,这也提高了系统的可靠性。

4、提供多种操作环境

Carnegie-Mellon大学开发的Mach操作系统, 通过把不同的API环境作为用户服务态进程, 实现了在同一操作系统中支持不同的、不相容的UNIX应用程序编程接口。Windows NT、Workplace OS等操作系统用同一方法实现了在其系统中提供多种不同操作系统环境的目标。

5、适宜于分布计算模式

当微内核从某个进程接收到信息, 或由自己直接处理, 或将此信息传送到另一进程。由于微内核无需知道此信息是来自本地进程还是远地进程, 因此这一信息传递方式为远程过程调用(RPC)提供了良好的基础。微内核的信息传递机制使得本地或远地服务对用户一目了然。

6、有助于多处理器系统的实现

共享内存多处理器系统, 在每个处理器上只需运行一个小小的微内核, 而无需运行整个操作系统。

7、支持实时任务

内核实时响应速度快,系统开销小。国际上以微内核为基础的实时OS的研究工作非常活跃,微内核OS已成为嵌入式控制系统的首选操作系统, 并在军事应用上有很大的潜力。客户/服务器模型的微内核操作系统的这些优点符合计算机系统的发展趋势, 能较好地满足用户的需求, 因此它代表了90年代操作系统的发展潮流。但是, 这种操作系统也还存在某些缺点。例如:信息传递不象传统OS的功能调用那样迅速。在客户需要调用服务器时, 就需要向它发送信息, 服务器收到信息后执行服务, 然后用信息的形式将得到的结果送回该客户。这种工作方式增加了许多开销, 使响应变慢。因此, 优化信息传递功能就成了基于客户/服务器模式的微内核操作系统取得成功的关键因素。

五、微内核操作系统存在的问题

应当指出,在微内核OS中,由于采用了非常小的内核,以及客户/服务器模式和消息传递机制,这些虽给微内核OS带来了许多优点,但由此也使微内核OS存在着潜在的缺点。其中最主要的是,较之早期OS,微内核OS的运行效率有所降低。

效率降低的最主要的原因是,在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。然而,在早期的OS 中,用户进程在请求取得OS服务时,一般只需进行两次上下文的切换:一次是在执行系统调用后,由用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。在微内核OS中,由于客户和服务器及服务器和服务器之间的通信,都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二

次是发生在由内核把客户的请求消息发往服务器时;第三次是当服务器完成客户请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。

实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求,而需要其它服务器的帮助时,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行八次上下文的切换。

在微内核中,大部分内核都作为独立的进程在特权状态下运行,它们通过消息传递进行通讯,在典型情况下,每个概念模块都有一个进程。因此,如果在设计中有一个系统调用模块,那么就必然有一个相应的进程来接收系统调用,并且能够执行系统调用的其他进程(或模块)通讯以完成所需任务。

在这些设计中,微内核部分经常只不过是一个消息转发站:当系统调用模块要给文件系统模块发送消息时,消息直接通过内核转发。这种方式有助于实现模块间的隔离。(某些时候,模块也可以直接给其它模块传递消息。)在一些微内核的设计中,更多的功能,如I/O等,也都被封装在内核中了。但是最根本的思想还是要保持微内核尽量小,这样只需把微内核本身进行移植就可以完成将整个内核移植到新的平台上。其他模块都只依赖于微内核或其他模块,并不直接依赖硬件。

微内核设计的一个优点是在不影响系统其他部分的情况下,用更高效的实现代替有文件系统模块的工作将会更容易,我们甚至可以在系统运行时将开发出的新系统模块或者需要替换现有模块的模块直接而且迅速的加入系统。另外一个优点是不需要的模块将不会被加载到内核中,因此微内核就可以更有效的利用内存。

单内核是一个很大的进程。它的内部又可以被分为若干模块(或者是层次或其他)。但是在运行的时候,它是一个独立的二进制大映像,其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。

单内核的支持者声称微内核的消息传递开销引起了效率的损失。微内核的支持者则认为因此而增加的内核设计的灵活性和可维护性可以弥补任何损失。

现代成功的CPU设计中包含了所有这两种技术,就像Linux内核是微内核和单一内核的混合产物一样,Linux内核基本上是单一的,但是它并不是一个纯粹的集成内核,内核模块习系统将微内核许多优点导入到Linux的单内核设计中,还有一种情况就是Linux的内核模块系统可以将系统内核转化成简单的不传递消息的微内核设计

中。

六、Linux操作系统

Linux操作系统大部分都是单内核的。一个方面是历史的原因:在Linux的观点看来,通过把内核以单一的方式进行组织并在最初始的空间中运行是相当容易的事情。这种决策避免了有关消息传递体系结构,计算模块装载方式等方面的相关工作。(内核模块系统在随后的几年中又进行了不断的改进。)

另外一个原因是充足的开发时间的结果。Linux既没有开发时间的限制,也没有深受市场压力的发行进度。所有的限制只有并不过分的对内核的修改与扩充。内核的单一设计在内部实现了充分的模块化,在这种条件下的修改或增加都并不怎么困难。而且问题还在于没有必要为了追求尚未正式的可维护性的微小增长而重写Linux 的内核。

如果Linux是纯属内核设计,那么向其他体系结构上的移植将会比较容易。实际上,有一些微内核,如Mach微内核,就已经成功的证明了这种可移植性的优点。实际的情况是,Linux内核的移植虽然不是很简单,但也绝对不是不可能的:大约的数字是,向一个全新的体系结构上的典型的移植工作需要三万到六万行代码,再加上不到两万行的驱动程序代码。(并不是所有的移植都需要新的驱动程序代码)粗略的计算一下,我估计一个典型的移植平均需要五万行代码。这对于一个程序员或者最多一个程序小组来说是力所能及的,可以在一年之内完成,虽然这比微内核的移植需要更多的代码,但是Linux的支持者将会提出,这样的Linux内核移植版本比微内核更能够有效的利用底层硬件,因而移植过程中的额外工作是能够从系统性的提高上得到补偿的。

这种特殊设计的权衡也不是很轻松就可以达到的,单内核的实现策略公然违背了传统的看法,后者认为微内核是未来发展的趋势。但是由于单一模式(大部分情况下)在Linux中运行状态良好,而且内核移植相对来说比较困难,但没有明显的阻碍程序员团体的工作,他们已经热情高涨的把内核成功的移植到了现存大部分实际系统中,更不用说类似掌上型电脑的一些看起来很不实际的目标了,只要Linux的众多特点仍然值得移植,新的移植版本就会不断涌现。

七、结束语

在过去的几十年里操作系统发生了革命性的变化:技术上的创新、用户体验上的升级、应用领域的扩展、功能的完善。同过去的几十年一样,在未来的20年操作系统也将发生巨大的变化。看到我们现在使用的操作系统已经很完善,相信以后的操作系统技术还会不断提高,会让大家用着更加方便。相信在未来操作系统会使得我们的生活和工作更加丰富多彩。

参考文献:

1、张顺香,等,《操作系统》,武汉大学出版社,2009

2、王育勤,等,《计算机操作系统》,北京交通大学出版社,2004

3、汤子瀛,等,《计算机操作系统》,西安电子科技大学出版社,2001

4、胡祖宣,等,《微内核操作系统》,华北计算技术研究所

相关文档
最新文档