CN1841316A - 基于动态模块的软件处理系统的实现方法和装置 - Google Patents
基于动态模块的软件处理系统的实现方法和装置 Download PDFInfo
- Publication number
- CN1841316A CN1841316A CN 200510059348 CN200510059348A CN1841316A CN 1841316 A CN1841316 A CN 1841316A CN 200510059348 CN200510059348 CN 200510059348 CN 200510059348 A CN200510059348 A CN 200510059348A CN 1841316 A CN1841316 A CN 1841316A
- Authority
- CN
- China
- Prior art keywords
- dynamic module
- module
- ultimate system
- ultimate
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于动态模块的软件处理系统的实现方法和装置。本发明所述方法包括:为基本系统设置标准应用程序接口;基于所述标准应用程序接口建立相应的动态模块;将所述动态模块加载到基本系统中,生成相应的软件处理系统。本发明所述装置包括:动态模块和基本系统。本发明需要很少的系统资源,不但可以作为一种资源受限系统软件模块的通用发布方式,而且可以作为嵌入式系统或者其他资源受限系统的骨架系统的重要组成部分。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种基于动态模块的软件处理系统的实现方法和装置。
背景技术
动态模块是实现一个相对独立的功能的软件部件的发布形式,是一种延迟链接技术,是实现软件部件独立发布的一种重要手段。其原理为:将主程序中的一部分单独划分出来,构成具有特定功能的动态模块。在不需要动态模块发挥作用时,将其从主程序中分离出去,等需要动态模块发挥作用时再将其和主程序链接,从而达到降低主程序规模,增程序灵活性等目的。
通过动态模块这种实现方法构成的整个应用软件不需要同时进行开发和调测,只需要对每个独立模块单独进行开发和发布,然后将每个独立模块进行简单地调试和组装,就可以构成整个最终应用程序。在应用软件变得越来越庞大的今天,这是一种非常有用的手段。
现有技术当中比较简单的动态模块实现方法有微软的动态连接库和Unix(一种多用户的计算机操作系统)的动态库技术。这两种方法的主要特点为:将一些需要反复使用的公用模块预先编译成目标文件,并将编译好的目标文件保存在“库”中,当用户程序需要使用“库”中的公用模块时,通过连接器将″库″中的公用模块的目标文件和用户程序的目标文件链接起来,然后将公用模块和用户程序一起运行实现相应的功能。
所述微软的动态连接库和Unix的动态库技术方法的主要缺点为:公用模块是保存在系统内部的一个“库”中,只是简单地把公共模块链接的时间后延了,实现了公用模块的动态加载,但不能对公用模块实现组件级的发布。
现有技术当中另一种动态模块实现方法是Linux(一种免费的Unix型操作系统)下的LKM(Linux内核模块)方法。
LKM(Linux内核模块)是一些可以让Linux内核在需要时载入和执行的代码,在不需要时LKM可以由操作系统卸载。所有LKM都有入口函数和退出函数,在编译Linux内核的时候,Linux内核中非必须的功能不参与内核的编译,而被独立封装成LKM。在需要调用LKM时,LKM被动态链接到内核中,然后,由加载进程运行其激活函数,激活LKM功能。在不需要该模块时,又可以通过卸载进程调用LKM的去激活函数,终止其功能,并使内核还原到原来的状态,LKM模块编译和运行时的原理图如图1所示。
所述LKM方法允许LKM模块被动态加载到目标系统并重定位后,进行激活和反激活,从而使LKM模可以自行控制自己的生命周期,LKM模块变得更智能。但LKM仍是一种比较简单的动态模块解决方案。
所述LKM方法的主要缺点为:
1、LKM模块只能与特定的Linux内核绑定,作为该内核的一个附属,不能作为完整软件部件独立地进行发布;
2、LKM模块只能在运行时被加载,没有提供整合的持久性支持(例如在系统重启动的时候保持LKM模块继续有效)。
现有技术当中还有另外一种动态模块实现方法是进程。
进程是可并发执行的程序,当你运行一个程序,你就启动了一个或多个进程。进程可以分为系统进程和用户进程,进程是操作系统进行资源分配的单位。如果把整个操作系统和上面运行的程序看作一个应用,进程就是其中的一个模块。进程是一种高层次的动态模块技术,也是一种很好的发布机制,而且在不同软件部件间实现了很好的隔离。进程通常运行在特定的虚拟地址空间内,占用整个地址空间。进程通过系统调用与操作系统内核或者其他进程发生作用,如图2所示。
所述进程方法的缺点为:进程需要占用很多的系统资源,在一些资源受限的系统,例如很多嵌入式系统中,很难直接应用。因此,进程方法的效率较低,不能在资源紧张的系统中使用。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种基于动态模块的软件处理系统的实现方法和装置。本发明需要很少的系统资源,不但可以作为一种资源受限系统软件模块的通用发布方式,而且可以作为嵌入式系统或者其他资源受限系统的骨架系统的重要组成部分。
本发明的目的是通过以下技术方案实现的:
一种基于动态模块的软件处理系统的实现方法,包括:
A、为基本系统设置标准应用程序接口;
B、基于所述标准应用程序接口建立相应的动态模块;
C、将所述动态模块加载到基本系统中,生成相应的软件处理系统。
所述的步骤A还包括:
基本系统的标准应用程序接口的符号的地址存储在基本系统符号数据库中。
所述的步骤B进一步包括:
开发者根据所述标准应用程序接口中的函数和变量,用高级语言建立对基本系统具有特定功能的动态模块。
所述的步骤C进一步包括:
C1、用签名工具对所述动态模块进行数字签名;
C2、将进行了数字签名的动态模块加载到基本系统中,并利用该动态模块对基本系统进行相应的处理。
所述的步骤C1进一步包括:
C11、选定一种签名算法;
C12、用所述选定的签名算法生成一对密钥,将公钥提供给用户,私钥自己保存;
C13、用所述私钥对所述动态模块的目标文件进行数字签名。
所述的步骤C2进一步包括:
C21、基本系统对所述加载的动态模块进行数字签名校验;
C22、将通过了数字签名校验的动态模块存入到基本系统中的非易失存储器中;
C23、将所述存储在非易失存储器中的动态模块进行重定位、激活操作,利用该动态模块对基本系统进行相应的处理。
所述的步骤C21进一步包括:
基本系统判断用户导入到基本系统中的公匙和动态模块中的私匙的对应关系,如果所述公匙和所述私匙相对应,则动态模块通过数字签名校验。
所述的步骤C23进一步包括:
利用所述动态模块中的激活函数激活该动态模块,并利用该动态模块对基本系统进行相应的处理。
一种基于动态模块的软件处理系统的实现装置,包括:动态模块和基本系统,
所述的动态模块:用于通过调用基本系统的标准应用程序接口中的函数和变量,对基本系统实现特定的管理功能;
所述基本系统:用于加载所述动态模块,并对该动态模块进行数字签名校验、固化、重定位和激活,利用该动态模块对基本系统进行相应的处理。
所述的动态模块包括:
调用标准应用程序接口模块:用于调用基本系统的标准应用程序接口中的函数和变量;
数字签名模块:包含根据所选择的签名算法而生成的私匙,用于根据所述私匙对基本系统中的公匙进行匹配检验。
所述的基本系统包括:
校验模块:包含用户导入到基本系统中的公匙,用于根据所述公匙和数字签名模块中的私匙,对加载到基本系统中的动态模块进行数字签名校验;
非易失存储器:用于存储通过了数字签名校验的动态模块;
基本系统符号数据库:用于存储基本系统的标准应用程序接口的符号的地址和非易失存储器中的动态模块中的指定符号;
激活模块:用于激活存储在非易失存储器中的动态模块。
上述本发明提供的技术方案可以看出,利用本发明所述方法,不但解决了现有技术中动态连接库方法不能实现组件级发布、LKM方法对基本系统依赖过多、进程方法对系统资源要求过多等问题,而且实现了对动态模块进行校验,并且通过固化手段解决了动态模块的持久性问题,使动态模块可以在系统重新启动后仍然有效。本发明需要很少的系统资源,可以作为一种资源受限系统软件模块的通用发布方式,也可以作为嵌入式系统或者其他资源受限系统的骨架系统的重要组成部分。
附图说明
图1为现有技术中LKM模块编译和运行时的原理图;
图2现有技术中进程与操作系统内核或者其他进程发生作用时的原理图;
图3为本发明所述方法的原理图;
图4为本发明所述方法的具体处理流程图;
图5为本发明所述装置的具体结构图。
具体实施方式
本发明提供了一种基于动态模块的软件处理系统的实现方法和装置。
下面我们结合附图来详细描述本发明所述方法,本发明所述方法的原理如图3所示。其基本原理为:
基本系统对外提供一套API(应用程序接口)标准,开发人员按照这套API标准开发动态模块,然后用签名工具对动态模块的目标文件进行签名,并形成发布包。在动态模块加载到基本系统后,先对动态模块进行数字签名校验,然后将通过了数字签名校验的动态模块存于基本系统中的非易失存储器中,再对动态模块进行重定位,将动态模块中的指定符号加入基本系统符号数据库中,最后基本系统通过调用动态模块中的激活函数激活动态模块,使动态模块的功能生效。
本发明所述方法的具体处理流程如图4所示,包括如下步骤:
步骤4-1、根据基本系统标准API建立动态模块。
基本系统是整个动态模块应用的核心部分,基本系统对外提供一套API标准,这套标准在一定的范围内保持不变,只要开发人员开发的动态模块符合这套API标准,基本系统就可以接受该动态模块。
基本系统标准API的符号的符号地址存储在基本系统符号数据库当中。基本系统符号数据库可以通过两种方法来建立。
第一种方法是:在基本系统编译完成后,编译器会生成所有外部符号的符号表,然后从该符号表中过滤出标准API的符号,加载到基本系统中,就可以建立基本系统符号数据库。
第二种方法是:在基本系统中定义个数组结构,其中包含所有标准API符号的名称,这样在基本系统编译完成后,就可以直接在基本系统中获得基本系统符号数据库。
开发人员可以按照基本系统的标准API,用高级软件语言,例如C,Pascal,开发一个对基本系统具有特定管理功能的动态模块。
步骤4-2、将动态模块编译成目标文件。
开发人员用编译工具将开发出来的动态模块编译成目标文件,目标文件是动态模块的二进制代码形式。
步骤4-3、用签名工具对目标文件进行数字签名。
数字签名的基本原理为:目前在软件业有很多标准的签名算法。在基本系统开发的时候,每个动态模块开发商可以用选定的签名算法生成一对密钥,然后把公钥提供给用户,私钥自己保存,每次开发出一个新的部件,就用私钥对部件进行签名,并将部件形成开发包发布出去。公钥则由基本系统提供商或者用户导入到基本系统中。当部件被加载到系统中时,基本系统就可以用公钥对部件进行校验,以便确认部件对系统无害。
开发人员可以根据选定的签名算法,根据上面所述的数字签名的基本原理,用签名工具对开发出来的动态模块的目标文件进行数字签名。
步骤4-4、将签名和目标文件封装成发布包。
开发人员最后把签名和目标文件以及其他信息封装成一个发布包,完成动态模块的开发全过程。然后将发布包提供给用户,用户可以在特定的平台上加载和使用该发布包。
由于动态模块本质是普通的目标文件,本发明所述的动态模块在发布到用户手中时,用户还可以通过脱壳程序,去掉该动态模块的数字签名,将该动态模块作为一个普通的静态模块来使用。
步骤4-5、将动态模块加载到基本系统中。
基本系统中有一个动态模块支持部件,这个部件可以实现动态模块的加载、校验、固化、重定位和激活等工作。用户根据需要,利用基本系统中的动态模块支持部件,将动态模块的发布包加载到基本系统中,即将动态模块的二进制代码形式传送到基本系统的内存中。
步骤4-6、对动态模块进行数字签名校验。
数字签名校验是对动态模块的一致性进行验证,以便确认动态模块对系统无害。基本系统利用其内部的动态模块支持部件,根据导入到其内部的公匙,判断动态模块中的私匙是否与该公匙相对应,如果动态模块中的私匙和基本系统中的公匙相对应,则动态模块通过数字签名校验,动态模块就成为基本系统的一部分。
步骤4-7、对动态模块进行固化。
固化是把动态模块保存到基本系统中的非易失储存器中。基本系统将经过了数字签名校验的动态模块存入到其内部的非易失存储器中,解决了动态模块的持久性问题,使动态模块可以在系统重新系统后仍然有效。
步骤4-8、对经过固化的动态模块进行重定位、激活等操作。
重定位是对动态模块中没有定位的符号进行定位,同时基本系统将动态模块中的指定符号加入到基本系统符号数据库中,使该动态模块中的指定符号可以被别的动态模块使用。
激活是调用动态模块的激活函数,使动态模块的功能生效。激活函数和反激活函数都是动态模块中普通的函数。基本系统通过特定的名称找到这两个函数,例如,可以在动态模块中设计成名称前有_aCtlvAtEd_前缀的符号就是激活函数,这样,基本系统在动态模块加载后就可以很快通过这些有特定含义的符号找到动态模块的激活函数。另一个可选的实现方案是在目标文件中增加一个特定的段,基本系统从这个特定的段中获得激活函数相关信息。用户在加载动态模块的时候,还可以指定激活参数,并且将激活参数作为函数参数或者全局变量传递给动态模块。从而使得基本系统可以利用激活参数定时激活加载的动态模块。
基本系统将动态模块激活后,就可以利用动态模块固有的功能,对基本系统进行相应的处理。在处理完毕后,可以将动态模块从基本系统中卸载掉。
至此,本发明所述方法的具体处理流程结束。
本发明所述装置的具体结构如图5所示,包括动态模块和基本系统。
所述的动态模块:用于通过调用基本系统的标准应用程序接口中的函数和变量,对基本系统实现特定的管理功能。其中包括如下模块:
调用标准应用程序接口模块:用于通过声明和过程,调用基本系统的标准应用程序接口中的函数和变量;
数字签名模块:包含根据所选择的签名算法而生成的私匙,用于根据所述私匙对基本系统中的公匙进行匹配检验。
所述基本系统:用于加载所述动态模块,并对该动态模块进行数字签名校验、固化、重定位和激活,利用该动态模块对基本系统进行相应的处理。其中包括如下模块:
校验模块:包含用户导入到基本系统中的公匙,用于根据所述公匙和数字签名模块中的私匙,对加载到基本系统中的动态模块进行数字签名校验;
非易失存储器:用于存储通过了数字签名校验的动态模块;
基本系统符号数据库:用于存储基本系统的标准应用程序接口的符号的地址和非易失存储器中的动态模块中的指定符号;
激活模块:用于激活存储在非易失存储器中的动态模块。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (11)
1、一种基于动态模块的软件处理系统的实现方法,其特征在于,包括:
A、为基本系统设置标准应用程序接口;
B、基于所述标准应用程序接口建立相应的动态模块;
C、将所述动态模块加载到基本系统中,生成相应的软件处理系统。
2、根据权利要求1所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤A还包括:
基本系统的标准应用程序接口的符号的地址存储在基本系统符号数据库中。
3、根据权利要求1或2所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤B进一步包括:
开发者根据所述标准应用程序接口中的函数和变量,用高级语言建立对基本系统具有特定功能的动态模块。
4、根据权利要求1所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤C进一步包括:
C1、用签名工具对所述动态模块进行数字签名;
C2、将进行了数字签名的动态模块加载到基本系统中,并利用该动态模块对基本系统进行相应的处理。
5、根据权利要求4所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤C1进一步包括:
C11、选定一种签名算法;
C12、用所述选定的签名算法生成一对密钥,将公钥提供给用户,私钥自己保存;
C13、用所述私钥对所述动态模块的目标文件进行数字签名。
6、根据权利要求4或5所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤C2进一步包括:
C21、基本系统对所述加载的动态模块进行数字签名校验;
C22、将通过了数字签名校验的动态模块存入到基本系统中的非易失存储器中;
C23、将所述存储在非易失存储器中的动态模块进行重定位、激活操作,利用该动态模块对基本系统进行相应的处理。
7、根据权利要求6所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤C21进一步包括:
基本系统判断用户导入到基本系统中的公匙和动态模块中的私匙的对应关系,如果所述公匙和所述私匙相对应,则动态模块通过数字签名校验。
8、根据权利要求6所述基于动态模块的软件处理系统的实现方法,其特征在于,所述的步骤C23进一步包括:
利用所述动态模块中的激活函数激活该动态模块,并利用该动态模块对基本系统进行相应的处理。
9、一种基于动态模块的软件处理系统的实现装置,其特征在于,包括:动态模块和基本系统,
所述的动态模块:用于通过调用基本系统的标准应用程序接口中的函数和变量,对基本系统实现特定的管理功能;
所述基本系统:用于加载所述动态模块,并对该动态模块进行数字签名校验、固化、重定位和激活,利用该动态模块对基本系统进行相应的处理。
10、根据权利要求9所述一种基于动态模块的软件处理系统的实现装置,其特征在于,所述的动态模块包括:
调用标准应用程序接口模块:用于调用基本系统的标准应用程序接口中的函数和变量;
数字签名模块:包含根据所选择的签名算法而生成的私匙,用于根据所述私匙对基本系统中的公匙进行匹配检验。
11、根据权利要求9或10所述一种基于动态模块的软件处理系统的实现装置,其特征在于,所述的基本系统包括:
校验模块:包含用户导入到基本系统中的公匙,用于根据所述公匙和数字签名模块中的私匙,对加载到基本系统中的动态模块进行数字签名校验;
非易失存储器:用于存储通过了数字签名校验的动态模块;
基本系统符号数据库:用于存储基本系统的标准应用程序接口的符号的地址和非易失存储器中的动态模块中的指定符号;
激活模块:用于激活存储在非易失存储器中的动态模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510059348 CN1841316A (zh) | 2005-03-28 | 2005-03-28 | 基于动态模块的软件处理系统的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510059348 CN1841316A (zh) | 2005-03-28 | 2005-03-28 | 基于动态模块的软件处理系统的实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1841316A true CN1841316A (zh) | 2006-10-04 |
Family
ID=37030359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510059348 Pending CN1841316A (zh) | 2005-03-28 | 2005-03-28 | 基于动态模块的软件处理系统的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1841316A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706737B (zh) * | 2009-12-18 | 2012-10-03 | 湖南大学 | 软硬件协同函数库的构造方法 |
CN102981814A (zh) * | 2011-06-03 | 2013-03-20 | 三星电子株式会社 | 用于开发成像装置的应用的方法和装置 |
CN110888658A (zh) * | 2019-12-02 | 2020-03-17 | 广州市百果园信息技术有限公司 | 应用程序中功能模块的动态化方法、装置及存储介质 |
-
2005
- 2005-03-28 CN CN 200510059348 patent/CN1841316A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706737B (zh) * | 2009-12-18 | 2012-10-03 | 湖南大学 | 软硬件协同函数库的构造方法 |
CN102981814A (zh) * | 2011-06-03 | 2013-03-20 | 三星电子株式会社 | 用于开发成像装置的应用的方法和装置 |
US9632767B2 (en) | 2011-06-03 | 2017-04-25 | Samsung Electronics Co., Ltd. | Method and apparatus to develop an application of an image forming apparatus |
CN102981814B (zh) * | 2011-06-03 | 2018-02-09 | 爱思打印解决方案有限公司 | 用于开发成像装置的应用的方法和装置 |
CN110888658A (zh) * | 2019-12-02 | 2020-03-17 | 广州市百果园信息技术有限公司 | 应用程序中功能模块的动态化方法、装置及存储介质 |
CN110888658B (zh) * | 2019-12-02 | 2023-04-21 | 广州市百果园信息技术有限公司 | 应用程序中功能模块的动态化方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1324467C (zh) | 基于标记的链接 | |
CN1924805A (zh) | 在无线二进制运行环境平台实现动态链接库方法 | |
CN101042645A (zh) | 统一软件开发环境的方法、设备及系统 | |
CN1959640A (zh) | 在软件包管理系统将用户进程表示为软件包的系统和方法 | |
CN1371499A (zh) | 传统数据结构的对象特性元模型仿真器 | |
CN1892602A (zh) | 一种二进制翻译中库函数调用的处理方法 | |
CN1238500A (zh) | 用于进行静态初始化的方法和系统 | |
CN1848111A (zh) | 用于内存数据库的一种数据操作接口的实现方法 | |
CN1949169A (zh) | 电视机软件升级方法 | |
CN1834913A (zh) | 一种管理软件安装/卸载的方法 | |
CN1831771A (zh) | 一种更新软件的方法 | |
CN101038611A (zh) | 一种软件保护的方法 | |
CN1367895A (zh) | 把不同源语言转移到一个执行介质 | |
JP2009543236A (ja) | マルチタスク仮想マシンのためのヒープ組織 | |
CN1841316A (zh) | 基于动态模块的软件处理系统的实现方法和装置 | |
CN1313925C (zh) | 构件自描述封装方法及运行的方法 | |
CN1744037A (zh) | 避免网格计算应用依赖底层开发工具箱的方法 | |
CN1892597A (zh) | 通过随插即用储存装置更新手持式设备操作功能的方法 | |
CN104484207A (zh) | 交换机的镜像升级方法及适用的linux操作系统和交换机 | |
CN1295778C (zh) | 一种验证芯片硬件行为与软件模拟行为的一致性的方法 | |
CN101055542A (zh) | 一种交叉集成开发环境中的符号调试方法及系统 | |
CN1904835A (zh) | 一种计算机软件更新的方法 | |
CN1238211C (zh) | 车载设备用嵌入式操作系统启动方法 | |
CN1794205A (zh) | 用于文件信息写处理的方法和程序 | |
CN1834911A (zh) | 实现程序加载运行的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |