您的位置首页>企业动态>

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

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解嵌入式Linux系统中内核抽象的动态扩展技术问题。随着嵌入式技术的快速发展和嵌入式

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解嵌入式Linux系统中内核抽象的动态扩展技术问题。

随着嵌入式技术的快速发展和嵌入式设备的普及,嵌入式应用开发的一个关键趋势是从静态和固定的系统功能向动态和可扩展的系统功能转变。首先介绍了嵌入式Linux系统的发展以及研究嵌入式Linux动态可扩展性的意义。然后,讨论了目前几种主要的核心动态扩展技术,以及它们在嵌入式系统中的优缺点。最后,分析了嵌入式Linux动态可扩展性研究面临的挑战和发展趋势。让我们和学生们谈谈上官教育边肖。

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

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

(1)微内核技术

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

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

(2)可扩展内核技术

可扩展内核技术允许用户应用程序将代码注入内核以扩展其功能。由于植入的代码以内核模式运行,避免了微内核技术中系统性能下降的问题。植入的代码运行在内核模式下,需要一个实时的检查机制来验证代码的安全性,从而保证植入的代码不会导致系统崩溃。程步奇等人利用软件故障隔离技术实现了扩展模块的故障隔离,保证了系统不被扩展模块破坏。Bers等人还使用软件故障隔离技术来限制植入代码可访问的内存地址范围。代码安全检查无疑增加了系统的负担,问题的根源在于植入的可扩展代码对核心不可信。为了减轻系统的负担,需要假设植入的代码是安全可信的。

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

类似于文献中提到的JOS(Java OperaTIngSystem)技术,该技术允许开发人员用Java语言编写系统模块,如TCP/IP协议栈或文件系统。这些模块被编译成类文件,并在系统运行时由JVM(Java VirtualMachine)动态加载。1996年,廖等人提出在微内核中插入JVM,使用户可以编写Java程序来扩展内核功能。

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

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

许多桌面操作系统,如Linux,提供LKM(可加载内核模块)来动态扩展内核。当Module安装在内核中时,它是内核的一部分,并且全速运行,没有实时安全检测。在嵌入式Linux系统中,LKM的主要问题是存储模块需要占用额外的空间和加载模块的安全性。该模块的安全问题可以通过软件保护技术来解决。

Oikawa等人在1996年提出了类似于LKM的动态核心模块(DKMs)技术。像LKM一样,DKMs存储为文件,并且可以在系统运行期间动态加载和卸载。DKMs由用户级的DKM服务器管理,而不是由内核管理。当核心需要一个模块时,DKM服务器负责加载对应的DKM;当核心内存资源短缺时,DKM服务器负责卸载未使用的DKM。缺点是所有的DKM都是存储的。

在本地系统上的,占用了大量宝贵的存储空间。

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

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

  2、其他相关研究

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

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

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

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

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

  与内核空间功能扩展相比,在用户空间扩展安全性更强,对Linux操作系统和应用程序更加透明。魏东林、卢正鼎等人通过在用户空间跟踪截获系统调用并更改系统调用的行为来达到扩展操作系统功能的目的。

  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在嵌入式系统上的应用。

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

  以上是尚观教育小编给同学们总结的嵌入式Linux系统中内核抽象的动态扩展技术,同学们有什么不懂的问题记得随时与小编沟通哦。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。