[发明专利]应用程序可重定位加载的方法及地址重定位装置有效

专利信息
申请号: 200710080255.3 申请日: 2007-02-15
公开(公告)号: CN101246427A 公开(公告)日: 2008-08-20
发明(设计)人: 陈立勤 申请(专利权)人: 凌阳科技股份有限公司;北京北阳电子技术有限公司
主分类号: G06F9/445 分类号: G06F9/445;G06F12/08
代理公司: 北京德琦知识产权代理有限公司 代理人: 王一斌;王琦
地址: 台湾省新竹科*** 国省代码: 中国台湾;71
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 应用程序 定位 加载 方法 地址 装置
【说明书】:

技术领域

发明涉及应用程序加载技术,具体涉及一种应用程序可重定位加载的方法及相应的地址重定位装置。

背景技术

操作系统在启动应用程序之前需要加载应用程序,也就是为应用程序预先准备运行环境,包括为应用程序运行前准备内存环境。

在现有的嵌入式操作系统中,加载应用程序的方式主要有两种:

第一种是在没有硬件存储器管理单元(MMU,Memory ManagementUnit)或不使用硬件MMU的方式下,嵌入式操作系统以下列方式加载应用程序:

嵌入式操作系统与所有预先设定的应用线程编译连接在一起。操作系统在运行时,根据需要从自身启动各应用程序执行。所以,这种情况下,操作系统与应用程序统一运行在同一内存地址空间,应用程序的崩溃将导致整个系统的瘫痪。并且,所有应用程序必须事先设定完成,与操作系统一起编译,从而不能在现有正在运行的系统中动态增加新的应用程序。

嵌入式操作系统将应用程序加载到内存的固定地址。由于操作系统在运行时可以为所有应用程序分配的地址空间不可以预先确定,所以导致操作系统只能够指定一段特定的内存地址空间作为应用程序的加载空间,并且预留空间必须足够运行最大的应用程序,且一次只能够运行一个应用程序。

嵌入式操作系统动态加载应用程序到任意的内存地址空间。但是,由于应用程序的运行地址空间在编译时确定,所以为了能够将已经编译完成的应用程序加载到任意的内存地址空间运行,必须根据应用程序的符号信息对应用程序进行地址重定位。这就要求应用程序在编译阶段携带所有符号信息和地址重定位信息,操作系统才可以根据加载时的运行状况,动态分配内存,解析应用程序携带的符号信息和地址重定位信息进行加载。但是带有符号信息和地址重定位信息的应用程序将至少比无符号信息和地址重定位信息的应用程序文件的长度大10倍以上,从而增大了应用程序的代码尺寸,增加了操作系统在加载应用程序时的时间,最终影响了操作系统的运行速度。

第二种,在使用硬件MMU的方式下,嵌入式操作系统可以实现完善的应用程序加载方案。每一个应用程序都有自己独立的地址空间,因此应用程序在崩溃时不会危害操作系统的运行。但是以这种运行方式执行应用程序时,操作系统需要为每一个应用程序保存其运行页面对照表。例如,典型的x86系统中,一旦启动应用程序就需要分配至少三个页面的空间3×4k做页表空间,包括一个一级页表和二个二级页表,并且随着应用程序的运行,操作系统会不断地为应用程序分配各级页表。而在有些系统中,每一个页表可能由二个页面组成,所以需要为新的应用程序分配2×3×4k的地址空间做页表使用。由于硬件MMU的复杂性,页表的管理在操作系统的管理中也相当复杂,需要花费操作系统大量的运行时间维护页面对照表的完整性和一致性,从而使得对页表的管理减慢了操作系统运行的速度。在一些实时性要求很高的嵌入式系统应用中,将直接影响实际的嵌入式应用效果。

在常见的精简指令集计算机(RISC,Reduced Instruction Set Computer)体系结构中,内存的存取方式已经由页模式取代段模式。在经典的x86等复杂指令集计算机(CISC,Complex Instruction Set Computer)体系结构的中央处理单元(CPU,Central Processing Unit)中,存在有明显的段概念,需要预先知道段的设置,在编译应用程序或初始化应用程序时,需要对段寄存器进行赋值,这使得过程变得复杂。在代码执行过程中产生的代码和数据地址都需要与这些段寄存器共同产生实际的物理地址,使得代码段在物理内存中只能从一个段移到另一个段,而不是灵活的移动。

发明内容

有鉴于此,本发明提供一种应用程序重定位加载的方法,简化了应用程序的动态加载,使编译在同一地址的应用程序可以同时在操作系统上同时运行。

本发明提供一种支持应用程序可重定位加载的地址重定位装置,简化了应用程序的动态加载,使编译在同一地址的应用程序可以同时在操作系统上同时运行。

为达到上述目的,本发明实施例的技术方案是这样实现的:

一种应用程序可重定位加载的方法,包括:

将操作系统的内存起始地址和代码偏移保存到暂存式存储器一中;

调用应用程序,查询该应用程序的代码偏移及应用长度;

根据内存分配情况为该应用程序分配长度大于或等于所述应用长度的空闲内存;

为该应用程序创建进程控制块,保存所述空闲内存的起始地址、代码偏移及应用长度;

将该应用程序代码复制到所述空闲内存;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于凌阳科技股份有限公司;北京北阳电子技术有限公司,未经凌阳科技股份有限公司;北京北阳电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710080255.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top