一种基于linux内核ko模块的加载方法及装置制造方法及图纸

技术编号:36326352 阅读:12 留言:0更新日期:2023-01-14 17:34
本申请实施例提供了一种基于linux内核ko模块的加载方法及装置,该方法包括:在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;若该当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对该当前地址进行动态加载;在当前制式切换为其他制式时,通过动态释放接口对该当前制式下动态加载到物理内存中的代码段进行动态释放,可以解决相关技术中Linux内核ko模块的加载是将ko文件整体载入到内存空间中,如果ko版本较大会出现ko模块占用内存过多的问题,通过动态加载与动态释放,减少了ko模块的占用内存。内存。内存。

【技术实现步骤摘要】
一种基于linux内核ko模块的加载方法及装置


[0001]本申请实施例涉及通信领域,具体而言,涉及一种基于linux内核ko模块的加载方法及装置。

技术介绍

[0002]现有内核ko模块的加载技术是在Linux内核启动时完成对该ko中所有涉及的函数、变量相关汇编代码的重定位处理。目前Linux内核ko模块的加载都是整体载入到内存空间中,如果ko版本较大的情况下,会出现ko模块占用内存过多的情况。
[0003]针对相关技术中Linux内核ko模块的加载是将ko文件整体载入到内存空间中,如果ko版本较大会出现ko模块占用内存过多的问题,尚未提出解决方案。

技术实现思路

[0004]本申请实施例提供了一种基于linux内核ko模块的加载方法及装置,以至少解决相关技术中Linux内核ko模块的加载是将ko文件整体载入到内存空间中,如果ko版本较大会出现ko模块占用内存过多的问题。
[0005]根据本申请的一个实施例,提供了一种基于linux内核ko模块的加载方法,包括:
[0006]在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;
[0007]若所述当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载;
[0008]在当前制式切换为其他制式时,通过动态释放接口对所述当前制式下动态加载到物理内存中的代码段进行动态释放。
[0009]根据本申请的另一个实施例,还提供了一种基于linux内核ko模块的加载装置,包括:
[0010]检测模块,用于在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;
[0011]加载模块,用于若所述当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载;
[0012]第一释放模块,用于在当前制式切换为其他制式时,通过动态释放接口对所述当前制式下动态加载到物理内存中的代码段进行动态释放。
[0013]根据本申请的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0014]根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
[0015]本申请实施例,在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;若所述当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载;在当前制式切换为其他制式时,通过动态释放接口对所述当前制式下动态加载到物理内存中的代码段进行动态释放,可以解决相关技术中Linux内核ko模块的加载是将ko文件整体载入到内存空间中,如果ko版本较大会出现ko模块占用内存过多的问题,当前地址还未映射到物理地址上产生数据异常或者预取指令异常缺页时,进入到Linux内核的缺页异常处理流程中完成动态加载,在Linux内核中设置动态释放的接口,以达到内核ko模块不被卸载的情况下能够对动态加载到内存中的代码段进行动态释放的目的,通过动态加载与动态释放,减少了ko模块的占用内存。
附图说明
[0016]图1是本申请实施例的基于linux内核ko模块的加载方法的移动终端的硬件结构框图;
[0017]图2是根据本申请实施例的基于linux内核ko模块的加载方法的流程图;
[0018]图3是根据本实施例的基于Linux内核ko模块的动态加载的流程图;
[0019]图4是根据本实施例的ko动态加载缺页异常流程的示意图;
[0020]图5是根据本实施例的linux内核ko动态加载的释放流程图;
[0021]图6是根据本实施例的基于linux内核ko模块的加载装置的框图。
具体实施方式
[0022]下文中将参考附图并结合实施例来详细说明本申请的实施例。
[0023]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0024]本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的基于linux内核ko模块的加载方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0025]存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的基于linux内核ko模块的加载方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及业务链地址池切片处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0026]传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括
移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
[0027]在本实施例中提供了一种运行于上述移动终端或网络架构的基于linux内核ko模块的加载方法,应用于终端,所述终端通过双连接(Dual Connection,简称为DC)接入源区域的当前主节点MN小区与当前辅节点SN小区,图2是根据本申请实施例的基于linux内核ko模块的加载方法的流程图,如图2所示,该流程包括如下步骤:
[0028]步骤S202,在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;
[0029]步骤S204,若所述当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载;
[0030]步骤S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于linux内核ko模块的加载方法,其特征在于,包括:在linux内核的缺页异常处理流程中检测当前地址是否在动态加载地址范围之内;若所述当前地址在动态加载地址范围之内,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载;在当前制式切换为其他制式时,通过动态释放接口对所述当前制式下动态加载到物理内存中的代码段进行动态释放。2.根据权利要求1所述的方法,其特征在于,通过Linux内核的缺页异常处理流程对所述当前地址进行动态加载包括:在所述linux内核的缺页异常处理流程中新增对内核ko模块的代码段进行动态加载的动态加载流程;在所述动态加载流程中以第一预定大小的page对所述当前地址的代码段进行动态加载。3.根据权利要求2所述的方法,其特征在于,在所述动态加载流程中以第一预定大小的page对所述当前地址的代码段进行动态加载包括:若确定引起异常的所述当前地址在动态加载的链接地址范围之内,判断所述当前地址对应的page是否已映射到内核的页表项中;在判断结果为是的情况下,将所述当前地址对应的内核页表项同步到当前进程的页表项中,完成对所述当前地址的动态加载;在判断结果为否的情况下,若所述当前地址对应的page正在进行映射,控制当前动态加载流程进入阻塞等待,待所述page的其它动态加载流程完成映射后唤醒所述当前动态加载流程之后,将所述当前地址对应的内核页表项同步到所述当前进程的页表项中,完成对所述当前地址的动态加载;若所述当前地址对应的page不是正在进行映射,根据所述当前地址计算出所述page在ko代码段中的page页偏移,并根据所述page页偏移对所述当前地址进行动态加载。4.根据权利要求3所述的方法,其特征在于,根据所述page页偏移对所述当前地址进行动态加载包括:将所述page的状态标记设置为正在进行映射,根据所述page页偏移开始进行加载,将所述page页偏移读取出的数据存储在申请的临时内存空间中,并同时申请第二预定大小的内存作为记录动态加载页的临时存储内存地址和所述当前地址的内存管理节点,将所述内存管理节点添加到链表中;将所述当前地址映射到所述临时内存空间对应的物理地址上,并将所述当前地址对应的内核页表项同步到所述当前进程的页表项中,同时进行无效cache和分支目标缓冲BTB的操作;若检测到所述等待队列不为空,唤醒所述阻塞等待的...

【专利技术属性】
技术研发人员:彭磊
申请(专利权)人:深圳市中兴微电子技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1