[发明专利]一种基于微核操作系统的应用程序动态加载方法无效
申请号: | 200810003717.6 | 申请日: | 2008-01-15 |
公开(公告)号: | CN101470619A | 公开(公告)日: | 2009-07-01 |
发明(设计)人: | 张木军;赵俊化;蓝彩萍;胡胜发 | 申请(专利权)人: | 安凯(广州)软件技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/44 |
代理公司: | 广州知友专利商标代理有限公司 | 代理人: | 宣国华 |
地址: | 510630广东省广州市天河*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 操作系统 应用程序 动态 加载 方法 | ||
技术领域
本发明涉及一种基于微核操作系统的应用程序动态加载方法。
背景技术
近年来,随着技术的不断进步,手机、PDA、MP3、PMP等移动手持设备上增加了越来越多的功能。对于开发人员来说,每增加一个功能,就意味着增加若干的应用程序。而移动手持式设备中所有的应用程序都要通过内存来执行。因此,如何最大程度地合理利用内存就成为软件开发人员的关键问题。
目前已有的技术方案是:
PC智能操作系统方面:Windows上有微软的基于PE格式的动态模块方案(如dll动态链接库,exe可执行文件);Unix/Linux上有公开规范的基于ELF格式动态共享方案(如so动态共享文件,bin可执行文件)。
嵌入式智能操作系统如WinCE,ulinux也实现了模块的动态加载技术。
以上动态加载方法一个共性是都需要基于支持MMU(Memory ManagementUnit,内存管理部件)的操作系统,而这是普通微核操作系统(包括nucleus在内)所不具备的。
目前在移动手持设备中较为通用的微核操作系统(nucleus/ucos/threadx…)内核本身只能静态加载所有的应用程序。静态加载应用程序会导致两个严重的后果:第一,应用程序越来越多,内存的需求越来越大,也因此导致了终端产品的成本越来越高;第二,一旦某个应用需要改动,就需要对整个系统重新进行调试和测试,极大地延长了产品的开发周期。
发明内容
为克服上述不足,本发明的目的在于提供一种基于微核操作系统的应用程序动态加载方法,通过在微核操作系统(nucleus/ucos/threadx…)中引入动态加载方法,对应用程序实现动态加载。
为完成上述发明目的,本发明采取的技术方案是:
一种基于微核操作系统的应用程序动态加载方法,它主要包括以下步骤:
a.解析目标程序的格式,计算并分配该模块中代码段和数据段所需要的内存大小;
b.拷贝代码段和数据段到该内存中;
c.根据目标文件的重定位信息,确定需要修改地址的符号;
d.从符号表和字符串表查出需要修改的符号的原始偏移;
e.计算该符号的实际运行地址;
f.将符号的实际运行地址填充到目标程序。
其中,步骤a在对目标程序的解析过程中,可以将目标程序分成若干段:代码段、数据段等。拷贝到内存时,段内的数据在内存空间上必须是连续的;而段与段之间在内存空间上可以不连续。这种处理方式可以减少应用程序对内存空间尤其是大块连续的内存空间的需求。另外,当系统的其他应用程序再次调用已经加载了的子程序时,如果该子程序属于全局模块,那么代码段和数据段均可以共享。
对于多模块的应用程序的动态加载,上述的步骤d,步骤e和步骤f可以延迟到程序运行时才执行,不需要在程序的加载过程中就执行。
而应用程序的卸载只需要释放在该程序加载过程时分配的资源和模块的映像空间内存就可以了。
本发明的应用,大大减少了系统对内存的需求,无需基于有虚拟内存技术的操作系统支持。此外,每个应用程序也只需关注自身的开发和测试,升级后的应用程序直接覆盖原文件即可启用;而不同的应用程序间仅通过接口来耦合,有效地提高了开发效率,降低了开发的复杂度。
附图说明
图1为应用程序动态加载过程的示意图。
具体实施方式
下面结合图1对本发明的实现过程做具体阐述。
假设模块的源码为A.c:
int gb_data1=9;
int gb_bss1;
int myfunc1()
{
gb_bss1=6;
return gb_data1+gb_bss1;
}
int vme_main()
{
return myfunc1();
}
使用GCC编译器将上述源码编译成ELF目标模块A.so。
以下是目标程序的加载过程:
a.解析目标程序的格式,计算并分配该模块中代码段和数据段所需要的内存大小;
(1)首先解析目标模块A.so文件,分析出它的节表分布信息:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安凯(广州)软件技术有限公司,未经安凯(广州)软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810003717.6/2.html,转载请声明来源钻瓜专利网。