嵌入式实时操作系统的可裁剪性及其实现

时间:2023-02-13 19:53:15

本文转自:http://news.fuwuqi.com.cn/electron/eeyy/2009-09-12/5271676314876.shtml

但文章最后增加了一些注释,因此作为原创处理:-)


由于宿主对象的多样性,为适应不同的要求,无论在硬件方面还是在软件方面,嵌入式系统必须具有很强的可裁剪性,并且便于修改。

  所谓操作系统的可裁剪性,就是一个规模大且功能齐全的操作系统,在结构上保证了用户可在其中有选择地保留某些模块,而删减掉一些模块的性能。目标系统设计者的这个做法,也常常叫做对操作系统进行配置。因此,操作系统的可裁剪性也常被叫做操作系统的可配置性。

  所谓的配置方法有两种:工种是在系统进行编译连接时进行配置;另一种是在系统运行时进行配置。

  在编译连接时的配置方法一般都是通过条件编译来实现的,即在操作系统中都有一个配置文件,在这个文件中系统的设计者可通过对一些配置常数的设置来选择使用或不使用的模块。于是,在对系统编译连接时,编译系统就会按配置常数的设置值对与之对应的模块进行编译或不编译。于是,那些不被编译的模块就自然地不包含在系统中而被删掉了,这样就可以大大减小系统所占用的内存。所以,条件编译是实现系统裁剪的有效手段。但这需要一个前提条件,即用户要获得待裁剪的操作系统的源代码。

  在运行时对系统进行配置,是依靠系统在初始化运行阶段执行一些条件转移语句来实现的。只不过这些条件语句是根据事先由目标系统开发人员编写的配置文件中的一些参数来跳转的。所以,也实现了系统功能上的裁剪,但不是物理上的裁剪。也就是说,被裁剪的模块的代码仍然还存在,只不过未被执行。所以,这种方法不能减少系统所占用的内存,只是使运行速度有某种程度的提高。但这种裁剪方法的优点是,目标系统开发人员可以没有源代码,并且操作起来很方便,因此是商品软件经常采用的方法。

  当然,由于目标系统的多样性,尤其是在对产品个性化要求极高的今天,致使在设计中经常出现单纯依靠裁剪已经不可能获得一个满意的操作系统的情况。那么在这个时候,唯一的解决办法是修改或者添加功能模块。根据前面的内容,显然在一个具有微内核的操作系统上修改或添加是最方便的。这也是嵌人式操作系统大多都采用微内核结构的一个重要原因。


笔者注:

1、认同本文的主体观点,但是除此之外,还有其它的操作系统裁剪方式可供选择,比如一些非核心模块的动态加载和卸载等;

2、对于“嵌入式操作系统大多都选择微内核”的说法,我不认同。微内核OS有其优势,但这些优势在理论上论证可能会更好一些,在实际实现上,宏内核还是普遍的选择,且大部分嵌入式OS都是基于宏内核的。