图1
[color="#cccccc"]
OS Portal的结构通常,内核动态加载模块的时候,模块的连接工作由内核完成。Chang DaWei的方法的独特之处在于把模块连接的工作交给服务器端执行,不但降低了对内存空间的需求,也减轻了内核的负担。
[color="#cccccc"]2、其他相关研究
[color="#cccccc"] (1) 基于FPGA的可动态配置的片上系统
FPGA (Field
Programmable Gate
Array,现场可编程门阵列)是电子设计领域中最具活力和发展前途的一项技术。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电
路,都可以用它来实现。FPGA在嵌入式系统中的应用越来越广泛。John Williams和Neil
Bergmann[6]用uCLinux作为操作系统平台,设计出可动态配置的片上系统(rSoC)。uCLinux从远程服务器上下载FPGA程序
代码,然后利用shell脚本工具将代码写进FPGA芯片,实现系统功能的可动态扩展。
[color="#cccccc"] (2) 动态更新Linux内核变量的方法
在进行Linux内核嵌入式开发时,
经常使用内核启动过程中读取静态配置文件内容的方法对内核某些变量进行初始化。当静态配置文件改动时,只有重新启动内核才能使新的配置生效。北京科技大学
的田玉凤等人[7]通过修改文件./include/linux/proc_fs.h,重新编译、安装新内核后,利用/proc文件系统,可动态改变
Linux内核变量。
[color="#cccccc"] (3) 在用户空间扩展Linux操作系统功能的方法
与内核空间功能扩展相比,在用户空间
扩展安全性更强,对Linux操作系统和应用程序更加透明。魏东林、卢正鼎等人通过在用户空间跟踪截获系统调用并更改系统调用的行为来达到扩展操作系统功
能的目的[8]。从本质上来说,该方法和本文第1部分提到的可扩展内核技术是一样的。
[color="#cccccc"] 3、动态扩展技术面临的挑战和发展趋势
[color="#cccccc"] (1) 高实时性是嵌入式系统的基本要求
由于Linux是一种通用操作系统,
而不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性(2003年底推出的Linux2.6内核实现了一定程度上的可抢占性),所以,在进
行嵌入式Linux系统动态扩展性研究开发时,首要的问题是扩展Linux的实时性能。系统在进行动态扩展的过程中,如果扩展的过程时间太长,肯定会影响
到系统的实时响应,所以要求扩展过程快速完成,例如基于LKM的内核扩展机制。如果模块加载或替换的时间太长,在规定的时间内不能完成,这对于嵌入式
Linux的某些应用来说是不能接受的。
[color="#cccccc"] (2) 资源有限性是嵌入式系统基本特征
嵌入式系统无多余软件也无多余硬件存
储器,增加存储空间意味着成本的上升。在非常有限的存储空间中要实现快速的内核动态扩展,对研究人员来说是一个极大的挑战。在桌面PC世界,虽然已经有很
多动态扩展系统功能的方法,但在嵌入式世界很难实现。例如Linux系统的LKM机制,若模块加载过程不经改造,在嵌入式Linux系统中是不能使用的。
[color="#cccccc"] (3) 期待完善的集成开发环境
一个完整的嵌入式系统的集成开发环境
一般需要编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在Linux系
统中,具有功能强大的gcc编译器工具链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核;
在使用远程开发时还可以使用交叉平台的方式,如在Windows平台下的调试跟踪器对Linux的宿主系统作调试。但是,Linux在基于图形界面的特定
系统定制平台的研究上,与Windows操作系统相比还存在差距。因此,要使嵌入式Linux动态扩展的研究更加方便、快捷,整体集成开发环境还有待提高
和完善。
桌面Linux使用LKM技术成功实
现了系统功能的动态扩展。嵌入式Linux继承了桌面Linux绝大部分功能和特性,桌面
Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了先天性的优势,可大大节省研究人员的时间和精力。在动态模块替换方面也有了很大的发
展,Chris Walton等人[9]通过对二空间拷贝垃圾回收算法进行改进,在2000年提出了一种动态模块替换的抽象机模型。
基于JOS的动态扩展技术是一个主要
发展方向。Java代码可移植性强,容易维护,在嵌入式系统上很有发展前途。采用Java技术的另外一个好处是可实现代码重用,在进行嵌入式系统开发时不
必每次都从零开始。很多研究成果也促进了Java在嵌入式系统上的应用。Derek
Rayside等人在2002年提出一种类库子集选择方法[10]。该方法可以让嵌入式系统中的Java程序在运行时从远程Java类库中仅选择所需
要的子集,然后下载到本地系统,从而减小对嵌入式系统存储空间的需求,解决了因Java语言的类库太大而阻碍了在嵌入式系统中的应用。
[color="#cccccc"] 结束语
随着嵌入式Linux的快速发展和嵌
入式Linux设备的普及,人们对可动态扩展的嵌入式Linux的需求越来越迫切。目前主要的几种可动态扩展系统功能的技术,例如微内核技术、JOS技
术、LKM技术等,由于嵌入式系统的存储空间有限,实时性要求高,在应用到嵌入式Linux系统中时都有所不足。其中,桌面Linux固有的LKM机制为
嵌入式Linux动态扩展的研究带来了先天性的优势;另外,Java代码可移植性强,维护容易,在嵌入式系统上很有发展前途,因此基于JOS的动态扩展技
术是另一个主要发展方向。最后,一个完善的嵌入式Linux集成开发环境是每一个开发人员所期待的。
[color="#cccccc"] 参考文献
1 程步奇,尹宝林.可动态扩展的嵌入式操作系统[J]. 小型微型计算机系统, 2003, 24(2): 216~217
2
Chang DaWei, Chang RueiChuan. OS Protal:an economic approach for
making an embedded kernel extensible[J]. The Journal of Systems and
Software , 2003, 67: 19~30
3 Bershad B N, et al. Extensibility,
safety and performance in the SPIN operating system[A]. In:
Proceedings of the 15th ACM symposium on Operating systems
principles[C]. 1995
4 Liao W S, SeeMong T, Campbell R H.
Finegrained, dynamic user customization of operating systems[A]. In:
Proceedings of the 5th International Workshop on Object Orientation in
Operating Systems (IWOOOS '96)[C], 1996
5 Oikawa S, Sugiura K,
Tokuda H. Adaptive object management for a reconfigurable
microkernel[A]. In: Proceedings of the 5th International Workshop on
Object Orientation in Operating Systems (IWOOOS '96)[C], 1996
6
John Williams, Neil Bergmann. Embedded Linux as a platform for
dynamically self?reconfiguring systems?on?chip[A]. In: Proceedings
Engineering of Reconfigurable Systems and Algorithms (ERSA 2004)[C].
Las Vegas, Nevada, USA. 2004
7 田玉凤,王沁. 一种动态更新LINUX内核变量的实现方法[J]. 计算机工程与设计,2003, 24(11):52~55
8 魏东林,卢正鼎,董俊,等. 在用户空间扩展Linux操作系统功能方法研究[J].华中科技大学学报(自然科学版),2002,30(7): 42~43
9
Chris Walton, Dilsun Kirh, Stephen Gilmore. An abstract machine model
of dynamic module replacement[J]. Future Generation Computer Systems.
2000,16: 793~808
10 Derek Rayside,Kostas Kontogiannis. Extracting
Java library subsets for deployment on embedded systems[J]. Science
of Computer Programming. 2002, 45: 245~270
武延民:硕士研究生,主要研究方向为嵌入式系统。姚柳:助教,主要研究方向为信息技术与课程整合。