您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

主流嵌入式Linux动态扩展技能比较阐发

发布日期:2011-05-12


    引 言

  嵌入式体系是谋略机技能、通讯技能、半导体技能、微电子技能、语音图像数据传输技能等先辈技能和细致应用东西相连合后的更新换代产品。体系无多余软件,硬件亦无多余存储器,可靠性高,资源低,体积小,功耗少;可应用于家电、财产、通讯、国防等范畴。其产品形态丰富多样,市场潜力巨大。

  嵌入式Linux的出现,给整个嵌入式天下带来了无穷负气渴望。Linux具有内核可裁剪、屈从高、稳固性好、移植性好、源代码开放等长处,还内含了完备的TCP/IP网络协议栈,很得当在嵌入式范畴应用。与传统的及时利用体系(RTOS)相比,采取嵌入式Linux如许开放源码的利用体系的别的一个好处是,Linux开辟团体看来会比RTOS的提供商更快地支持新的IP协讲和其他协议。比喻,用于Linux的配置驱动步调要比用于贸易利用体系的配置驱动步调多。因此,越来越多的公司和个人私家私家正在把Linux作为嵌入式利用体系的首选。

  嵌入式体系由于其变乱环境、位置散布、与应用体系的连合要领等方面的缘故因由,在体系的升级、修改方面存在着相称的困难,且用度高。如今大多数嵌入式体系内核只能在肯定程度上举行静态扩展,这意味着修改某些内核属性值后要重新编译内核,对平常用户而言难以实现。通讯的生长使得嵌入式利用体系的动态扩展成为大概,可以在长途控制的底子上增长嵌入式体系的机动性,扩展嵌入式体系的寿命;同时,由于嵌入式Linux的应用日益广泛,研究嵌入式Linux的动态扩展具有告急意义。

  动态扩展是指体系在运行状态下实现体系的升级和维护。动态扩展技能如今被广泛应用在软件体系开辟的各个范畴。组件、可扩展的数据库体系、主动网等多种技能都是动态扩展技能在各个范畴的细致表现。在嵌入式利用体系范畴,动态扩展技能研究的紧张目标是实现内核抽象的扩展。实现利用体系内核抽象的动态扩展可以大概进步体系的机动性、适应性,使体系可以大概根据应用的需求,提供特定的办事。然而,由于嵌入式体系硬件资源有限,这对研究嵌入式Linux体系内核的动态扩展性是一个极大的寻衅。

  本文紧张讨论嵌入式Linux体系中内核抽象的动态扩展技能。

    1几种紧张的内核动态扩展技能的阐发

  当前应用于利用体系中的动态扩展技能紧张有四种:微内核技能、可扩展内核技能、表明器技能/JOS技能和内核下载技能/LKM技能\[1,2\]。 这三种技能已经在桌面利用体系的差别环境中得到了充分的应用。嵌入式利用体系及其利用环境具有桌面利用体系所差别的特性,它在性能、地点空间、所需存储空间和底层访问频率等方面的特性,使得我们在扩展技能的选择上须要加以衡量。

    (1) 微内核技能

  在微内核利用体系中,内核中包括了一些底子内核结果(如创建和删除任务、任务调理、内存办理和克制处理惩罚处罚等),部分利用体系抽象和关键办事(如文件体系、网络协议栈等),都是在用户空间运行的。这大大减小了内核的体积,同时也极大地方便了整个别系的升级、维护和移植。体系通过内核到用户层向上调用办事的要领来为应用步调提供办事。由于办事存在于用户层,用户可通过修改办事来得到差别的活动,因而也称为用户层扩展技能。由于全部的应用步调都要利用利用体系提供的API或体系调用,完成内存办理、进程办理、I/O、配置办理等,因此通过在用户空间监督并截获某个进程的体系调用,然后将扩展结果代码插入体系调用中,就可以扩展Linux利用体系结果。

  与内核空间结果扩展相比,在用户空间扩展沉寂性更强,对Linux利用体系和应用步调越发透明。用户层扩展技能的缺点在于,将办事提拔到用户层使步调运行进程中内核态和用户态之间的切换和自陷次数增长,导致体系负载增长,体系性能降落。别的,微内核与传统的嵌入式Linux内核在布局上是完全差别的。在嵌入式Linux中,要是采取该技能来增长体系的动态扩展性能,须要对内核布局重新筹划\[2\]。 

    (2) 可扩展内核技能

  可扩展内核技能容许用户应用步调向内核植入(inject)代码以扩展其结果。由于被植入的代码是在内核态运行,从而克制了微内核技能中的体系性能降落的标题。被植入的代码是在内核态运行,须要有一个及时查抄机制来验证代码的沉寂性,包管被植入代码不会导致体系的瓦解。程步奇等人\[1\]利用软件妨碍孤单技能来实现扩展模块的妨碍孤单,包管体系不受到扩展模块的粉碎。 Bershad等人\[3\]也利用软件妨碍孤单技能来限定被植入代码可访问的内存地点范畴。代码沉寂性查抄无疑增长了体系的包袱,标题孕育孕育产生的源头头底子因是那些被植入的扩展性代码对内核来说是不可信托的。为了减轻体系的包袱,就须要假设被植入的代码是沉寂的、可信托的。 

    (3) 表明器技能/JOS技能

  与文献\[2\]中提到的JOS(Java Operating System)技能雷同,该技能容许开辟者用Java语言编写体系模块,比喻TCP/IP协议栈或文件体系。将这些模块编译成类(class)文件,并在体系运行时由JVM(Java Virtual Machine)动态地加载。Liao等人\[4\]在1996年提出,将JVM插入到微内核中,从而可以让用户编写Java步调,以扩展内核结果。

  表明器技能因此表明的要领来实行步调代码的,比较得当于交互式体系;与编译器相比,表明器/JVM在移植时相对大抵;表明器通过采取中间代码表现的要领,当代码长度小于500 KB的时间,可实行的中间代码通常比编译孕育孕育产生的二进制代码小,这一点很得当于存储空间非常有限的嵌入式体系;着末,Java代码容易维护和编写,可移植性好,可实当代码重用。采取表明器技能的缺点是,中间可实行代码的实行速率慢。在嵌入式Linux体系中,内核很大一部分由应用所共享,以致应用步调本身便是内核的一个线程,实行频率高,采取表明器技能会大大低沉体系的屈从。有些Java平台采取及时(Justintime)编译技能来改革代码的实行速率\[2\]。该技能是利用空间来更改时间,因此很难在硬件资源非常有限的嵌入式体系上实现。别的,由于Java语言的类库很大,在肯定程度上也拦阻了其在资源有限的嵌入式体系中的生长。 

    (4) 内核加载技能/LKM技能

  很多桌面利用体系,比喻Linux,提供LKM(Loadable Kernel Module)来动态扩展它们的内核。当模块(Module)摆设到内核后就作为内核的一部分,不举行及时沉寂检测,全速运行。在嵌入式Linux体系中,LKM的紧张标题是:存储模块须要占用分外空间以及被加载模块的沉寂性。模块的沉寂标题可以通过软件掩护技能来办理\[1\]。

  Oikawa等人在1996年提出一种与LKM雷同的动态内核模块(DKMs)技能\[5\]。与LKM一样,DKMs以文件的情势存储并能在体系运行进程中动态地加载和卸载。DKMs由一个用户层的DKM办事器来办理,并非由内核来办理。当内核须要某模块时,由DKM办事器认真把相应的DKM加载;当内核的内存资源紧缺时,由DKM办事器认真卸载一个没有被利用的DKM。缺点是全部的DKM是存储在本地体系上的,占用了大量宝贵的存储空间。

  与Oikawa的要领差别,Chang DaWei 等人于2003年提出了OperatingSystemPortal framework(OSP)的要领\[2\]。该要领是将内核模块存储在一个资源富饶的长途办事器上,并由办事器端东西OS Portal来办理所存储的模块,同时也认真处理惩罚处罚客户端(嵌入式体系内核)发出的恳求,根据恳求动态的选择并连接模块,然后通过网络传到客户端。由于模块的办理和连接都在办事器端,以是对客户端来说可以节流大量的资源空间。OS Portal的布局如图1所示。

      
                                                     图1
                    
   OS Portal的布局通常,内核动态加载模块的时间,模块的连到差来由内核完成。Chang DaWei的要领的独特之处在于把模块连接的变乱交给办事器端实行,不但低沉了对内存空间的需求,也减轻了内核的包袱。
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利用LKM技能告成实现了体系结果的动态扩展。嵌入式Linux承继了桌面Linux绝大部分结果和特性,桌面Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了天本性的上风,可大大节流研究职员的时间和精力。在动态模块调换方面也有了很大的生长,Chris Walton等人\[9\]通过对二空间拷贝垃圾采取算法举行改革,在2000年提出了一种动态模块调换的抽象机模型。

  基于JOS的动态扩展技能是一个紧张生长方向。Java代码可移植性强,容易维护,在嵌入式体系上很有生长出息。采取Java技能的别的一个好处是可实当代码重用,在举行嵌入式体系开辟时不必每次都从零开始。很多研究结果也促进了Java在嵌入式体系上的应用。Derek Rayside等人在2002年提出一种类库子集选择要领\[10\]。该要领可以让嵌入式体系中的Java步调在运行时从长途Java类库中仅选择所须要的子集,然后下载到本地体系,从而减小对嵌入式体系存储空间的需求,办理了因Java语言的类库太大而拦阻了在嵌入式体系中的应用。 

    结语

  随着嵌入式Linux的快速生长和嵌入式Linux配置的广泛,人们对可动态扩展的嵌入式Linux的需求越来越急迫。如今紧张的几种可动态扩展体系结果的技能,比喻微内核技能、JOS技能、LKM技能等,由于嵌入式体系的存储空间有限,及时性恳求高,在应用到嵌入式Linux体系中时都有所不敷。此中,桌面Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了天本性的上风;别的,Java代码可移植性强,维护容易,在嵌入式体系上很有生长出息,因此基于JOS的动态扩展技能是另一个紧张生长方向。着末,一个美满的嵌入式Linux集成开辟环境是每一个开辟职员所等待的。 

    参考文献
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
武延民:硕士研究生,紧张研究方向为嵌入式体系。姚柳:助教,紧张研究方向为信息技能与课程整合。