《嵌入式Linux的动态扩展技术研究.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux的动态扩展技术研究.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式Linux的动态扩展技术研究摘要:嵌入式系统是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术等先进技术和详细应用对象相结合后的更新换代产品。系统无多余软件,硬件亦无多余存储器,可靠性高,本钱低,体积小,功耗少;可应用于家电、工业、通信、国防等领域。其产品形态丰富多样,市场潜力宏大。嵌入式Linux的出现,给整个嵌入式世界带来了无限活力。Linux具有内核可裁剪、效率高、稳定性好、移植性好、源代码开放等优点,还内含了完好的TCP/IP网络协议栈,很合适在嵌入式领域应用。与传统的实时操作系统RTOS相比,采用嵌入式Linux这样开放源码的操作系统的另外一个好处是,Linu
2、x开发团体看来会比RTOS的供给商更快地支持新的IP协议和其他协议。例如,用于Linux的设备驱动程序要比用于商业操作系统的设备驱动程序多。因此,越来越多的公司和个人正在把Linux作为嵌入式操作系统的首选。嵌入式系统由于其工作环境、位置分布、与应用系统的结合方式等方面的原因,在系统的晋级、修改方面存在着相当的困难,且费用高。目前大多数嵌入式系统内核只能在一定程度上进展静态扩展,这意味着修改某些内核属性值后要重新编译内核,对普通用户而言难以实现。通信的开展使得嵌入式操作系统的动态扩展成为可能,可以在远程控制的根底上增加嵌入式系统的灵敏性,延长嵌入式系统的寿命;同时,由于嵌入式Linux的应用日
3、益广泛,研究嵌入式Linux的动态扩展具有重要意义。动态扩展是指系统在运行状态下实现系统的晋级和维护。动态扩展技术目前被广泛应用在软件系统开发的各个领域。组件、可扩展的数据库系统、主动网等多种技术都是动态扩展技术在各个领域的详细表达。在嵌入式操作系统领域,动态扩展技术研究的主要目的是实现内核抽象的扩展。实现操作系统内核抽象的动态扩展可以进步系统的灵敏性、适应性,使系统可以根据应用的需求,提供特定的效劳。然而,由于嵌入式系统硬件资源有限,这对研究嵌入式Linux系统核心的动态扩展性是一个极大的挑战。本文主要讨论嵌入式Linux系统中内核抽象的动态扩展技术。1几种主要的内核动态扩展技术的分析当前应
4、用于操作系统中的动态扩展技术主要有四种:微内核技术、可扩展内核技术、解释器技术/JOS技术和内核下载技术/LKM技术1,2。这三种技术已经在桌面操作系统的不同环境中得到了充分的应用。嵌入式操作系统及其使用环境具有桌面操作系统所不同的特征,它在性能、地址空间、所需存储空间和底层访问频率等方面的特征,使得我们在扩展技术的选择上需要加以权衡。1微内核技术在微内核操作系统中,内核中包括了一些根本内核功能如创立和删除任务、任务调度、内存管理和中断处理等,局部操作系统抽象和关键效劳如文件系统、网络协议栈等,都是在用户空间运行的。这大大减小了内核的体积,同时也极大地方便了整个系统的晋级、维护和移植。系统通过
5、核心到用户层向上调用效劳的方法来为应用程序提供效劳。由于效劳存在于用户层,用户可通过修改效劳来获得不同的行为,因此也称为用户层扩展技术。由于所有的应用程序都要利用操作系统提供的API或者系统调用,完成内存管理、进程管理、I/O、设备管理等,因此通过在用户空间监视并截获某个进程的系统调用,然后将扩展功能代码插入系统调用中,就可以扩展Linux操作系统功能。与内核空间功能扩展相比,在用户空间扩展平安性更强,对Linux操作系统和应用程序更加透明。用户层扩展技术的缺点在于,将效劳提升到用户层使程序运行经过中核心态和用户态之间的切换和自陷次数增加,导致系统负载增加,系统性能下降。另外,微内核与传统的嵌
6、入式Linux内核在构造上是完全不同的。在嵌入式Linux中,假如采用该技术来增加系统的动态扩展性能,需要对内核构造重新设计2。2可扩展内核技术可扩展内核技术允许用户应用程序向内核植入inject代码以扩展其功能。由于被植入的代码是在核心态运行,进而防止了微内核技术中的系统性能下降的问题。被植入的代码是在核心态运行,需要有一个实时检查机制来验证代码的平安性,保证被植入代码不会导致系统的崩溃。程步奇等人1使用软件故障孤立技术来实现扩展模块的故障孤立,保证系统不受到扩展模块的破坏。Bershad等人3也使用软件故障孤立技术来限制被植入代码可访问的内存地址范围。代码平安性检查无疑增加了系统的负担,问
7、题产生的根本原因是那些被植入的扩展性代码对核心来讲是不可信任的。为了减轻系统的负担,就需要假设被植入的代码是平安的、可信任的。3解释器技术/JOS技术与文献2中提到的JOSJavaOperatingSystem技术一样,该技术允许开发者用Java语言编写系统模块,例如TCP/IP协议栈或者文件系统。将这些模块编译成类class文件,并在系统运行时由JVMJavaVirtualMachine动态地加载。Liao等人4在1996年度提出,将JVM插入到微内核中,进而可以让用户编写Java程序,以扩展内核功能。解释器技术是以解释的方式来执行程序代码的,比拟合适于交互式系统;与编译器相比,解释器/JV
8、M在移植时相对简单;解释器通过采用中间代码表示的方法,现代码长度小于500KB的时候,可执行的中间代码通常比编译产生的二进制代码小,这一点很合适于存储空间非常有限的嵌入式系统;最后,Java代码容易维护和编写,可移植性好,可实当代码重用。采用解释器技术的缺点是,中间可执行代码的执行速度慢。在嵌入式Linux系统中,内核很大一局部由应用所分享,甚至应用程序本身就是内核的一个线程,执行频率高,采用解释器技术会大大降低系统的效率。有些Java平台采用即时Justintime编译技术来改良代码的执行速度2。该技术是利用空间来换取时间,因此很难在硬件资源非常有限的嵌入式系统上实现。此外,由于Java语言
9、的类库很大,在一定程度上也阻碍了其在资源有限的嵌入式系统中的开展。4内核加载技术/LKM技术许多桌面操作系统,例如Linux,提供LKMLoadableKernelModule来动态扩展它们的内核。当模块Module安装到内核后就作为核心的一局部,不进展实时平安检测,全速运行。在嵌入式Linux系统中,LKM的主要问题是:存储模块需要占用额外空间和被加载模块的平安性。模块的平安问题可以通过软件保护技术来解决1。Oikawa等人在1996年度提出一种与LKM类似的动态核心模块DKMs技术5。与LKM一样,DKMs以文件的形式存储并能在系统运行经过中动态地加载和卸载。DKMs由一个用户层的DKM效
10、劳器来管理,并非由内核来管理。当核心需要某模块时,由DKM效劳器负责把相应的DKM加载;当核心的内存资源紧缺时,由DKM效劳器负责卸载一个没有被使用的DKM。缺点是所有的DKM是存储在本地系统上的,占用了大量珍贵的存储空间。与Oikawa的方法不同,ChangDaWei等人于2003年度提出了OperatingSystemPortalframeworkOSP的方法2。该方法是将核心模块存储在一个资源充足的远程效劳器上,并由效劳器端工具OSPortal来管理所存储的模块,同时也负责处理客户端嵌入式系统内核发出的恳求,按照恳求动态的选择并连接模块,然后通过网络传到客户端。由于模块的管理和连接都在效
11、劳器端,所以对客户端来讲可以节省大量的资源空间。OSPortal的构造如图1所示。OSPortal的构造通常,内核动态加载模块的时候,模块的连接工作由内核完成。ChangDaWei的方法的独特之处在于把模块连接的工作交给效劳器端执行,不但降低了对内存空间的需求,也减轻了内核的负担。2其他相关研究1基于FPGA的可动态配置的片上系统FPGAFieldProgrammableGateArray,现场可编程门阵列是电子设计领域中最具活力和开展前途的一项技术。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用它来实现。FPGA在嵌入式系统中的应用越来越广泛。JohnWil
12、liams和NeilBergmann6用uCLinux作为操作系统平台,设计出可动态配置的片上系统rSoC。uCLinux从远程效劳器上下载FPGA程序代码,然后利用shell脚本工具将代码写进FPGA芯片,实现系统功能的可动态扩展。2动态更新Linux内核变量的方法在进展Linux内核嵌入式开发时,经常使用内核启动经过中读取静态配置文件内容的方法对内核某些变量进展初始化。当静态配置文件改动时,只有重新启动内核才能使新的配置生效。北京科技大学的田玉凤等人7通过修改文件./include/linux/proc_fs.h,重新编译、安装新内核后,利用/proc文件系统,可动态改变Linux内核变量
13、。3在用户空间扩展Linux操作系统功能的方法与内核空间功能扩展相比,在用户空间扩展平安性更强,对Linux操作系统和应用程序更加透明。魏东林、卢正鼎等人通过在用户空间跟踪截获系统调用并更改系统调用的行为来到达扩展操作系统功能的目的8。从本质上来讲,该方法和本文第1局部提到的可扩展内核技术是一样的。3动态扩展技术面临的挑战和开展趋势1高实时性是嵌入式系统的根本要求由于Linux是一种通用操作系统,而不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性2003年度底推出的Linux2.6内核实现了一定程度上的可抢占性,所以,在进展嵌入式Linux系统动态扩展性研究开发时,首要的问题是扩
14、展Linux的实时性能。系统在进展动态扩展的经过中,假如扩展的经过时间太长,肯定会影响到系统的实时响应,所以要求扩展经过快速完成,例如基于LKM的内核扩展机制。假如模块加载或者交换的时间太长,在规定的时间内不能完成,这对于嵌入式Linux的某些应用来讲是不能承受的。2资源有限性是嵌入式系统根本特征嵌入式系统无多余软件也无多余硬件存储器,增加存储空间意味着本钱的上升。在非常有限的存储空间中要实现快速的内核动态扩展,对研究人员来讲是一个极大的挑战。在桌面PC世界,固然已经有很多动态扩展系统功能的方法,但在嵌入式世界很难实现。例如Linux系统的LKM机制,假设模块加载经过不经改造,在嵌入式Linu
15、x系统中是不能使用的。3期待完善的集成开发环境一个完好的嵌入式系统的集成开发环境一般需要编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在Linux系统中,具有功能强大的gcc编译器工具链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核;在使用远程开发时还可以使用穿插平台的方式,如在Windows平台下的调试跟踪器对Linux的宿主系统作调试。但是,Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距。因此,要使嵌入式Linux
16、动态扩展的研究更加方便、快捷,整体集成开发环境还有待进步和完善。桌面Linux使用LKM技术成功实现了系统功能的动态扩展。嵌入式Linux继承了桌面Linux绝大局部功能和特性,桌面Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了先天性的优势,可大大节省研究人员的时间和精力。在动态模块交换方面也有了很大的开展,ChrisWalton等人9通过对二空间拷贝垃圾回收算法进展改良,在2000年度提出了一种动态模块交换的抽象机模型。基于JOS的动态扩展技术是一个主要开展方向。Java代码可移植性强,容易维护,在嵌入式系统上很有开展前途。采用Java技术的另外一个好处是可实当代码重用,在
17、进展嵌入式系统开发时不必每次都从零开场。很多研究成果也促进了Java在嵌入式系统上的应用。DerekRayside等人在2002年度提出一种类库子集选择方法10。该方法可以让嵌入式系统中的Java程序在运行时从远程Java类库中仅选择所需要的子集,然后下载到本地系统,进而减小对嵌入式系统存储空间的需求,解决了因Java语言的类库太大而阻碍了在嵌入式系统中的应用。随着嵌入式Linux的快速开展和嵌入式Linux设备的普及,人们对可动态扩展的嵌入式Linux的需求越来越迫切。目前主要的几种可动态扩展系统功能的技术,例如微内核技术、JOS技术、LKM技术等,由于嵌入式系统的存储空间有限,实时性要求高,在应用到嵌入式Linux系统中时都有所缺乏。其中,桌面Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了先天性的优势;另外,Java代码可移植性强,维护容易,在嵌入式系统上很有开展前途,因此基于JOS的动态扩展技术是另一个主要开展方向。最后,一个完善的嵌入式Linux集成开发环境是每一个开发人员所期待的。0
限制150内