CN113254232A - 软件模块化方法、系统、装置、设备及计算机存储介质 - Google Patents
软件模块化方法、系统、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113254232A CN113254232A CN202110606698.1A CN202110606698A CN113254232A CN 113254232 A CN113254232 A CN 113254232A CN 202110606698 A CN202110606698 A CN 202110606698A CN 113254232 A CN113254232 A CN 113254232A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- target
- determining
- function
- module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000015654 memory Effects 0.000 claims abstract description 231
- 230000006870 function Effects 0.000 claims abstract description 223
- 230000003993 interaction Effects 0.000 claims abstract description 103
- 238000004590 computer program Methods 0.000 claims description 41
- 238000004891 communication Methods 0.000 claims description 22
- 238000010606 normalization Methods 0.000 claims description 3
- 230000000875 corresponding effect Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件模块化方法、系统、装置、设备及介质,装置包括目标软件的各个功能模块,每个功能模块实现一个功能;各个功能模块对应的动态链接库及共享内存;其中,动态链接库基于功能模块的数据结构及函数接口创建,函数接口与数据结构相匹配,且功能模块间基于动态链接库及共享内存进行数据交互。本申请中,每个功能模块都有自己的数据结构、函数接口、共享内存及动态链接库,且通过动态链接库及共享内存进行数据交互,实现了目标软件的单个功能的特定模块化,解除了软件功能与共享内存单一结构体间的依赖关系,软件模块化程度高。本申请提供的软件模块化方法、系统、设备及计算机可读存储介质也具有此效果。
Description
技术领域
本申请涉及计算机技术领域,更具体地说,涉及软件模块化方法、系统、装置、设备及计算机存储介质。
背景技术
当前,随着软件功能的多样化,软件的不同功能会通过进程或线程等来实现,然而,软件不同功能间可能需要进行信息交互,由此使得不同进程或线程间需要进行通信,比如可以通过linux的共享内存的机制实现不同进程间的通信,此种通信方式是目前linux系统中进程间通信最快的一种方式,在软件系统中定义一个较大的结构体,针对这个结构体申请一块共享内存,所有的进程都通过这个结构体进行数据交互的通信,这种方式可以很方便实现不同进程间的通信。
但是因为所有的数据都放在了同一个结构体里面,导致这个结构体中的信息比较繁杂,而且所有的进程都采用同一个数据结构体进行通信,导致所有的进程都与该共享内存的结构体设计存在较大的依赖关系,模块化程度比较弱。
综上所述,如何提高软件模块化的程度是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种软件模块化装置,其能在一定程度上解决如何提高软件模块化的程度的技术问题。本申请还提供了一种软件模块化方法、系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种软件模块化装置,包括:
目标软件的各个功能模块,每个所述功能模块实现一个功能;
各个所述功能模块对应的动态链接库及各自的共享内存;
其中,所述动态链接库基于所述功能模块的数据结构及函数接口创建,所述函数接口与所述数据结构相匹配,且所述功能模块间基于所述动态链接库及所述共享内存进行数据交互;
其中,还包括:
通信管理器件,用于接收所述功能模块间的数据交互请求;基于所述数据交互请求,确定进行数据交互的目标动态链接库;在所述目标动态链接库中,确定目标函数接口;确定目标共享内存;在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
优选的,还包括:
归一化器件,用于所述通信管理器件接收所述功能模块间的数据交互请求之前,创建第一共享内存;将所有的所述函数接口及所述共享内存的信息填充至所述第一共享内存。
优选的,所述通信管理器件包括:
确定模组,用于确定出所述数据交互请求中的待操作共享内存及待调用函数接口;
判断模组,用于判断所述待操作共享内存和所述待调用函数接口是否与所述第一共享内存匹配;若所述待操作共享内存和所述待调用函数接口与所述第一共享内存匹配,则基于所述数据交互请求中的动态链接库标识确定所述目标动态链接库。
优选的,还包括:
初始化器件,用于所述通信管理器件接收数据交互请求之前,对各个所述共享内存进行初始化。
优选的,还包括:
划分器件,用于以单个功能为单位对所述目标软件进行模块划分,得到所述功能模块。
优选的,所述函数接口包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
一种软件模块化方法,包括:
确定目标软件的各个功能模块,每个所述功能模块实现一个功能;
确定各个所述功能模块的数据结构;
确定各个所述数据结构的函数接口;
确定各个所述功能模块各自的共享内存;
基于所述数据结构及所述函数接口,创建各个所述功能模块的动态链接库;
接收数据交互请求;
基于所述数据交互请求,确定进行数据交互的目标动态链接库;
在所述目标动态链接库中,确定目标函数接口;
确定目标共享内存;
在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
优选的,所述接收数据交互请求之前,还包括:
创建第一共享内存;
将所有的所述函数接口及所述共享内存的信息填充至所述第一共享内存。
优选的,所述基于所述数据交互请求,确定进行数据交互的目标动态链接库,包括:
确定出所述数据交互请求中的待操作共享内存及待调用函数接口;
判断所述待操作共享内存和所述待调用函数接口是否与所述第一共享内存匹配;
若所述待操作共享内存和所述待调用函数接口与所述第一共享内存匹配,则基于所述数据交互请求中的动态链接库标识确定所述目标动态链接库。
优选的,所述接收数据交互请求之前,还包括:
对各个所述共享内存进行初始化。
优选的,所述确定目标软件的各个功能模块,包括:
以单个功能为单位对所述目标软件进行模块划分,得到所述功能模块。
优选的,所述函数接口包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
一种软件模块化系统,包括:
第一确定模块,用于确定目标软件的各个功能模块,每个所述功能模块实现一个功能;
第二确定模块,用于确定各个所述功能模块的数据结构;
第三确定模块,用于确定各个所述数据结构的函数接口;
第四确定模块,用于确定各个所述功能模块各自的共享内存;
第一创建模块,用于基于所述数据结构及所述函数接口,创建各个所述功能模块的动态链接库;
第一接收模块,用于接收所述功能模块间的数据交互请求;
第五确定模块,用于基于所述数据交互请求,确定进行数据交互的目标动态链接库;
第六确定模块,用于在所述目标动态链接库中,确定目标函数接口;确定目标共享内存;
第一操作模块,用于在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
一种软件模块化设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述软件模块化方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述软件模块化方法的步骤。
本申请提供的一种软件模块化装置,包括目标软件的各个功能模块,每个功能模块实现一个功能;各个功能模块对应的动态链接库及共享内存;其中,动态链接库基于功能模块的数据结构及函数接口创建,函数接口与数据结构相匹配,且功能模块间基于动态链接库及共享内存进行数据交互。本申请中,每个功能模块都有自己的数据结构、函数接口、共享内存及动态链接库,且通过动态链接库及共享内存进行数据交互,实现了目标软件的单个功能的特定模块化,解除了软件功能与共享内存单一结构体间的依赖关系,软件模块化程度高。本申请提供的一种软件模块化方法、系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种软件模块化装置的结构示意图;
图2为本申请实施例提供的一种软件模块化方法的流程图;
图3为本申请实施例提供的一种软件模块化系统的结构示意图;
图4为本申请实施例提供的一种软件模块化设备的结构示意图;
图5为本申请实施例提供的一种软件模块化设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请实施例提供的一种软件模块化装置的结构示意图。
本申请实施例提供的一种软件模块化装置,可以包括:
目标软件的各个功能模块11,每个功能模块实现一个功能;
各个功能模块11对应的动态链接库12及共享内存13;
其中,动态链接库12基于功能模块的数据结构及函数接口创建,函数接口与数据结构相匹配,且功能模块间基于动态链接库及共享内存进行数据交互。
本实施例中,软件模块化装置中包括目标软件的各个功能模块,且每个功能模块实现一个功能,也即单个功能模块只实现一个功能,实现了目标软件的功能化细分,为后续定制单个功能的动态链接库提供基础。目标软件及目标软件的功能可以根据实际需要确定,本申请在此不做具体限定。具体应用场景中,为了便于确定目标软件的各个功能模块,可以以单个功能为单位对目标软件进行模块划分,得到相应的功能模块。功能模块11、动态链接库12及共享内存13的数量可以根据实际需要确定,本申请在此不做具体限定。
实际应用中,因为每个功能所需要的数据不同,所以在本装置中,需基于数据结构及函数接口创建动态链接库,在此过程中,需确定各个功能模块的数据结构,以便后续在动态链接库中设置功能模块的相应函数打好基础;确定各个数据结构的函数接口,以便后续根据该函数接口对动态链接库进行相应设置,便于用户后续通过该函数接口调用相关函数。具体应用场景中,函数接口可以包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口等。
实际应用中,本申请提供的软件模块化装置中还需确定各个功能模块各自的共享内存,也即本申请中需要为每个功能模块分配相应的共享内存,这样可以避免多个功能模块共用一个共享内存导致该共享内存的数据结构较为混乱。且在进行数据交互的过程中,需基于动态链接库及共享内存进行数据交互。
本申请提供的一种软件模块化装置,包括目标软件的各个功能模块,每个功能模块实现一个功能;各个功能模块对应的动态链接库及共享内存;其中,动态链接库基于功能模块的数据结构及函数接口创建,函数接口与数据结构相匹配,且功能模块间基于动态链接库及共享内存进行数据交互。本申请中,每个功能模块都有自己的数据结构、函数接口、共享内存及动态链接库,且通过动态链接库及共享内存进行数据交互,实现了目标软件的单个功能的特定模块化,解除了软件功能与共享内存单一结构体间的依赖关系,软件模块化程度高。
本申请实施例提供的一种软件模块化装置,为了便于功能模块间进行数据交互,还可以包括:
通信管理器件,用于接收功能模块间的数据交互请求;基于数据交互请求,确定进行数据交互的目标动态链接库;在目标动态链接库中,确定目标函数接口;确定目标共享内存;在目标共享内存中,基于目标函数接口对目标数据进行操作。
应当指出,无论是外界调用软件模块的动态链接库来对该软件模块的数据进行操作,还是软件模块调用另一软件模块的动态链接库来对另一软件模块的数据进行操作,均可以按照本实施例的数据交互步骤进行数据交互。
本申请实施例提供的一种软件模块化装置,为了便于对各个软件模块的动态链接库及共享内存进行统一管理,比如统一进行初始化、统一调用读写接口等,还可以包括:
归一化器件,用于通信管理器件接收功能模块间的数据交互请求之前,创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存。
具体应用场景中,可以创建共享内存管理线程来专门执行创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存的操作等。
本申请实施例提供的一种软件模块化装置,通信管理器件可以包括:
确定模组,用于确定出数据交互请求中的待操作共享内存及待调用函数接口;
判断模组,用于判断待操作共享内存和待调用函数接口是否与第一共享内存匹配;若待操作共享内存和待调用函数接口与第一共享内存匹配,则基于数据交互请求中的动态链接库标识确定目标动态链接库。
也即可以在数据交互请求中设置待操作共享内存及待调用函数接口,使得可以基于数据交互请求判断待操作共享内存和待调用函数接口是否与第一共享内存匹配来快速确定目标动态函数库。当然还可以有其他确定目标动态链接库的方法,本申请在此不做具体限定。
本申请实施例提供的一种软件模块化装置,为了避免上轮数据交互对下轮数据交互的影响,还可以包括:
初始化器件,用于通信管理器件接收数据交互请求之前,对各个共享内存进行初始化。
本申请实施例提供的一种软件模块化装置,为了便于确定目标软件的各个功能模块,还可以包括:
划分器件,用于以单个功能为单位对目标软件进行模块划分,得到功能模块。
请参阅图2,图2为本申请实施例提供的一种软件模块化方法的流程图。
本申请实施例提供的一种软件模块化方法,可以包括以下步骤:
步骤S101:确定目标软件的各个功能模块,每个功能模块实现一个功能。
实际应用中,可以先确定目标软件的各个功能模块,且每个功能模块实现一个功能,也即单个功能模块只实现一个功能,实现了目标软件的功能化细分,为后续定制单个功能的动态链接库提供基础。目标软件及目标软件的功能可以根据实际需要确定,本申请在此不做具体限定。
具体应用场景中,为了便于确定目标软件的各个功能模块,可以以单个功能为单位对目标软件进行模块划分,得到相应的功能模块。
步骤S102:确定各个功能模块的数据结构。
实际应用中,因为每个功能所需要的数据不同,所以在确定目标软件的各个功能模块之后,还需确定各个功能模块的数据结构,以便后续在动态链接库中设置功能模块的相应函数打好基础。
步骤S103:确定各个数据结构的函数接口。
实际应用中,在确定各个功能模块的数据结构之后,便可以确定各个数据结构的函数接口,以便后续根据该函数接口对动态链接库进行相应设备,便于用户后续通过该函数接口调用相关函数。
具体应用场景中,函数接口可以包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口等。
步骤S104:确定各个功能模块各自的共享内存。
实际应用中,在确定各个数据结构的函数接口之后,便可以确定各个功能模块各自的共享内存,也即本申请中需要为每个功能模块分配相应的共享内存,这样可以避免多个功能模块共用一个共享内存导致该共享内存的数据结构较为混乱。
步骤S105:基于数据结构及函数接口,创建各个功能模块的动态链接库,以基于动态链接库及共享内存进行数据交互。
实际应用中,在确定各个功能模块各自的目标共享内存之后,便可以基于数据结构及函数接口,创建各个功能模块的动态链接库,以便后续基于动态链接库及共享内存进行数据交互。
本申请提供的一种软件模块化方法,确定目标软件的各个功能模块,每个功能模块实现一个功能;确定各个功能模块的数据结构;确定各个数据结构的函数接口;确定各个功能模块各自的共享内存;基于数据结构及函数接口,创建各个功能模块的动态链接库,以基于动态链接库及共享内存进行数据交互。本申请中,每个功能模块都有自己的数据结构、函数接口、共享内存及动态链接库,且通过动态链接库及共享内存进行数据交互,实现了目标软件的单个功能的特定模块化,解除了软件功能与共享内存单一结构体间的依赖关系,软件模块化程度高。
本申请实施例提供的一种软件模块化方法,在创建各个功能模块的动态链接库之后,当需要进行数据交互时,可以接收数据交互请求;基于数据交互请求,确定进行数据交互的目标动态链接库;在目标动态链接库中,确定目标函数接口;确定目标共享内存;在目标共享内存中,基于目标函数接口对目标数据进行操作。
应当指出,无论是外界调用软件模块的动态链接库来对该软件模块的数据进行操作,还是软件模块调用另一软件模块的动态链接库来对另一软件模块的数据进行操作,均可以按照本实施例的数据交互步骤进行数据交互。
本申请实施例提供的一种软件模块化方法中,在接收数据交互请求之前,为了便于对各个软件模块的动态链接库及共享内存进行统一管理,比如统一进行初始化、统一调用读写接口等,可以对共享内存进行归一化,也即可以创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存。
具体应用场景中,可以创建共享内存管理线程来专门执行创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存的操作。
本申请实施例提供的一种软件模块化方法,基于数据交互请求,确定进行数据交互的目标动态链接库的过程中,可以先确定出数据交互请求中的待操作共享内存及待调用函数接口;判断待操作共享内存和待调用函数接口是否与第一共享内存匹配;若待操作共享内存和待调用函数接口与第一共享内存匹配,则基于数据交互请求中的动态链接库标识确定目标动态链接库。
也即可以在数据交互请求中设置待操作共享内存及待调用函数接口,使得可以基于数据交互请求判断待操作共享内存和待调用函数接口是否与第一共享内存匹配来快速确定目标动态函数库。当然还可以有其他确定目标动态链接库的方法,本申请在此不做具体限定。
本申请实施例提供的一种软件模块化方法,在接收数据交互请求之前,为了避免上轮数据交互对下轮数据交互的影响,还可以对各个共享内存进行初始化。
为了便于理解本申请提供的软件模块化方法,现结合BMC(baseboard managementcontroller,底板管理控制器)中进程间通信来对本申请提供的软件模块化方法进行描述,在此过程中,可以包括以下步骤:
以单个功能为单位对BMC的功能进行模块划分,每个模块实现一个独立的功能,可以采用进程的形式实现,也可以采用线程的形式实现,比如PSU更新功能可以设计成一个进程,风扇控制功能可以设计成一个进程,GPU(图形处理器)/RAID(Redundant Arrays ofIndependent Disks,磁盘阵列)卡监控可以作为PCIE监控进程中的两个单独的线程;
确定各个功能模块的数据结构,数据结构中可以包含与该功能相关需要交互的数据,如风扇进程中,数据结构中需要包括风扇的转速,风扇的工作模式等;
确定各个数据结构的函数接口;也即设计与该数据结构相关的对外呈现的接口,主要用于对数据结构中的数据进行共享内存申请,数据初始化和数据读写操作,所以函数接口主要包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口和共享内存写函数接口等;
确定各个功能模块各自的共享内存;
基于数据结构及函数接口,创建各个功能模块的动态链接库,比如散热处理进程的动态链接库、后台任务进程的动态链接库、BIOS固件更新进程的动态链接库、CPLD固件更新进程的动态链接库等;之后可以将动态链接库放在/usr/local/lib/sharmemmangr目录下,每个动态链接库文件中都存在一个GetShareMemMngrMetaLibInfo的函数地址,执行该函数之后会获取一个结构体数组,结构体数组定义可以如下:
typedef struct
{
key_t KeyId;
INT8 FuncsTableSymbolName[MAX_SYMSEC_SIZE];
INT8 InitFuncName[MAX_SYMSEC_SIZE];
}ShareMemLibMetaInfo_T;
其中KeyId表示该动态链接库对应的模块申请共享内存使用的key值;
FuncsTableSymbolName表示该动态链接库中每个共享内存中成员的初始化、read、write处理函数的名称;
InitFuncName表示针对该动态链接库申请的共享内存进行初始化的函数入口,用于内存管理进程在BMC启动时进行初始化操作;
FuncsTableSymbolName对应的表格中的每个成员中每个元素的结构体定义可以如下所示:
typedef struct
{
key_t uwShareMemKey;
UINT32 udwFuncCode;
UINT32 udwReserved0;
UINT32 udwReserved1;
size_t udwShareMemSize;
CHAR cDynamicFileName[MAX_DYNAMIC_FILENAME_LENGTH];
CHAR cFunctionName[MAX_FUNCTION_NAME_LENGTH];
}ShareMemMngr;
其中uwShareMemKey表示共享内存对应的 key 值;udwFuncCode表示调用哪个函数进行操作;udwReserved0及udwReserved1保留;udwShareMemSize表示共享内存大小;cDynamicFileName表示动态链接库名称;cFunctionName表示要调用的函数名称,多用来解释,调用或 debug 使用;
遍历/usr/local/lib/sharmemmangr 目录下所有的动态链接库,dlopen 打开动态链接库,从中获取 GetShareMemMngrMetaLibInfo的函数地址,并调用其中的InitFuncName 对该动态链接库使用的共享内存进行初始化操作;
申请一段key为0的共享内存,然后将定义的FuncsTableSymbolName对应的每个成员填充到该共享内存中;
通过key为0加载对应的共享内存,遍历其中的每个成员,通过 uwShareMemKey和udwFuncCode匹配,匹配成功了则通过dlopen打开cDynamicFileName指明的动态链接库,调用cFunctionName对应的函数入口即可完成对应共享内存的读写操作。
请参阅图3,图3为本申请实施例提供的一种软件模块化系统的结构示意图。
本申请实施例提供的一种软件模块化系统,可以包括:
第一确定模块101,用于确定目标软件的各个功能模块,每个功能模块实现一个功能;
第二确定模块102,用于确定各个功能模块的数据结构;
第三确定模块103,用于确定各个数据结构的函数接口;
第四确定模块104,用于确定各个功能模块各自的共享内存;
第一创建模块105,用于基于数据结构及函数接口,创建各个功能模块的动态链接库,以基于动态链接库及共享内存进行数据交互。
本申请实施例提供的一种软件模块化系统,还可以包括:
第一接收模块,用于第一创建模块创建各个功能模块的动态链接库之后,接收数据交互请求;
第五确定模块,用于基于数据交互请求,确定进行数据交互的目标动态链接库;
第六确定模块,用于在目标动态链接库中,确定目标函数接口;确定目标共享内存;
第一操作模块,用于在目标共享内存中,基于目标函数接口对目标数据进行操作。
本申请实施例提供的一种软件模块化系统,还可以包括:
第二创建模块,用于第一接收模块接收数据交互请求之前,创建第一共享内存;
第一填充模块,用于将所有的函数接口及共享内存的信息填充至第一共享内存。
本申请实施例提供的一种软件模块化系统,第五确定模块可以包括:
第一确定单元,用于确定出数据交互请求中的待操作共享内存及待调用函数接口;
第一判断单元,用于判断待操作共享内存和待调用函数接口是否与第一共享内存匹配;若待操作共享内存和待调用函数接口与第一共享内存匹配,则确定基于数据交互请求中的动态链接库标识确定目标动态链接库。
本申请实施例提供的一种软件模块化系统,还可以包括:
第一初始化模块,用于第一接收模块接收数据交互请求之前,对各个共享内存进行初始化。
本申请实施例提供的一种软件模块化系统,第一确定模块可以包括:
第一划分单元,用于以单个功能为单位对目标软件进行模块划分,得到功能模块。
本申请实施例提供的一种软件模块化系统,函数接口可以包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
本申请还提供了一种软件模块化处理设备及计算机可读存储介质,其均具有本申请实施例提供的一种软件模块化方法具有的对应效果。请参阅图4,图4为本申请实施例提供的一种软件模块化设备的结构示意图。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:
确定目标软件的各个功能模块,每个功能模块实现一个功能;
确定各个功能模块的数据结构;
确定各个数据结构的函数接口;
确定各个功能模块各自的共享内存;
基于数据结构及函数接口,创建各个功能模块的动态链接库,以基于动态链接库及共享内存进行数据交互。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:创建各个功能模块的动态链接库之后,接收数据交互请求;基于数据交互请求,确定进行数据交互的目标动态链接库;在目标动态链接库中,确定目标函数接口;确定目标共享内存;在目标共享内存中,基于目标函数接口对目标数据进行操作。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:接收数据交互请求之前,创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:确定出数据交互请求中的待操作共享内存及待调用函数接口;判断待操作共享内存和待调用函数接口是否与第一共享内存匹配;若待操作共享内存和待调用函数接口与第一共享内存匹配,则基于数据交互请求中的动态链接库标识确定目标动态链接库。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:接收数据交互请求之前,对各个共享内存进行初始化。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:以单个功能为单位对目标软件进行模块划分,得到功能模块。
本申请实施例提供的一种软件模块化设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:函数接口包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
请参阅图5,本申请实施例提供的另一种软件模块化设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现软件模块化设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
确定目标软件的各个功能模块,每个功能模块实现一个功能;
确定各个功能模块的数据结构;
确定各个数据结构的函数接口;
确定各个功能模块各自的共享内存;
基于数据结构及函数接口,创建各个功能模块的动态链接库,以基于动态链接库及共享内存进行数据交互。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:创建各个功能模块的动态链接库之后,接收数据交互请求;基于数据交互请求,确定进行数据交互的目标动态链接库;在目标动态链接库中,确定目标函数接口;确定目标共享内存;在目标共享内存中,基于目标函数接口对目标数据进行操作。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:接收数据交互请求之前,创建第一共享内存;将所有的函数接口及共享内存的信息填充至第一共享内存。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:确定出数据交互请求中的待操作共享内存及待调用函数接口;判断待操作共享内存和待调用函数接口是否与第一共享内存匹配;若待操作共享内存和待调用函数接口与第一共享内存匹配,则基于数据交互请求中的动态链接库标识确定目标动态链接库。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:接收数据交互请求之前,对各个共享内存进行初始化。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:以单个功能为单位对目标软件进行模块划分,得到功能模块。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:函数接口包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的软件模块化系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的软件模块化方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种软件模块化装置,其特征在于,包括:
目标软件的各个功能模块,每个所述功能模块实现一个功能;
各个所述功能模块对应的动态链接库及各自的共享内存;
其中,所述动态链接库基于所述功能模块的数据结构及函数接口创建,所述函数接口与所述数据结构相匹配,且所述功能模块间基于所述动态链接库及所述共享内存进行数据交互;
其中,还包括:
通信管理器件,用于接收所述功能模块间的数据交互请求;基于所述数据交互请求,确定进行数据交互的目标动态链接库;在所述目标动态链接库中,确定目标函数接口;确定目标共享内存;在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
2.根据权利要求1所述的装置,其特征在于,还包括:
归一化器件,用于所述通信管理器件接收所述功能模块间的数据交互请求之前,创建第一共享内存;将所有的所述函数接口及所述共享内存的信息填充至所述第一共享内存。
3.根据权利要求2所述的装置,其特征在于,所述通信管理器件包括:
确定模组,用于确定出所述数据交互请求中的待操作共享内存及待调用函数接口;
判断模组,用于判断所述待操作共享内存和所述待调用函数接口是否与所述第一共享内存匹配;若所述待操作共享内存和所述待调用函数接口与所述第一共享内存匹配,则基于所述数据交互请求中的动态链接库标识确定所述目标动态链接库。
4.根据权利要求1所述的装置,其特征在于,还包括:
初始化器件,用于所述通信管理器件接收数据交互请求之前,对各个所述共享内存进行初始化。
5.根据权利要求1所述的装置,其特征在于,还包括:
划分器件,用于以单个功能为单位对所述目标软件进行模块划分,得到所述功能模块。
6.根据权利要求1所述的装置,其特征在于,所述函数接口包括共享内存申请函数接口、共享内存数据初始化函数接口、共享内存读函数接口、共享内存写函数接口。
7.一种软件模块化方法,其特征在于,包括:
确定目标软件的各个功能模块,每个所述功能模块实现一个功能;
确定各个所述功能模块的数据结构;
确定各个所述数据结构的函数接口;
确定各个所述功能模块各自的共享内存;
基于所述数据结构及所述函数接口,创建各个所述功能模块的动态链接库;
接收所述功能模块间的数据交互请求;
基于所述数据交互请求,确定进行数据交互的目标动态链接库;
在所述目标动态链接库中,确定目标函数接口;确定目标共享内存;
在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
8.一种软件模块化系统,其特征在于,包括:
第一确定模块,用于确定目标软件的各个功能模块,每个所述功能模块实现一个功能;
第二确定模块,用于确定各个所述功能模块的数据结构;
第三确定模块,用于确定各个所述数据结构的函数接口;
第四确定模块,用于确定各个所述功能模块各自的共享内存;
第一创建模块,用于基于所述数据结构及所述函数接口,创建各个所述功能模块的动态链接库;
第一接收模块,用于接收所述功能模块间的数据交互请求;
第五确定模块,用于基于所述数据交互请求,确定进行数据交互的目标动态链接库;
第六确定模块,用于在所述目标动态链接库中,确定目标函数接口;确定目标共享内存;
第一操作模块,用于在所述目标共享内存中,基于所述目标函数接口对目标数据进行操作。
9.一种软件模块化设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求7所述软件模块化方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求7所述软件模块化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606698.1A CN113254232A (zh) | 2021-06-01 | 2021-06-01 | 软件模块化方法、系统、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606698.1A CN113254232A (zh) | 2021-06-01 | 2021-06-01 | 软件模块化方法、系统、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254232A true CN113254232A (zh) | 2021-08-13 |
Family
ID=77185631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110606698.1A Pending CN113254232A (zh) | 2021-06-01 | 2021-06-01 | 软件模块化方法、系统、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254232A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686464A (zh) * | 2023-01-03 | 2023-02-03 | 山东矩阵软件工程股份有限公司 | 基于多维数据空间的功能模块管理方法及系统 |
CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117309A1 (en) * | 2004-11-24 | 2006-06-01 | Upanshu Singhal | Software configuration methods and client module communication component |
WO2011056170A1 (en) * | 2009-11-04 | 2011-05-12 | Deere & Company | Electronic data processing system having a virtual bus server application |
CN106293757A (zh) * | 2016-08-17 | 2017-01-04 | 佛山智异科技开发有限公司 | 机器人系统软件架构及其实现方法和装置 |
CN106453642A (zh) * | 2016-11-28 | 2017-02-22 | 国网四川省电力公司眉山供电公司 | 基于Linux动态链接库实现用电信息采集终端快速升级的方法 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN112099967A (zh) * | 2020-08-20 | 2020-12-18 | 深圳市元征科技股份有限公司 | 数据传输方法、终端、装置、设备及介质 |
-
2021
- 2021-06-01 CN CN202110606698.1A patent/CN113254232A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117309A1 (en) * | 2004-11-24 | 2006-06-01 | Upanshu Singhal | Software configuration methods and client module communication component |
WO2011056170A1 (en) * | 2009-11-04 | 2011-05-12 | Deere & Company | Electronic data processing system having a virtual bus server application |
CN106293757A (zh) * | 2016-08-17 | 2017-01-04 | 佛山智异科技开发有限公司 | 机器人系统软件架构及其实现方法和装置 |
CN106453642A (zh) * | 2016-11-28 | 2017-02-22 | 国网四川省电力公司眉山供电公司 | 基于Linux动态链接库实现用电信息采集终端快速升级的方法 |
CN109508246A (zh) * | 2018-06-25 | 2019-03-22 | 广州多益网络股份有限公司 | 日志记录方法、系统和计算机可读存储介质 |
CN112099967A (zh) * | 2020-08-20 | 2020-12-18 | 深圳市元征科技股份有限公司 | 数据传输方法、终端、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
张旭彤: "实时高效的共享内存技术在高速磁浮交通仿真中的应用", 《电脑知识与技术》 * |
韩振宇: "《开放式智能数控系统》", 30 June 2017 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686464A (zh) * | 2023-01-03 | 2023-02-03 | 山东矩阵软件工程股份有限公司 | 基于多维数据空间的功能模块管理方法及系统 |
CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
CN116431107B (zh) * | 2023-03-14 | 2023-12-29 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7252789B2 (ja) | Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法 | |
US9811369B2 (en) | Method and system for physical computer system virtualization | |
US8281303B2 (en) | Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine | |
US7925809B2 (en) | Systems and methods for storage management in a data processing device | |
US10133504B2 (en) | Dynamic partitioning of processing hardware | |
CN114003392B (zh) | 一种数据加速计算方法及相关装置 | |
US20080005551A1 (en) | Management of option rom | |
CN113254232A (zh) | 软件模块化方法、系统、装置、设备及计算机存储介质 | |
CN113835644B (zh) | 整机迁移方法、装置、设备及存储介质 | |
CN112306581B (zh) | 一种基板管理控制器管理bios配置的方法及介质 | |
CN109791510B (zh) | 在异构计算中管理数据流 | |
US20060026328A1 (en) | Apparatus And Related Method For Calculating Parity of Redundant Array Of Disks | |
KR102315102B1 (ko) | 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체 | |
CN111444117B (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
TW434491B (en) | Increasing I/O performance through storage of packetized operational information in local memory | |
CN115129648A (zh) | 车载监控板pcie总线转usb总线的方法及装置 | |
CN111338998B (zh) | 基于amp系统的flash访问处理方法及装置 | |
US20050160319A1 (en) | System and method for detecting and reporting resource conflicts | |
JP2022536681A (ja) | 不揮発性記憶区画識別子 | |
US20230089104A1 (en) | Usb controller endpoint resource management | |
CN116069451B (zh) | 一种虚拟化方法、装置、设备、介质、加速器及系统 | |
WO2020221161A1 (zh) | 计算作业处理方法、系统、移动设备及加速设备 | |
CN109032522A (zh) | 固态硬盘的数据读取方法以及固态硬盘 | |
CN112799974B (zh) | 一种存储卡的控制方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210813 |
|
RJ01 | Rejection of invention patent application after publication |