CN105204855B - 一种调度方法及装置 - Google Patents
一种调度方法及装置 Download PDFInfo
- Publication number
- CN105204855B CN105204855B CN201510587648.8A CN201510587648A CN105204855B CN 105204855 B CN105204855 B CN 105204855B CN 201510587648 A CN201510587648 A CN 201510587648A CN 105204855 B CN105204855 B CN 105204855B
- Authority
- CN
- China
- Prior art keywords
- function
- module
- mark information
- functional module
- mark
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000006870 function Effects 0.000 abstract description 109
- 230000008569 process Effects 0.000 abstract description 19
- 238000011161 development Methods 0.000 abstract description 13
- 238000012360 testing method Methods 0.000 abstract description 6
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种调度方法,所述方法包括:将应用程序划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;将所述标记信息添加给与所述功能模块对应的函数,从函数库中调用所述函数。本发明的技术方案,可以达到将功能模块与被调用函数相互对应的技术效果,简化了开发过程中不同模块的开发者之间的交接流程,缩短了开发周期,降低了软件后期的调试和测试难度,增加了程序的稳定性,具有很高的实用性。
Description
技术领域
本发明涉及到计算机程序编译技术领域,尤其是一种调度方法及装置。
背景技术
随着软件领域的不断更新和飞速发展,跨语言跨平台编程的需求也越来越多,因此促进了许多新技术的诞生,JNA即是其中之一。JNA(Java Native Access)框架是一个开源的java框架,建立在JNI(Java Native Interface)基础之上,提供了java代码和其他语言(特别是C/C++)之间的交互和调用。其实现方式为,开发者首先使用java接口来描述目标动态库的结构和功能,然后动态链接的共享库与应用程序在运行时被绑定,通过动态链接器,将动态库映射进应用程序的可执行内存中,最后在运行应用程序时,动态装载器将所需的目标动态库映射到应用程序的内存中。
图3为现有技术的一种实施方式示意图;
当不使用本发明所示系统时,JNA调用C语言的过程如图3所示,
步骤S301:编写JAVA接口;
步骤S302:编译为中间代码;
步骤S303:链接动态库文件;
步骤S304:运行程序。
开发者首先用java语言描述本地共享库的功能和结构,然后在编译过程中根据符号表中信息链接动态库,最后执行应用程序。
但是,当本地共享库由C语言编写并且程序链接了多个动态库时,如果在这些动态库中存在同名的函数,那么当程序运行时首先装载的动态库会将函数的信息写入符号表中,由于C语言没有函数重载的功能,接下来运行的动态库中该同名函数会指向符号表中记录的位置,也就是第一个装载的动态库中的函数,从而导致程序错误,严重时导致程序崩溃。
发明内容
为了解决上述问题,本发明提供了
一种调度方法,所述方法包括:
将应用程序中划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
将所述标记信息添加给与所述功能模块对应的函数;
从函数库中调用所述函数。
可选地,从函数库中调用所述函数包括:
根据所述标记信息调用与所述功能模块对应的函数。
可选地,根据所述标记信息调用与所述功能模块对应的函数,包括:
将所述函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
一种调度装置,包括:所述装置包括:
分配标记模块,用于将应用程序中划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
添加标记模块,用于将所述标记信息添加给与所述功能模块对应的函数;
函数调用模块,用于从函数库中调用所述函数。
可选地,其中,函数调用模块,用于从函数库中调用所述函数,包括:
根据所述标记信息调用与所述功能模块对应的函数。
可选地,所述函数调用模块用于根据所述标记信息调用与所述功能模块对应的函数,包括:将所述函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
本发明的技术方案,可以达到将功能模块与被调用函数相互对应的技术效果,简化了开发过程中不同模块的开发者之间的交接流程,缩短了开发周期,降低了软件后期的调试和测试难度,增加了程序的稳定性,具有很高的实用性。
附图说明
图1为本发明的一种调度方法的流程图;
图2为本发明的一种调度装置的结构图;
图3为现有技术的一种实施方式示意图;
图4为本发明的一种实施方式示意图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
一种调度方法,所述方法包括:
将应用程序中划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
将所述标记信息添加给与所述功能模块对应的函数;
从函数库中调用所述函数。
图1为本发明的一种调度方法的流程图;
步骤S01:将应用程序中划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
步骤S02:将所述标记信息添加给与所述功能模块对应的函数。
步骤S03:从函数库中调用所述函数。
本发明的技术方案,可以达到将功能模块与被调用函数相互对应的技术效果,简化了开发过程中不同模块的开发者之间的交接流程,缩短了开发周期,降低了软件后期的调试和测试难度,增加了程序的稳定性,具有很高的实用性。
可选地,从函数库中调用所述函数,包括:
根据所述标记信息调用与所述功能模块对应的函数。
可选地,根据所述标记信息调用与所述功能模块对应的函数,包括:
将所述函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
图2为本发明的一种调度装置的结构图;
一种调度装置,包括:所述装置包括:
分配标记模块201,用于将应用程序中划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
添加标记模块202,用于将所述标记信息添加给与所述功能模块对应的函数。
函数调用模块203,用于从函数库中调用所述函数。
可选地,其中,函数调用模块,用于从函数库中调用所述函数,包括:
根据所述标记信息调用与所述功能模块对应的函数。
可选地,所述函数调用模块203用于根据所述标记信息调用与所述功能模块对应的函数,包括:将所述函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
本发明在应用程序和动态库之间维护一个第三方系统,该系统包括分配标记、添加标记以及函数调用三个模块组成。分配标记模块将应用程序中的模块按功能划分,并且分配给每一个模块不同的标记以进行区分,该标记可以是模块名称或者模块序号,但必须是唯一确定并且可扩展的;添加标记模块的功能是给动态库中的每一个函数添加标记信息,其中标记是第一步中已经分配好的标记,动态库对应于第一步中已经分配好的功能模块,这样就可以把功能模块与动态库中的函数对应起来,有效区分不同动态库中的同名函数;函数调用模块作用于程序运行过程中每一个调用动态库的过程,用户程序调用共享库里的函数之前,通过本模块进行函数名和标记信息的匹对,如果完全一致则进行函数调用,否则发出错误信息。
本发明的有益效果是:分配标记模块201的特性,主要是将应用程序的功能划分为不同的模块,并给每一个模块分配唯一的标记信息,其中模块划分可以是应用程序开发过程中不同开发者负责的模块,这样就可以屏蔽不同开发者命名函数的约束,缩短软件开发流程,降低开发难度,同时为软件后期的测试和集成带来便利;添加标记模块202的特性,主要是把上一步中得到的标记信息添加到动态库的函数里,对于应用程序下不同的功能模块,每一个被该模块调用的动态库都会添加上此模块的标记信息,用来与其他模块区分,这样在不同模块里的同名函数就会有不同的标记信息,从而在函数调用的时候指向正确的地址,增加程序的稳定性;函数调用模块203的特性,主要是确保程序运行过程中对不同模块同名函数调用的正确性,通过对功能模块和动态库中函数的标记信息的比对,跳转到正确的被调用函数的地址,保证程序的正确运行。这种调度方法所具有的上述优点,采用对不同模块里的同名函数添加标记的方法,简化了开发过程中不同模块的开发者之间的交接流程,缩短了开发周期,降低了软件后期的调试和测试难度,增加了程序的稳定性,具有很高的实用性。
图4为本发明的一种实施方式示意图;
步骤S401:编写JAVA接口;
步骤S402:分配标记;
步骤S403:添加标记;
步骤S404:编译为中间代码;
步骤S405:辨识标记;
步骤S406:链接动态库文件;
步骤S407:运行程序。
下面参照附图,对本发明的内容以JNA框架调用C语言动态库的过程为例,采用添加标记信息的方式来描述这一方法的实现过程。
正如发明内容中所描述的,本发明中动态调度系统主要包括:分配标记模块(1)、添加标记模块(2)、函数调用模块(3)。
JNA框架下动态调度系统的结构包括:分配标记模块201、添加标记模块202和函数调用模块203,其中分配标记模块201和添加标记模块202通过标记信息使功能模块和函数相互对应,然后函数调用模块203根据标记信息动态调用相应的函数,防止发生同名函数调用出错的现象。
使用本系统时,调用过程如图4所示,开发者首先编写java代码,并实现对应动态库的JNA接口代码,然后划分功能模块,分配标记信息,系统将标记信息写入功能模块对应的函数信息中,最后在程序编译过程中,系统通过动态链接器链接本地共享库的时候,函数调用模块会根据函数的标记信息确认程序能链接到正确的函数,保证程序的正确运行。
1、主要技术特征在于通过给动态库中函数添加标记信息的方法,避免不同动态库中同名函数调用出错的问题。
2、专利改进在于JNA框架下动态库调度方法设计结构包括:分配标记模块201、添加标记模块202和函数调用模块203,其中分配标记模块201根据程序功能划分模块,并分配有效的标记信息;添加标记模块202给每一个模块调用的函数添加相应的标记信息,使同名函数可以对应在不同模块下面;函数调用模块203通过对功能模块和动态库中函数的标记信息的比对,从而调用正确的函数,保证程序的正确运行。
3、保护一种JNA框架下动态库调度方法。
价值在于采用对不同模块里的同名函数添加标记的方法,简化了开发过程中不同模块的开发者之间的交接流程,缩短了开发周期,降低了软件后期的调试和测试难度,增加了程序的稳定性,具有很高的实用性。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (2)
1.一种调度方法,其特征在于,所述方法包括:
将应用程序划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
将所述标记信息添加给与所述功能模块对应的函数,其中,所述函数是功能模块要调用动态库中的函数;
从函数库中调用所述函数,其中,所述从函数库中调用所述函数,包括:
根据所述标记信息调用与所述功能模块对应的函数;
其中,所述根据所述标记信息调用与所述功能模块对应的函数,包括:将函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
2.一种调度装置,其特征在于,包括:所述装置包括:
分配标记模块,用于将应用程序划分为不同的功能模块,给每一个功能模块分配唯一的标记信息;
添加标记模块,用于将所述标记信息添加给与所述功能模块对应的函数;
函数调用模块,用于从函数库中调用所述函数;
其中,函数调用模块,用于从函数库中调用所述函数,包括:
根据所述标记信息调用与所述功能模块对应的函数;
所述函数调用模块用于根据所述标记信息调用与所述功能模块对应的函数,包括:将所述函数的函数名和所述标记信息进行匹对,如果完全一致则进行函数调用,否则发出错误信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587648.8A CN105204855B (zh) | 2015-09-15 | 2015-09-15 | 一种调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587648.8A CN105204855B (zh) | 2015-09-15 | 2015-09-15 | 一种调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105204855A CN105204855A (zh) | 2015-12-30 |
CN105204855B true CN105204855B (zh) | 2019-05-28 |
Family
ID=54952561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510587648.8A Active CN105204855B (zh) | 2015-09-15 | 2015-09-15 | 一种调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204855B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1322316A (zh) * | 1998-10-09 | 2001-11-14 | 因芬尼昂技术股份公司 | 在函数调用时防止栈操作的方法 |
CN103853532A (zh) * | 2012-11-29 | 2014-06-11 | 国际商业机器公司 | 用于函数调用的方法和装置 |
CN104899045A (zh) * | 2015-06-23 | 2015-09-09 | 上海斐讯数据通信技术有限公司 | 一种通用的软件编码辅助系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8726258B2 (en) * | 2011-04-14 | 2014-05-13 | Phoenix Technologies Ltd. | Supporting multiple hardware components in UEFI |
-
2015
- 2015-09-15 CN CN201510587648.8A patent/CN105204855B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1322316A (zh) * | 1998-10-09 | 2001-11-14 | 因芬尼昂技术股份公司 | 在函数调用时防止栈操作的方法 |
CN103853532A (zh) * | 2012-11-29 | 2014-06-11 | 国际商业机器公司 | 用于函数调用的方法和装置 |
CN104899045A (zh) * | 2015-06-23 | 2015-09-09 | 上海斐讯数据通信技术有限公司 | 一种通用的软件编码辅助系统及方法 |
Non-Patent Citations (1)
Title |
---|
名字空间定义;Stanley B.Lippman 等;《C++Primer中文版》;20020531;第349-352页 |
Also Published As
Publication number | Publication date |
---|---|
CN105204855A (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108182068B (zh) | 基于微服务的部署交付件的生成方法及装置、存储介质 | |
JP7090657B2 (ja) | アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体 | |
US8756590B2 (en) | Binding data parallel device source code | |
US7107579B2 (en) | Preserving program context when adding probe routine calls for program instrumentation | |
CN106569794A (zh) | 应用程序开发装置 | |
CN107967316A (zh) | 一种数据同步方法、设备及计算机可读存储介质 | |
CN112630622B (zh) | ATE设备的pattern编译下载测试的方法及系统 | |
CN108830720A (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
JP6289751B2 (ja) | プログラム生成装置、プログラム生成方法及びプログラム生成プログラム | |
JP2005032259A (ja) | 共有ライブラリーシステム及び前記システム構築方法 | |
US10466985B2 (en) | Hybrid deoptimization mechanism for class hierarchy analysis | |
US9990194B2 (en) | Preservation of backward compatibility for java card cap files | |
CN104699523A (zh) | 用于硬件平台所开发的应用程序的调试方法和系统 | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
CN105204855B (zh) | 一种调度方法及装置 | |
US9606802B2 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
WO2022143991A1 (zh) | 一种多次编程电子熔丝装置 | |
US9262136B2 (en) | Allocate instruction and API call that contain a sybmol for a non-memory resource | |
US11719749B1 (en) | Method and system for saving and restoring of initialization actions on dut and corresponding test environment | |
Snyder | A portable compiler for the language C | |
CN114924947A (zh) | 代码测试方法、装置、电子设备及存储介质 | |
CN118051421A (zh) | Io时延故障的注入方法、装置、电子设备及存储介质 | |
CN114138315A (zh) | 一种补丁处理的方法、第一设备及存储介质 | |
US20200349304A1 (en) | Method, apparatus, device, and medium for implementing simulator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |