基于嵌入式Linux可加载内核模块的研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:haose1989
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着嵌入式系统越来越广泛的应用,Linux由于其自身的特点成为最受欢迎的嵌入式操作系统之一。该文阐述了Linux在嵌入式系统中的应用,重点介绍了Linux可加载内核模块机制的基本原理和特点,以及编写和加载内核模块基本方法。
  关键词:嵌入式Linux内核;可加载
  中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)26-1759-02
  
  1 引言
  
  一直以来,Linux操作系统以其开源性、稳定性、安全性和漏洞少等优良性能受到很多专业技术人员和公司的好评。而随着嵌入式技术的发展及广泛应用,Linux也由于其体积小、易于裁减、运行速度高和网络性能良好等优点成为嵌入式系统常用的操作系统之一,其中它的可加载内核模块机制体现出了强大的功能。
  
  2 Linux在嵌入式系统中的应用
  
  嵌入式系统(Embedded Systems)是计算机的一种应用形式,它是指“以具体应用为中心,以计算机和信息技术的发展为基础,将用户所需的特点功能嵌入到产片、装置或大型系统中,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统”。
  正是由于嵌入式系统的应用特点,它对操作系统的要求并不同于一般的计算机系统。首先不同的宿主设备对嵌入式系统的要求都不一样,因此嵌入式操作系统的功能要足够强大,才能应付各种各样不同场合的使用。同时由于系统资源非常有限,嵌入式操作系统又必须满足精简高效、占用资源少、响应速度快的特点。对于设备控制系统,还有很重要的一个要求就是安全性和稳定性要好,不允许在控制过程中经常出现故障。
  作为真正的32位操作系统,Linux能够很好地满足嵌入式系统的需要。Linux的可加载内核模块机制,支持设计人员可以根据不同嵌入式系统的需要,在不同的场合动态地选择不同功能的内核模块进行加载,内核可控制在100KB以内,这样既可实现对不同需求的支持,又可以一定程度上保证系统内核的精简,更好地实现操作系统功能专一而高效、高度节约资源、启动速度快、节省开发成本等目标。
  
  3 Linux可加载内核模块机制
  
  内核是Linux操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
  当Linux系统要实现对某种特定功能的支持时,可以把相应部分编译到内核中,也可以把该部分编译成模块。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,但是会使内核变得庞大起来。如果编译成模块,就会生成对应的.ko文件,在需要使用时进行动态加载,这样就不会使内核过分庞大。所以通常将经常使用的部分直接编译到内核中,偶尔需要使用的部分作为动态可加载内核模块使用。
  使用这种可加载内核模块机制,内核模块在需要时才加载到内核空间,不需要的时候可以释放内存资源,这样可以使内核更小更精简,从而避免占据太多的内核空间。而当需要添加内核功能时,只需要添加编译模块代码就可以了,不需要对基本内核进行频繁的改动。
  对这种可加载内核模块的访问主要是通过内核中的一个全局变量module_list实现的。每当用户将一个模块加载到内核中时,这个模块就会被添加到由module_list形成的链表中。每当内核要使用到这个模块所提供的函数时,内核就会检索这个链表,找到相应的模块中的函数或变量。内核将资源登记在符号表中,模块可通过符号表使用核心资源。当模块加载入内核时,系统将新加载模块提供的资源和符号加到内核符号表中,通过这种通信机制,模块之间可以实现资源的互相访问。
  
  4 内核模块的实现
  
  4.1 内核模块的编写
  一个内核模块至少要包含两个函数:用于加载时的模块初始化函数init_module()和用于卸載的模块结束函数cleanup_module()。实际应用中这两个函数可以用任意函数名代替,但是必须在函数定义后用宏module_init()和module_exit()进行声明,如:
  static int __init lcd_init(void){…}
  static void __exit lcd_exit(void){…}
  module_init(lcd_init );
  module_exit(lcd_exit);
  4.2 内核模块的编译
  编译时需要通过一个Makefile文件来完成,其具体内容可参考下面生成lcd.ko的Makefile文件:
  obj -m =lcd.ko
  KDIR :=/usr/arc/linux-2.6
  PWD :=$(shell pwd)
  Default:
  $(MAKE) -C $(KDIR)SUBDIRS=$(PWD) modules
  Makefile文件必须跟目标源文件放在同一个目录下,执行Make命令来完成该模块的编译,生成相应的.ko文件。
  4.3 内核模块的加载和卸载
  当需要使用某个模块的功能时,可以使用insmod命令进行加载。此时模块从用户态进入到内核态,insmod程序找到要求加载的内核模块,首先将其输出符号在内核中的相应地址进行修改,然后为新模块申请足够的内核内存空间,并更新其符号表,然后内核调用模块的初始化函数完成模块的安装。
  模块使用完后可以用rmmod命令卸载,此模块占用的内核内存将被回收。但是内核中其他部分还在使用的模块是不能被卸载的。
  
  5 结束语
  
  对于Linux的可加载内核模块机制及应用,涉及到的知识非常广泛,并不是这里简单的几句话就能够深入分析清楚。本文在介绍了Linux内核机制的基本原理的基础上,简单说明了内核模块的编写和编译过程,供广大爱好者为更好地进一步学习Linux打下良好的基础。
  
  参考文献:
  [1] 陈莉君.深入分析Linux源码[M].北京:中国电力出版社,2004.
  [2] 李善平,刘文峰.Linux与嵌入式系统[M].北京:清华大学出版社,2003.
  [3] 周应华.对Linux可加载内核模块应用框架的研究[J].计算机系统应用,2007,(4):69-72,76.
  [4] 陈刚,卢显良.基于Linux-2.6内核模块程序设计[J].福建电脑,2004,(6):16-17.
  [5] 刘天华,陈枭.Linux可加载内核模块机制的研究与应用[J].微计算机信息,2007,(20):55-56,134.
其他文献
摘要:ERP系统近年来在各行各业得到越来越广泛的应用,主要针对物流行业的具体特点,论述了ERP模块化系统开发的实施过程,物流行业中的ERP目前的应用现状,以及物流企业中ERP系统开发的关键点等,其结果能充分的发挥ERP系统在物流企业中的整体管理效益,使得企业物流,资金流,工作流,信息流能够很好的整合为一体。最后简要谈谈ERP在钢铁物流中的应用。  关键词:ERP系统;物流管理;钢铁物流  中图分类
摘要:本文首先讨论了面向方面程序设计,接着分析了XML测试用例模型、基于XML的异质多数据库集成系统系统功能,最后研究了数据集成的总体架构。因此本文具有深刻的理论意义和广泛的实际应用。  关键词:XML;XML测试用例;面向方面程序;数据集成  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)14-20869-01    1 面向方面程序设计    面向方面程序设计(A
摘要:因特网的不断发展使得XML成为Web上数据交换和表示的标准格式,但是大量的商业数据仍然存储在关系数据库中。因此必须将关系数据发布成XML文档进行传输。提出了一种基于分层框架结构的关系数据库向XML的映射方法,并在分层结构中定义了一种XML模式图作为XML的概念模型。得到的XML文档能够很好地反映关系数据库的语义和各种约束并且没有引入数据冗余。初步实验结果表明方法具有较高的效率和较好的准确性。
摘要:文章简单介绍了ARP协议,分析了ARP攻击的原理,从机制上说明了流行的防治方法的有效性。提出交换机双向绑定是目前较全面又持久的解决方案,它是由网络的管理和硬件的配置共同实现的。  关键词:网络安全;ARP攻击;双向绑定  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)36-2611-01  Schemes for ARP Disease Solving  YAN
摘要:本文结合作者设计制作多媒体课件的经验体会,讨论了利用Authorware制作多媒体课件过程中遇到的一些问题,以实例制作方式详细介绍了解决这些问题的方法和技巧,旨在提高制作多媒体课件水平。  关键词:Authorware;课件;应用  中图分类号:TP37 文献标识码:A文章编号:1009-3044(2008)15-20000-00    The Application of Authorwa
摘要:WEB信息系统交付一组复杂的内容和功能给大量的终端用户,使与服务器连接的所有客户机都能共享使用WEB信息系统提供的内容和功能。WEB信息系统测试通常包括:功能测试、性能测试、可用性测试、安全性测试、系统兼容性测试和接口测试。  关键词:WEB信息系统;测试  中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)04-1004-02  WEB Information S
摘要:从世界范围来看,无论东方还是西方,13世纪中叶至19世纪是女性受压迫最深重的时代,这一时段的女性开始反抗压迫、追求爱情、萌生独立意识。在这一阶段的文学作品中,反映女性生活的叙事文学更好地体现了丰富的女性形象。本文将从莎士比亚戏剧和元明清戏曲文学作品中女性形象的同质与异质进行探讨。  关键词:中西文学作品 女性形象 同质 异质  一、前言  文学大师莎士比亚在他的戏剧中以人物形象的刻画著称,在
摘要:短信的发送需要GSM模块和处理器协作完成,GSM模块与ARM处理器通过串口连接,处理器向串口发送接收AT命令与GSM模块形成通信回路。中文短信的发送采用PDU模式,根据PDU模式标准形成PDU发送包,实现短信发送。本文根据无线电话项目的短信发送模块的实际开发流程编写,本文内容通过测试。  关键词:GSM;SMS;AT命令;PDU   中图分类号:TN929文献标识码:A文章编号:1009-3
摘要:本文首先分别介绍了IPSEC和NAT-PT的基本原理和工作方式,然后,作者试图说明两者同时使用会出现的矛盾,提出了一种新的改进策略。多层安全机制的协议改进策略是针对翻译机制的安全问题提出的一种改进策略,该策略中包含IPSEC机制和SSL/TLS安全机制。  关键词:IPSEC;NAT-PT;SSL/TLS安全机制  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)
纵观我国古代语文教育发展史可以发现,不论是在科举盛行的封建社会,还是在自由民主的现代社会,作文都是衡量语文学习的一把重要标尺。“一篇文章定终身”可谓是古代社会的真实写照,作文也因此受到人们的高度重视。因此,古代文人终身致力于探索写作方法技巧,其著作中保留着珍贵的理论成果。清代教育家唐彪和王筠都曾在其论著中阐述他们的教学思想,其中同异皆存。唐彪受制于八股取士的时代背景,将学习的最终目的定为考取功名,