图1
OS Portal的结构通常,内核动态加载模块的时候,模块的连接工作由内核完成 。Chang DaWei的方法的独特之处在于把模块连接的工作交给服务器端执行,不但降低了对内存空间的需求,也减轻了内核的负担 。
2、其他相关研究
(1) 基于FPGA的可动态配置的片上系统
FPGA(Field Programmable Gate Array,现场可编程门阵列)是电子设计领域中最具活力和发展前途的一项技术 。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用它来实现 。FPGA在嵌入式系统中的应用越来越广泛 。John Williams和Neil Bergmann[6]用uCLinux作为操作系统平台,设计出可动态配置的片上系统(rSoC) 。uCLinux从远程服务器上下载FPGA程序代码,然后利用shell脚本工具将代码写进FPGA芯片,实现系统功能的可动态扩展 。
(2) 动态更新Linux内核变量的方法
在进行Linux内核嵌入式开发时,经常使用内核启动过程中读取静态配置文件内容的方法对内核某些变量进行初始化 。当静态配置文件改动时,只有重新启动内核才能使新的配置生效 。北京科技大学的田玉凤等人[7]通过修改文件./include/linux/proc_fs.h,重新编译、安装新内核后,利用/proc文件系统,可动态改变Linux内核变量 。
(3) 在用户空间扩展Linux操作系统功能的方法
与内核空间功能扩展相比,在用户空间扩展安全性更强,对Linux操作系统和应用程序更加透明 。魏东林、卢正鼎等人通过在用户空间跟踪截获系统调用并更改系统调用的行为来达到扩展操作系统功能的目的[8] 。从本质上来说,该方法和本文第1部分提到的可扩展内核技术是一样的 。
3、动态扩展技术面临的挑战和发展趋势
(1) 高实时性是嵌入式系统的基本要求
由于Linux是一种通用操作系统,而不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性(2003年底推出的Linux2.6内核实现了一定程度上的可抢占性),所以,在进行嵌入式Linux系统动态扩展性研究开发时,首要的问题是扩展Linux的实时性能 。系统在进行动态扩展的过程中,如果扩展的过程时间太长,肯定会影响到系统的实时响应,所以要求扩展过程快速完成,例如基于LKM的内核扩展机制 。如果模块加载或替换的时间太长,在规定的时间内不能完成,这对于嵌入式Linux的某些应用来说是不能接受的 。
(2) 资源有限性是嵌入式系统基本特征
嵌入式系统无多余软件也无多余硬件存储器,增加存储空间意味着成本的上升 。在非常有限的存储空间中要实现快速的内核动态扩展,对研究人员来说是一个极大的挑战 。在桌面PC世界,虽然已经有很多动态扩展系统功能的方法,但在嵌入式世界很难实现 。例如Linux系统的LKM机制,若模块加载过程不经改造,在嵌入式Linux系统中是不能使用的 。
(3) 期待完善的集成开发环境
一个完整的嵌入式系统的集成开发环境一般需要编译/连接器、内核调试/跟踪器和集成图形界面开发平台 。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等 。在Linux系统中,具有功能强大的gcc编译器工具链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核;在使用远程开发时还可以使用交叉平台的方式,如在Windows平台下的调试跟踪器对Linux的宿主系统作调试 。但是,Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距 。因此,要使嵌入式Linux动态扩展的研究更加方便、快捷,整体集成开发环境还有待提高和完善 。
推荐阅读
- 详细讲解家用Linux的实用安全
- 运用更方便 Linux操作系统三则应用技巧
- 一个Linux爱好者的2.6.11内核编译过程
- 资深Linux程序员的开发经验谈
- 用Linux的dd命令简单破解加密软盘
- 如何共享两台Linux操作系统的根目录
- Linux操作操作两种常见启动故障解决方法
- Linux内核源代码的阅读及相关工具介绍
- Linux下无线上网设置方法
- Linux系统下架设CS服务器的完美方法
