一种嵌入式系统中可执行文件的压缩及其加载方法技术方案

技术编号:2867498 阅读:209 留言:0更新日期:2012-04-11 18:40
一种嵌入式系统中可执行文件的压缩及其加载方法,其包括以下步骤:    a)对原有结构的可执行文件使用可执行文件处理方法进行处理,修改该可执行文件的文件头中的文件标识符,保持其它数据不变,用以表示该文件为采用压缩的可执行文件,产生压缩后的可执行文件;    b)使用以下可执行文件加载方法加载运行所述压缩后的可执行文件:    b1)进行识别所述压缩后的可执行文件的文件头部;    b2)如果识别出当前加载的可执行文件为所述压缩后的可执行文件,则进入加载压缩后可执行文件的流程;    b3)记录完成数据解压缩的各分支信息,并对经过压缩后的各个数据段与代码段进行解压缩;    b4)根据各个数据段与代码段的相关信息,将解压缩后的各段数据按照系统正常加载可执行文件的规则放置在正确的内存位置中。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术方法涉及一种可执行文件的压缩以及加载方法,特别是涉及一种适用于嵌入式操作系统中的可执行文件的压缩以及压缩后的可执行文件的加载方法。
技术介绍
在计算机系统中,为了减少文件所占用的存储空间,通常会采用压缩的方式存储文件,对文件的压缩可以分为透明压缩与不透明压缩两种。所谓不透明压缩是最常采用的压缩方式,该方式使用特定的压缩工具(程序),采用特定的压缩算法,对源文件进行压缩处理后,获得占用空间较小的被压缩文件;当需要得到源文件的时候,则采用对应的工具与算法对被压缩文件进行解压缩处理而得到源文件。由于操作系统以及系统中的其它程序不能直接使用被压缩后的文件,因此这种压缩方法对于操作系统或者使用者而言,是不透明的。所谓透明压缩,是指通过采取一定的技术手段,既达到了对数据压缩以减少存储空间占用的效果,同时操作系统以及使用者又能够不受影响的存取这些数据。为了实现透明压缩,根据压缩对象的不同,通常又会采用如下三种方式一是数据文件的透明压缩。数据文件一般而言是指系统中除了可执行文件之外的文件。总体而言,数据文件一般会被系统中的相关程序进行打开、读、写、关闭等操作。相应的,对于数据文件的透明压缩,通常采用修改系统动态执行库中这些相关操作,在操作过程中增加压缩/解压缩的处理,这样就可以完成对数据文件的透明压缩/解压缩处理。二是可执行文件的透明压缩。由于可执行文件是系统可以加载运行的,而操作系统的加载器需要可执行文件的文件头以及执行段的加载信息等内容才能完成加载,因此不能采用与数据文件相同的透明压缩方式。现有技术的可执行文件的结构如图1所示的,其依次包括一文件头部、一程序段描述表、各程序段1~N;目前最常采用的可执行文件透明压缩方式,是在压缩处理的时候,在可执行文件的前部插入自解压代码,使压缩后的可执行文件成为一个自解压的文件,在可执行文件加载的时候,先执行文件前部的自解压代码,完成目标可执行文件的解压缩,当目标可执行文件被完整的解压缩后,再由系统的可执行文件加载器进行加载运行,从而达到透明压缩的目的。三是文件系统的压缩。这种方法通过对文件系统本身的压缩来实现压缩数据的目的,通常采用在操作系统的文件系统与存储设备驱动之间增加一个压缩驱动的层次。这样,在文件系统进行数据存取操作的时候,该压缩驱动程序同时完成了对数据的压缩/解压缩操作,从而实现了对操作性以及使用者的透明性。由于嵌入式系统的规模较小,存储容量有限,嵌入式系统一般都会对数据进行压缩,以减少嵌入式系统对存储空间的总需求,从而降低整个系统的成本。对于嵌入式系统来说,由于系统规模比较小,操作界面简单甚至没有操作界面,因此,系统中需要的压缩方式应该是不需要交互操作的透明压缩方式。现有技术的可执行文件的加载方法如图4所示的,在程序开始后,首先判断该可执行文件的类型;然后,建立相应的内存结构数据,拷贝进程资源;产生新的应用程序进程;最后,该应用程序被调度执行后,结束该流程。但该加载过程无法用于对压缩的可执行文件进行加载。目前嵌入式系统中采用的数据压缩方式,主要有使用支持数据压缩的文件系统与直接压缩可执行文件两种方式。采用这两种方式实现数据压缩,存在以下的主要问题一.如果在嵌入式系统中使用前述的可执行文件的透明方式,则由于该可执行文件在运行之前需要将原来的可执行文件临时解压缩到存储介质中。这种方式对于存储介质容量有限的嵌入式系统而言,不但没有减少系统运行需要的总的最小存储介质容量,反而增加了存放压缩后文件存放所需要的存储空间。所以实际上这种方式是很不经济的。二.压缩文件系统由于需要在整个文件系统操作中增加压缩驱动层的处理,因此不可避免将会对系统的性能产生影响。在采用压缩文件系统的嵌入式系统中,所有的文件数据操作都会经过压缩驱动层的处理,由此导致系统产生较大的额外开销,这在系统处理能力有限的嵌入式系统中,影响尤其明显。三.已有的压缩文件系统存在一定的介质相关性,而实际的嵌入式系统的构建方式千差万别,不一定可以在所有的嵌入式系统存储配置情况下,都找到满足要求的压缩文件系统。四.压缩文件系统的压缩率不高。为了达到更高的数据压缩率,必然需要对更大容量的相关数据进行压缩,而压缩更多的相关数据又会导致数据操作的延时增大。为了平衡性能与效率,一般压缩文件系统的压缩效率都不是很高。五.对于大多数的嵌入式系统而言,为了完成特定的专用功能,系统中只需要完成该功能的应用程序能够运行即可,因此在系统中不存在很多其他的数据文件。在这样的系统中,实际上只有可执行文件具有压缩的需求。由此,现有技术存在较大缺陷,而有待于加以改进。
技术实现思路
本专利技术方法的目的是针对上述现有技术的缺陷,提出,适合于嵌入式系统对其使用的可执行文件进行压缩以及实现对压缩后的可执行文件的加载,通过对压缩后的可执行文件的文件头部的标识类型,减少嵌入式系统所需要的存储介质的容量,达到降低成本的目的,同时,通过改进后的可执行文件的文件压缩以及加载方式,达到提高采用压缩文件的嵌入式系统的运行效率,降低系统额外资源开销;通过本专利技术方法中的压缩可执行文件的加载方式,可以使各种存储介质配置方式的嵌入式单板均能对可执行文件进行压缩,使用范围更宽。本专利技术的技术方案如下,其包括以下步骤a)对原有结构的可执行文件使用可执行文件处理方法进行处理,修改该可执行文件的文件头中的文件标识符,保持其它数据不变,用以表示该文件为采用压缩的可执行文件,产生压缩后的可执行文件;b)使用以下可执行文件加载方法加载运行所述压缩后的可执行文件b1)进行识别所述压缩后的可执行文件的文件头部;b2)如果识别出当前加载的可执行文件为所述压缩后的可执行文件,则进入加载压缩后可执行文件的流程;b3)记录完成数据解压缩的各分支信息,并对经过压缩后的各个数据段与代码段进行解压缩;b4)根据各个数据段与代码段的相关信息,将解压缩后的各段数据按照系统正常加载可执行文件的规则放置在正确的内存位置中。所述的压缩及其加载方法,其中,所述步骤a)还包括以下步骤a1)对于可执行文件的数据段与代码段,保持其重定位的信息在程序段描述表项中,同时在程序段描述表项中增加该段压缩数据的相关信息;a2)各程序段数据各自按照压缩算法进行压缩;a3)将压缩后的程序段组装成为一个完整的文件。所述的压缩及其加载方法,其中,所述可执行文件的加载方法可加载普通可执行文件。本专利技术所提供的,采用对可执行文件进行压缩,并将压缩方法等信息记录入所述程序段描述表中,然后通过对文件头部加以标识记录该可执行文件的是否经过压缩,所述嵌入式系统根据该文件头部的标识相应加载该经过压缩后的可执行文件,并对对应部分进行解压执行;本专利技术方法因此具有如下有益效果一、采用本专利技术方法的可执行文件压缩及上载方法后,由于该嵌入式系统所需要的存储介质空间减少,系统硬件所预安装的存储介质量无需太高,可以降低嵌入式系统的成本;二、用本专利技术方法压缩与加载可执行文件,由于不需要把压缩后的可执行文件解压缩成完整的可执行文件后再加载,能够真正适应嵌入式系统的压缩需求;三、本专利技术方法一般只压缩嵌入式系统中体积最大的可执行文件,而不是对整个文件系统进行压缩,这样本专利技术方法与现有的压缩文件系统的方式相比,除了文件加载运行时以外,不会产生额外的系统开销,不会影响系统本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:朱佐亮芦东昕白英杰黄烨明杨新王晓东
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

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

1