基于灵活内核的构件化驱动程序

基于灵活内核的构件化驱动程序,第1张

基于灵活内核的构件化驱动程序,第2张

1 操作系统体系结构的争论
一般而言操作系统提供两种功能 [2] :⒈有系统地在互相竞争的进程之间分配计算机资源;⒉作为计算机的扩展,提供功能强大的编程环境和应用环境。由于计算机硬件的快速发展和用户要求的提高,操作系统的复杂性与日俱增,系统的体系结构对系统性能的影响也越来越明显。
关于操作系统体系结构的讨论一直没有停息过,大多数的操作系统采用两种体系结构之一:一个是整体内核 (Monolithic kernel or Macro-kernel) 操作系统,另一个是微内核 (Micro-kernel) 操作系统。

1.1 整体内核操作系统
整体内核操作系统有如下特征:操作系统功能定义模块,系统服务和驱动程序都在内核空间,分别定义成不同的功能模块;任何模块可以遵循特定的接口规范来调用其它模块;所有模块必须连接在一起,形成一个可执行文件,使用时整个文件都应完整装载到计算机的内存中;所有模块都运行于超级用户的模式下,可直接取用计算机的硬件资源;应用程序若要取用这种资源,如扫描仪,它需要执行系统调用,请求一个系统模块帮它获取相应的资源。这里的系统调用实际上是这样做的:首先将计算机切换到超级用户模式,然后进入操作系统的某个模块。传统的操作系统都是整体内核的,例如 Microsoft DOS , Linux , Unix , Windows95 等。

1.2 微内核操作系统 [5]
微内核是从功能上说,它由操作系统最基础的抽象模块构成的,整体内核系统中包含的许多系统服务以及驱动程序都被放在了核外,核内一般只包括进程管理、 I/O 处理、内存管理、进程间通讯等。 MACH 是非常典型的微内核系统, MACH 的核内包括的抽象功能模块有任务,线程,内存对象,消息和端口,它们提供了管理和处理虚拟内存,调度和进程间通信的机制。模块化的特点使 MACH 拥有可裁剪性,可扩展性,可移植性等良好特性,而这些特性是整体内核操作系统很难具备的。除了 MACH 之外,微内核操作系统还有 QNX 、 MINIX 、 CHORUS 、 AMORBA 等。
2 微内核系统和整体内核系统的比较

简而言之,微内核将操作系统的许多服务移到了用户空间,而传统的操作系统通常是将其放在核内的,这对系统的性能产生了显著的影响。微内核系统和整体内核系统比较具有以下优点:

鲁棒性 (Robustness) 微内核系统将许多系统服务放到用户空间,由于这些服务程序是运行在完全独立的内存空间中 ( 当然这里不包括内核级的服务程序 ) ,程序本身存在的 BUG 和不可预知的错误就不会那么容易导致内核的崩溃。

安全性 (Security) 微内核系统的许多模块独立地运行于核外,因此可以以模块为单位把安全问题分解,使得系统服务程序严格按照安全要求运行,而不是“随心所欲”。

可配置性 (Configurability) 一般微内核系统中的服务程序可以在整个系统不重新启动的情况下被更换,这一点对于整体内核的操作系统是难以实现的。

易于编程 内核中的代码通常需要使用特殊的内存分配和输入输出等例行程序,用户态的代码要比核态的代码容易编写,它无须去考虑内核特定的一些限制。

降低内存的固定使用量 分配给内核的内存 ( 代码和数据 ) 一般地说必须驻留在内存中,不允许被交换出内存。被移到用户空间的核态代码越多,内核常驻内存的程序量就越少,移到核外的系统服务程序只有在被用到时才会装入内存。

实时性能 系统运行于核态时,为了防止打断一些临界处理,会暂时禁止中断。内核中的代码越少,禁止中断的机会就越少。
可扩展性 (extensibility) 在微内核系统中添加系统模块就像编写用户程序一样简单,只要它遵从系统提供的设计接口,而整体内核系统添加模块首先需要你对操作系统内部工作机制有一定的了解,在编写好模块程序之后,还需要重新编译内核,以便把添加的模块连接到内核中去。
前面提到的都是微内核系统的进步之处,当然微内核系统也并非完美无缺,微内核系统和整体内核系统相比也有不足之处:

微内核规模并不小 大多数微内核系统的内核规模并不小,尽管“微内核”的名字让人产生这种错觉。 QNX 操作系统是一个例外,如果内核做得很大相应系统的 RAM 使用量就会有所增长;

效率的缺失 将许多系统的服务置于核外,就需要给这些服务程序之间提供相应形式化的消息传递机制 (Message Passing Interface or Remote Procedure Call) 。在整体内核操作系统中,不同的系统服务模块总是通过系统内存来互相传递信息,而微内核结构中就只有用正式的机制,这样会导致性能的降低,在 Linus 和 Tanenbaum 的有名的那场关于微内核与整体内核的争论 [3] 了这个问题;

出现的新问题 系统的部件之间会出现一些新类型的死锁或其他的条件错误,而这些在整体内核的系统中是不会出现的。

3 研究现状
由于操作系统体系结构争论的广泛性,大多数从事操作系统研究和实现的学者们都意识到无论整体内核还是微内核结构都不是尽善尽美的。这场争论带来的另一积极后果是,双方的支持者都试图有所改变,以弥补自身系统存在的缺陷。

一直以来,微内核结构的支持者对整体内核系统的可移植性都存在质疑,整体内核的操作系统也尽量使其内核模块化,减少模块之间的依赖性,这样就提高了系统的可维护性和系统的可移植性。

整体内核的支持者对微内核结构最有力的反击往往是效率问题,的确由于微内核系统将很多系统服务放在核外,系统的效率难免会受影响。因此最近几年微内核的支持者忙于研究如何提高系统的效率,一种途径是寻找更优的进程间通讯机制,以便从根本上提高效率,另一种结果是一些微内核系统把有的系统服务又重新置于内核之中,这从某种程度上确实提高了效率,但是其代价是一定程度上违背了微内核的初衷。

近几年由于嵌入式系统的飞快发展,微内核操作系统的研究又成为热点,这主要是因为嵌入式系统资源有限,而整体内核系统的内核一般都要占据很大的内存空间,这是嵌入式系统无法容忍的。嵌入式系统看好微内核的另一重要原因是鲁棒性和可动态配置,因为许多嵌入式系统应用是用于控制系统,控制失灵往往会造成难以估计的灾难。微内核的缺点在嵌入式系统的应用中仍然非常突出,嵌入式系统通常都要求较高的效率。

从上面的论述中可以看出,微内核和整体内核的争论问题,最后归结为稳定性和效率的选择问题。迄今为止,仍没有很完美的解决方案,一般是根据问题的重点决定采用某种方案。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 基于灵活内核的构件化驱动程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情