嵌入式Linux系统中内核抽象的动态扩展技术

发布者:码字奇才最新更新时间:2010-10-22 来源: 电子发烧友 关键字:动态扩展  Linux内核  操作系统 手机看文章 扫描二维码
随时随地手机看文章
    嵌入式系统由于其工作环境、位置分布、与应用系统的结合方式等方面的原因,在系统的升级、修改方面存在着相当的困难,且费用高。目前大多数嵌入式系统内核只能在一定程度上进行静态扩展,这意味着修改某些内核属性值后要重新编译内核,对普通用户而言难以实现。通信的发展使得嵌入式操作系统的动态扩展成为可能,可以在远程控制的基础上增加嵌入式系统的灵活性,延长嵌入式系统的寿命;同时,由于嵌入式Linux的应用日益广泛,研究嵌入式Linux的动态扩展具有重要意义。

    动态扩展是指系统在运行状态下实现系统的升级和维护。动态扩展技术目前被广泛应用在软件系统开发的各个领域。组件、可扩展的数据库系统、主动网等多种技术都是动态扩展技术在各个领域的具体体现。在嵌入式操作系统领域,动态扩展技术研究的主要目标是实现内核抽象的扩展。实现操作系统内核抽象的动态扩展能够提高系统的灵活性、适应性,使系统能够根据应用的需求,提供特定的服务。然而,由于嵌入式系统硬件资源有限,这对研究嵌入式Linux系统核心的动态扩展性是一个极大的挑战。

    本文主要讨论嵌入式Linux系统中内核抽象的动态扩展技术。

1、几种主要的内核动态扩展技术的分析

    当前应用于操作系统中的动态扩展技术主要有四种:微内核技术、可扩展内核技术、解释器技术/JOS技术和内核下载技术/LKM技术[1,2]。这三种技术已经在桌面操作系统的不同环境中得到了充分的应用。嵌入式操作系统及其使用环境具有桌面操作系统所不同的特征,它在性能、地址空间、所需存储空间和底层访问频率等方面的特征,使得我们在扩展技术的选择上需要加以权衡。

(1) 微内核技术

    在微内核操作系统中,内核中包括了一些基本内核功能(如创建和删除任务、任务调度、内存管理和中断处理等),部分操作系统抽象和关键服务(如文件系统、网络协议栈等),都是在用户空间运行的。这大大减小了内核的体积,同时也极大地方便了整个系统的升级、维护和移植。系统通过核心到用户层向上调用服务的方法来为应用程序提供服务。由于服务存在于用户层,用户可通过修改服务来获得不同的行为,因而也称为用户层扩展技术。由于所有的应用程序都要利用操作系统提供的API或系统调用,完成内存管理、进程管理、I/O、设备管理等,因此通过在用户空间监视并截获某个进程的系统调用,然后将扩展功能代码插入系统调用中,就可以扩展Linux操作系统功能。

     与内核空间功能扩展相比,在用户空间扩展安全性更强,对Linux操作系统和应用程序更加透明。用户层扩展技术的缺点在于,将服务提升到用户层使程序运行过程中核心态和用户态之间的切换和自陷次数增加,导致系统负载增加,系统性能下降。另外,微内核与传统的嵌入式Linux内核在结构上是完全不同的。在嵌入式Linux中,如果采用该技术来增加系统的动态扩展性能,需要对内核结构重新设计。

(2) 可扩展内核技术

    可扩展内核技术允许用户应用程序向内核植入(inject)代码以扩展其功能。由于被植入的代码是在核心态运行,从而避免了微内核技术中的系统性能下降的问题。被植入的代码是在核心态运行,需要有一个实时检查机制来验证代码的安全性,保证被植入代码不会导致系统的崩溃。程步奇等人使用软件故障孤立技术来实现扩展模块的故障孤立,保证系统不受到扩展模块的破坏。 Bershad等人也使用软件故障孤立技术来限制被植入代码可访问的内存地址范围。代码安全性检查无疑增加了系统的负担,问题产生的根本原因是那些被植入的扩展性代码对核心来说是不可信任的。为了减轻系统的负担,就需要假设被植入的代码是安全的、可信任的。

(3) 解释器技术/JOS技术

    与文献中提到的JOS(Java Operating System)技术相同,该技术允许开发者用Java语言编写系统模块,例如TCP/IP协议栈或文件系统。将这些模块编译成类(class)文件,并在系统运行时由JVM(Java Virtual Machine)动态地加载。Liao等人在1996年提出,将JVM插入到微内核中,从而可以让用户编写Java程序,以扩展内核功能。

    解释器技术是以解释的方式来执行程序代码的,比较适合于交互式系统;与编译器相比,解释器/JVM在移植时相对简单;解释器通过采用中间代码表示的方法,当代码长度小于500 KB的时候,可执行的中间代码通常比编译产生的二进制代码小,这一点很适合于存储空间非常有限的嵌入式系统;最后,Java代码容易维护和编写,可移植性好,可实现代码重用。采用解释器技术的缺点是,中间可执行代码的执行速度慢。在嵌入式Linux系统中,内核很大一部分由应用所共享,甚至应用程序本身就是内核的一个线程,执行频率高,采用解释器技术会大大降低系统的效率。有些Java平台采用即时(Just in time)编译技术来改进代码的执行速度。该技术是利用空间来换取时间,因此很难在硬件资源非常有限的嵌入式系统上实现。此外,由于Java语言的类库很大,在一定程度上也阻碍了其在资源有限的嵌入式系统中的发展。

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

    许多桌面操作系统,例如Linux,提供LKM(Loadable Kernel Module)来动态扩展它们的内核。当模块(Module)安装到内核后就作为核心的一部分,不进行实时安全检测,全速运行。在嵌入式Linux系统中,LKM的主要问题是:存储模块需要占用额外空间以及被加载模块的安全性。模块的安全问题可以通过软件保护技术来解决。

    Oikawa等人在1996年提出一种与LKM类似的动态核心模块(DKMs)技术。与LKM一样,DKMs以文件的形式存储并能在系统运行过程中动态地加载和卸载。DKMs由一个用户层的DKM服务器来管理,并非由内核来管理。当核心需要某模块时,由DKM服务器负责把相应的DKM加载;当核心的内存资源紧缺时,由DKM服务器负责卸载一个没有被使用的DKM。缺点是所有的DKM是存储在本地系统上的,占用了大量宝贵的存储空间。

    与Oikawa的方法不同,Chang DaWei 等人于2003年提出了OperatingSystemPortal framework(OSP)的方法。该方法是将核心模块存储在一个资源充足的远程服务器上,并由服务器端工具OS Portal来管理所存储的模块,同时也负责处理客户端(嵌入式系统内核)发出的请求,按照请求动态的选择并连接模块,然后通过网络传到客户端。由于模块的管理和连接都在服务器端,所以对客户端来说可以节省大量的资源空间。OS Portal的结构如图1所示。


图1 OS Portal的结构图

    OS Portal的结构通常,内核动态加载模块的时候,模块的连接工作由内核完成。Chang DaWei的方法的独特之处在于把模块连接的工作交给服务器端执行,不但降低了对内存空间的需求,也减轻了内核的负担。

2、其他相关研究

(1) 基于FPGA的可动态配置的片上系统

    FPGA(Field Programmable Gate Array,现场可编程门阵列)是电子设计领域中最具活力和发展前途的一项技术。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用它来实现。FPGA在嵌入式系统中的应用越来越广泛。John Williams和Neil Bergmann用uCLinux作为操作系统平台,设计出可动态配置的片上系统(rSoC)。uCLinux从远程服务器上下载FPGA程序代码,然后利用shell脚本工具将代码写进FPGA芯片,实现系统功能的可动态扩展。

(2) 动态更新Linux内核变量的方法

    在进行Linux内核嵌入式开发时,经常使用内核启动过程中读取静态配置文件内容的方法对内核某些变量进行初始化。当静态配置文件改动时,只有重新启动内核才能使新的配置生效。北京科技大学的田玉凤等人通过修改文件./include/linux/proc_fs.h,重新编译、安装新内核后,利用/proc文件系统,可动态改变Linux内核变量。

(3) 在用户空间扩展Linux操作系统功能的方法

    与内核空间功能扩展相比,在用户空间扩展安全性更强,对Linux操作系统和应用程序更加透明。魏东林、卢正鼎等人通过在用户空间跟踪截获系统调用并更改系统调用的行为来达到扩展操作系统功能的目的。从本质上来说,该方法和本文第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等人通过对二空间拷贝垃圾回收算法进行改进,在2000年提出了一种动态模块替换的抽象机模型。

    基于JOS的动态扩展技术是一个主要发展方向。Java代码可移植性强,容易维护,在嵌入式系统上很有发展前途。采用Java技术的另外一个好处是可实现代码重用,在进行嵌入式系统开发时不必每次都从零开始。很多研究成果也促进了Java在嵌入式系统上的应用。Derek Rayside等人在2002年提出一种类库子集选择方法[10]。该方法可以让嵌入式系统中的Java程序在运行时从远程Java类库中仅选择所需要的子集,然后下载到本地系统,从而减小对嵌入式系统存储空间的需求,解决了因Java语言的类库太大而阻碍了在嵌入式系统中的应用。

结束语

    随着嵌入式Linux的快速发展和嵌入式Linux设备的普及,人们对可动态扩展的嵌入式Linux的需求越来越迫切。目前主要的几种可动态扩展系统功能的技术,例如微内核技术、JOS技术、LKM技术等,由于嵌入式系统的存储空间有限,实时性要求高,在应用到嵌入式Linux系统中时都有所不足。其中,桌面Linux固有的LKM机制为嵌入式Linux动态扩展的研究带来了先天性的优势;另外,Java代码可移植性强,维护容易,在嵌入式系统上很有发展前途,因此基于JOS的动态扩展技术是另一个主要发展方向。最后,一个完善的嵌入式Linux集成开发环境是每一个开发人员所期待的。

关键字:动态扩展  Linux内核  操作系统 引用地址:嵌入式Linux系统中内核抽象的动态扩展技术

上一篇:Linux嵌入式系统设计的3个层次
下一篇:实时嵌入式系统软件调试问题分析

推荐阅读最新更新时间:2024-05-02 21:10

嵌入式实时操作系统ECOS在S3C2510上的移植实现
摘 要: 本文介绍了实时操作系统ECOS的特点及基本结构,并具体研究了ECOS在三星公司以ARM940T为内核的S3C2510嵌入式芯片上的移植方法。文章着重讨论了移植过程中的重点与难点部分:ECOS的硬件抽象层(HAL)移植。该移植方案已经过实际测试,系统稳定可靠,可运行多任务式应用程序。 关键词:实时操作系统;ECOS;硬件抽象层;移植;ARM 引言 ECOS(Embedded Configurable Operating System,嵌入式可配置操作系统)是一种针对16位、32位和64位处理器的可移植嵌入式实时操作系统。由于其源代码是公开的,因而有越来越多的设计人员开始关注ECOS操作系统。ECOS最大的特点是模块化,内
[嵌入式]
传华为研发自主操作系统,芯片+系统自研是战略考虑
    集微网文/徐伦 华为在自主研发的道路上越走越远。继海思“麒麟”处理器芯片大获成功后,华为还欲打造自有操作系统。 ​来自Information网站报道,最新消息显示,华为从苹果挖来的设计副总裁布罗迪正在着手改进EMUI。未来该系统将加入西方人喜爱的元素和功能。 除了继续改进自家安卓机型的软件体验,华为还在秘密开发自有操作系统。据悉,华为还拉来了前诺基亚工程师帮忙,不过该系统暂时只是华为的B计划,而且项目才刚刚开始。 其实华为要做操作系统传闻已经很久了。只是一直没有得到官方确认。 就在今年初,财经资讯Seeking Alpha 报道称,华为已经围绕麒麟处理器打造一套专属的自主系统,其开发代号“麒麟OS”(
[手机便携]
恩智浦推出基于Java卡的全新操作系统扩展面向安全市场
恩智浦半导体NXP Semiconductors N.V.(纳斯达克代码:NXPI)今日推出一套最新的Java卡操作系统(JCOP3),主要面向安全识别应用。这套多方案平台可为客户带来更高的安全性与灵活性,客户不仅可以集成自己的小应用程序和个性化解决方案,与此同时还能够缩短产品上市时间。恰逢Java卡论坛二十周年纪念日,恩智浦全面推出各类产品,其中这套JCOP3平台不但标志着身份识别市场的便利性上升到一个新的水平,同时也凸显出Java卡技术一直在不断创新。 恩智浦资深副总裁兼安全交易与识别业务总经理Rafael Sotomayor表示:“恩智浦推出JCOP3平台,为促进Java卡技术的发展贡献良多。目前电子政务、银行、公共交通
[安防电子]
linux内核中的文件描述符(三)--fd的回收
Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csdn.net/ce123) 1.close函数 上图说明了close(fd)的执行过程,主要包括两部分:释放文件描述符fd,关闭文件file。 view plain copy print ? //fs/open.c asmlinkage long sys_close(unsigned int fd) { struct file * filp; struct files_struct *files = current- fi
[单片机]
<font color='red'>linux内核</font>中的文件描述符(三)--fd的回收
斑马技术推出其首款多操作系统RFID读取器——RFD8500
企业资产、人员和业务实时可视化产品与服务全球领先提供商斑马技术公司(Zebra)日前宣布在亚太市场推出其首款多操作系统RFID读取器 RFD8500,可轻松为安卓和iOS设备添加高性能RFID标签和1D/2D条形码扫描功能。RFD8500还能以较低的成本将斑马技术 TC55和MC40等移动智能终端变身为手持式RFID读取器。 RFID技术近几年来为亚太区各行各业带来了诸多变化,尤其是在库存管理、仓储管理、货物追踪等领域。 RFD8500可应用于多个垂直领域,如零售、物流、医疗保健、制造业、商业服务等。RFD8500的标签读取速度高达每秒600个,可助力企业应对在性能和生产效率等层面面临的挑战。 产品主要特点 RFD8
[网络通信]
斑马技术推出其首款多<font color='red'>操作系统</font>RFID读取器——RFD8500
基于STM32从零写操作系统系列---用GDB调试LED程序
目的 通过调试程序,观察程序的运行情况。主要是简单介绍程序的调试方法,当然相对于一些集成开发环境,这种调试方法就显得有点落后了。由于我坚持不使用集成开发环境,所以只能这样了。 要求 安装TrueSTUDIO for STM32,这是STM32官方免费的集成开发环境。安装这个IDE的目的只有一个,就是使用它的GDBServer。 实验步骤 1.使用《基于STM32从零写操作系统系列---点亮LED灯》这篇文章的源代码。 2.下载TrueSTUDIO for STM32。 3.安装TrueSTUDIO for STM32软件。正常安装就可以,没有特别的设置。 4. 在命令行中,进入led_proj文件夹,输入mak
[单片机]
基于STM32从零写<font color='red'>操作系统</font>系列---用GDB调试LED程序
嵌入式操作系统FreeRTOS的原理与实现
在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为2.6版。 1 FreeRTOS操作系统功能 作为一个轻量级的操作系统,FreeR
[嵌入式]
机器人操作系统
机器人操作系统 ROS (机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。 简介 ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括: 基于服务的同步RPC(远程过程调用)通讯; 基于Topic的异步数据流通讯,还有参数服务器上的数据存储。 产品功能 T
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved