CN103080925B - 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统 - Google Patents
利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统 Download PDFInfo
- Publication number
- CN103080925B CN103080925B CN201080068330.4A CN201080068330A CN103080925B CN 103080925 B CN103080925 B CN 103080925B CN 201080068330 A CN201080068330 A CN 201080068330A CN 103080925 B CN103080925 B CN 103080925B
- Authority
- CN
- China
- Prior art keywords
- variable
- global variable
- memory space
- executable file
- shared drive
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明的工程分析程序之间的同步连接系统,包含:全局变量提取单元,用于提取多个程序的源码中所定义的全局变量;内存管理单元,构成数据库并存储到共享内存中,以根据变量名检索到全局变量;翻译单元,移除源码的全局变量声明区后,通过修改最初源码而生成针对各程序的可执行文件,以在共享内存中分得存储空间;代码执行单元,用于执行由翻译单元生成的可执行文件,以同步的时间间隔进行时间推进,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复。
Description
技术领域
本发明涉及一种利用制作成数据库的共享内存的工程分析程序之间的同步连接方法论和系统。尤其涉及这样一种方法,当集成多个工程分析程序而实现综合分析用途时,将各程序所使用的所有内部变量的存储空间重新分配为制作成数据库的共享内存的空间,从而能够实现多个程序之间连接变量的输入输出和各程序的当前状态的存储及完美恢复,并使时间上同步的联合执行变为可能。
背景技术
以往,为了实现对集成的整个系统的举动进行分析的用途,需要针对用于工厂系统的设计/安全分析等的安全解析代码等为了满足单一目的而开发的现有代码进行合并以实现集成,此时是将现有代码的源码合并为一个大型代码,或者采用以通过DLL(动态链接库:Dynamic Link Library)方式或LIB(静态函数库:Static Library)方式调用函数的形态交换各代码之间的连接变量的值进行结合的方式。由于这些方式提前预先定义程序之间的连接变量的形态和类型后通过函数因子来传递值,因此当需要集成的程序数量增加时,程序彼此之间的连接变量增加,随之所传递的函数类型和调用次数以几何级数增加,并且伴随连接变量的修改,源码必然要修改,因此还必须要经过对源码进行修改后编译的过程,这些导致集成开发时间相当长。
并且,当各程序发生改版(Version-up)时,还存在为了反映改版程序而需要再次经过如上所述的集成过程的困难。并且,在执行集成代码时,为了再现特定情况,需要以在物理存储器中仅记录为进行重启(Restart)而选择的变量的代码来手动修改程序源,才能存储特定情况,因此除预定时间之外,根本无法进行程序状态的存储/恢复,而且即使为了用来进行分析的图形连接,为了将连接变量传递到外部,也必须要修改程序源,如此种种存在很多问题。
发明内容
本发明是为了解决如上所述的问题而提出的,其目的在于提供一种工程分析程序之间的同步连接方法及其系统,该工程分析程序之间的同步连接方法及其系统通过将需要集成的工程分析程序所使用的所有内部变量的存储空间作为制作成数据库的共享内存来使用,从而无需伴随连接变量的修改而修改程序源,即可实现任何连接变量的输入输出,并通过将所定义的共享内存存储到如硬盘等物理存储器,且仅通过将物理存储器的内容恢复到共享内存,即可将各可执行文件的当前状态完美地恢复到与存储时刻相同的状态,并且各可执行文件不仅在时间上同步,而且可以确保独立执行。
本发明的工程分析程序之间的同步连接系统,包含:全局变量提取单元,用于同时提取全局变量和各种信息,该全局变量是多个程序的源码中所定义的;内存管理单元,构成数据库并存储到共享内存中,以能够根据键值(变量名)检索到所述全局变量;翻译单元,移除所述源码的全局变量声明区,然后通过修改最初源码而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间;代码执行单元,用于执行由所述翻译单元生成的可执行文件,以同步的时间间隔推进时间,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复。
尤其,所述全局变量提取单元解析(parsing)所述全局变量,并以特定的结构体形式生成包含关于各全局变量的描述、单位、所属系统、变量形态、维(Dims)、偏移值和变量名中的一个以上的信息,并将所生成的信息传递到所述内存管理单元中。
并且,为了将来自全局变量提取单元的全局变量重新分配共享内存中的存储空间,内存管理单元以具有系统化内存管理逻辑的结构构成共享内存,执行将关于全局变量的信息以结构体形式插入、删除和检索的功能等对全局变量的共享内存中的数据库管理。
并且,所述共享内存的标题包含:表示与所述全局变量一一对应的结构体的对象在所述共享内存中所占的存储空间的大小的整数信息;表示在所述共享内存中全局变量的当前值所占的存储空间的大小的整数信息;表示将在所述代码执行单元中执行的可执行文件的存储空间的大小的整数信息。
并且,所述共享内存的标题进一步包含:用于对与所述全局变量一一对应的结构体的对象构成数据库而进行管理(查询、插入、删除等)的变量;存储与所述全局变量一一对应的结构体的对象的存储空间的起始地址的变量;存储所述全局变量的当前值存储空间的起始地址的变量;存储所述可执行文件的存储空间的起始地址的变量。
并且,所述共享内存包含:用于存储与所述全局变量一一对应的结构体的对象的存储空间;用于存储所述全局变量的当前值的存储空间;用于存储关于所述可执行文件的信息的存储空间。
并且,所述内存管理单元定义用于插入、删除和查询与所述全局变量一一对应的结构体的对象的管理结构体,所述管理结构体包含表示所注册的总全局变量的个数的变量、为了数据检索而指定成为全局变量整体的重点的节点的变量、用于对与所述全局变量一一对应的结构体的对象进行插入、删除、查询和检索的函数。
并且,所述翻译单元将所述最初源码的时间推进区间循环语句修改为等待同步个体的逻辑,并生成所述可执行文件以在所述代码执行单元产生的时间同步信号为接通(ON)的时刻推进时间。
并且,所述翻译单元将关于所述可执行文件的信息存储在所述共享内存中的执行信息结构体中,所述执行信息结构体包含存储可执行文件名称的存储空间、接收同步信号的同步个体存储空间、存储可执行文件的执行状态的存储空间。
并且,所述代码执行单元通过掌握存储所述可执行文件的名称的存储空间、接收同步信号的同步个体的存储空间以及存储可执行文件的执行状态的存储空间中注册的对象的内容,利用于可执行文件的同步执行。
另外,本发明的工程分析程序之间的同步连接方法,包含步骤:提取在程序的源码中定义的全局变量;构成数据库后存储到共享内存中,以能够通过变量名检索所述全局变量;在移除所述源码的全局变量声明区之后,对最初源码进行修改而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间;执行所述生成的可执行文件,以同步的时间间隔推进时间,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复。
尤其,提取在所述程序的源码中定义的全局变量的步骤包含解析(parsing)所述全局变量,并以特定的结构体形式生成包含关于各全局变量的描述、单位、所属系统、变量形态、维、偏移值和变量名中的一个以上的信息的步骤。
并且,构成数据库后存储到共享内存中,以能够通过变量名检索所述全局变量的步骤包含定义管理结构体的步骤,以对与所述全局变量一一对应的结构体的对象进行插入、删除和查询。
并且,所述管理结构体包含表示所注册的总全局变量的个数的变量、为了数据检索而指定成为全局变量整体的重点的节点的变量、用于对与所述全局变量一一对应的结构体的对象进行插入、删除、查询和检索的函数。
并且,在移除所述源码的全局变量声明区之后,对最初源码进行修改而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间的步骤包含将关于所述可执行文件的信息存储在所述共享内存中的执行信息结构体中的步骤。
并且,所述执行信息结构体包含存储可执行文件名称的存储空间、接收同步信号的同步个体存储空间、存储可执行文件的执行状态的存储空间。
并且,当对多个程序进行集成而用作综合分析用途时,还包含将各程序所使用的所有内部变量的存储空间重新分配为制作成数据库的共享内存,将所定义的共享内存存储在所述物理存储器,将所述物理存储器的内容恢复到共享内存而将各可执行文件的状态恢复为与存储时刻相同的状态的步骤。
并且,与针对工程分析程序的图形程序连接时,进一步包含通过所述制作成数据库的共享内存的方式重新分配内部全局变量的存储空间,进行连接变量的当前值的提取和更新的步骤。
根据本发明可以得到如下效果。
为了集成多个工程分析程序,以往需要对现有的源码直接进行集成而制作大型源码,或者需要按照DLL方式或LIB方式的函数因子交换形式进行开发,此时会耗费非常长的集成时间,且更换连接变量会导致相当长的代码修改时间。但是,在本发明中,通过使用系统化共享内存来共享所有全局变量的所有信息,从而可以克服大量的连接传递函数的生成和连接函数调用次数的增加引起的非有效性增加的问题以及关系到连接变量的大量源码的修改等的很多缺点,可以得到大大缩短集成开发时间的效果。
并且,在现有的直接集成源码的方式中,为了存储程序的执行过程中的状态,需要在源码中制作将特定时刻记录到物理存储器的源码,并且除了预定的时刻之外,根本无法实现程序状态的存储和恢复。但是,根据本发明,通过将所定义的共享内存存储到如硬盘等物理存储器中,从而仅将物理存储器的内容恢复到共享内存,即可将各可执行文件的当前状态完美地恢复到与存储时刻相同的状态,因此通过程序进行工程分析时,任意时刻都能根据需要存储程序的状态,在利用同步集成系统进行系统分析作业时具有很大的优势。
并且,在现有的直接集成源码的方式中,即使是经过无数次试错后完成的集成程序,当各程序改版(Version-up)时,为了反映改版内容需要再次重复非常长的集成过程。但是,根据本发明,由于各可执行文件在独立执行的同时也能实现时间同步,因此可以提供能够独立地对各程序进行维护并以改版的代码进行集成的根本解决方法。
并且,现有的集成源码的方式在开发图形连接程序时需要在程序源码中一一指定期望显示(Display)的连接变量,直接以如函数等连接方式将内部变量值公开到外部。但是,根据本发明,通过提供标准化的连接变量的插入、删除、查询和检索功能函数,因此在开发图形显示程序等具有其他目的的连接程序时,也能够提供相当便捷的功能。
附图说明
图1为用于说明本发明的利用制作成数据库的共享内存的工程分析程序之间的同步连接系统的图。
图2为用于说明本发明的制作成数据库的共享内存的结构的图。
图3至图7为用于说明本发明中所使用的结构体的图。
图8和图9为用于说明在本发明的连接系统的翻译单元进行的最初源码的修改例子的图。
图10为用于说明本发明的利用制作成数据库的共享内存的工程分析程序之间的同步连接方法的流程图。
具体实施方式
以下,参照附图来详细说明本发明。在此,对于重复的说明、可能使本发明的要点变得不清楚的公知的功能和构成的详细描述将进行省略。本发明的实施方式是为了对本领域中具有平均知识的人员更加完整地说明本发明而提供的。因此,为了更加清楚地描述,附图中构成要素的形状和大小等可能被放大示出。
下面,详细说明本发明的利用制作成数据库的共享内存的工程分析程序之间的同步连接方法和系统。
图1为用于说明本发明的利用制作成数据库的共享内存的工程分析程序之间的同步连接系统的图。
参照图1,本发明的工程分析程序之间的同步连接系统,包含:全局变量提取单元100,用于将构成多个程序的源码所使用的全局变量和各种信息一起提取出来;内存管理单元200,用所提取的全局变量构成数据库并带有逻辑性地存储到共享内存中,以能够根据变量名(Key值)检索到所提取的全局变量;翻译单元300,移除程序源码的全局变量声明区部分,作为替代通过修改7最初源码而生成可执行文件,以在内存管理单元200所提供的共享内存中分得存储空间;代码执行单元400,用于执行由翻译单元300生成的可执行文件8,以同步的时间间隔推进时间,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复。
参照图1至图7,全局变量提取单元100起到如下作用,即,解析(parsing)构成单一程序的源码6中定义的所有全局变量(或者Static变量、new/malloc等Heap变量),并将关于全局变量的描述(Description)35、单位(Units)36、所属系统(System)37、变量形态(Type)38、维(Dims)39、关于用来存储变量的当前值的内存地址的偏移值(nOffset)40、变量名(Name)41等各种信息制作成VAR_INFO结构体34的形式,并将其传递到内存管理单元200。
为了将来自全局变量提取单元100的全局变量重新分配到共享内存5中的存储空间,如图2所示,内存管理单元200以具有系统化内存管理逻辑的结构构成共享内存5,将关于全局变量的信息以VAR_INFO结构体34的形式插入。并且,内存管理单元200还提供执行删除和检索功能29的函数,起到在共享内存5中对全局变量执行数据库管理的作用。
为此,共享内存5具有如图2所示的存储结构,共享内存5的标题由SHARED_MEMORY_HEADER结构体15开始。
进一步来讲,SHARED_MEMORY_HEADER结构体15的起初4字节空间16存储用于表示与全局变量一一对应的结构体ANODE的对象30在共享内存5中的存储空间23的大小的整数信息(在此对应于nVarsSize值)。并且,其次4字节空间17中存储用于表示在共享内存5中全局变量的当前值存储空间24所占的大小的整数信息(在此对应于nValuesSize值)。并且,其次4字节空间18中存储表示将在随后要说明的、代码执行单元400执行的可执行文件8的信息存储空间25的大小的整数信息(在此对应于nExesSize值)。
并且,SHARED_MEMORY_HEADER结构体15中作为构成要素而存储如下成员变量,即,作为用于对ANODE结构体30的对象构成数据库而进行管理(查询/插入/删除)的DataBaseManager结构体26的Vars成员变量19、存储ANODE对象30的存储空间(大小:nVarsSize字节)23的起始地址20-1的pVars指针成员变量21、存储全局变量的当前值存储空间(大小:nValuesSize字节)24的起始地址21-1的pValues指针成员变量21、存储可执行文件的信息存储空间(大小:nExesSize字节)25的起始地址22-1的pExes指针成员变量22。
并且,共享内存5具有上述ANODE对象30的存储空间23。此外,共享内存5具有内部全局变量的当前值存储空间24和针对多个可执行文件(数量相当于要执行的分析代码的个数)的信息存储空间25。
若通过全局变量提取单元100提取了工程分析程序的源码6的全局变量,则关于其全局变量的信息填满VAR_INFO结构体34的字段。VAR_INFO结构体34由如下字段构成。
-Description:关于变量的Description字符串存储空间35
-Units:关于变量的单位存储空间36
-System:变量所属的代表系统名存储空间37
-Type:变量的(char/bool/short/int/real/double等)型信息存储空间38
-Dims:变量的维信息存储空间39
-nOffset:从用于存储全局变量当前值的空间的起始地址101到对应变量的值的存储空间的偏移值存储空间40
-Name:变量名字符串存储空间41
ANODE结构体30中作为成员变量而存在VAR_INFO结构体34和两个ANODE指针变量30,ANODE指针成员变量31、32是对应于数据库的在先(previous)和其次(next)Node指针的概念。一个全局变量具有一个对应的ANODE对象30。
并且,在本发明中,为了带有逻辑性且简便地插入、删除和查询ANODE结构体30,定义DataBaseManager结构体26。在此,DataBaseManager结构体26对应于权利要求书中记载的“管理结构体”。
DataBaseManager结构体26由作为所注册的总全局变量的个数(即,注册的ANODE对象的个数)的Count成员变量27、作为为了数据检索而指定成为全局变量整体的重点的节点的ANODE结构体指针的ancestor成员变量28、用于对ANODE结构体30进行插入、删除、查询和检索的Insert/Delete/Traverse/Search成员函数29构成。
当提取到一个全局变量而获得一个ANODE结构体30信息时,通过SHARED_MEMORY_HEADER结构体15的DataBaseManager结构体26型的Vars成员变量19的Insert29函数,在ANODE对象存储空间23的一个区域插入ANODE对象30。
此时,表示ANODE对象存储空间23的大小的nVarsSize增加+sizeof(ANODE),pValues地址值21、101也增加+sizeof(ANODE),表示pValues存储空间24的大小的nValuesSize也增加+sizeof(全局变量的数据形态),作为存储可执行文件信息的空间25的pExes指针值22、102也顺延增加。
并且,关于由后述的翻译单元300形成的可执行文件8的信息被存储到EXE_INFO结构体42,成员变量如下。在此,EXE_INFO结构体42对应于权利要求书中记载的“执行信息结构体”。
“ExeName”是存储包含路径的可执行文件名称的存储空间43,“hStart成员变量”是将要接收同步信号的同步个体的存储空间44,“Status成员变量”是存储可执行文件的执行状态的存储空间45。
EXE_INFO对象的存储空间25位于共享内存5的末端部分(即,nValuesSize字节后面),被注册到该空间25的EXE_INFO对象利用于由代码执行单元400进行的同步执行。
具有上述逻辑结构的共享内存5只要掌握对应于整体大小的sizeof(SHARED_MEMORY_HEADER)+nVarsSize+nValuesSize+nExeSize字节,就意味着不仅能够检索和查询所有全局变量信息和当前状态值,而且只要将共享内存5的整个字节存储到如硬盘等物理存储器12,以后即可完美地恢复到特定时间的状态,因此在后述的代码执行单元40中可利用此存储和恢复当前状态。
翻译单元300从各程序源码6中移除全局变量(或者,C语言的情况下为new/malloc等Heap变量)的声明区46,作为替代对最初源码进行语法分析而修改47(Translation)源码本身,以分得内存管理单元200所提供的共享内存存储空间。
并且,翻译单元300将程序的时间推进(Advancement)10区间循环语句48修改为等待同步个体的逻辑49,修改为仅在代码执行单元400产生的时间同步信号接通(ON)的时刻11进行时间推进10,并对修改的源码进行编译(compiling)而生成(linking)可执行文件。
代码执行单元400在共享内存5中的可执行文件信息存储空间25中检索可执行文件8的信息,执行同步化。
即,代码执行单元400掌握记录在可执行文件信息存储空间25的起始地址到共享内存末端为止的空间(大小:nExesSize字节)的EXE_INFO45对象的内容,提取可执行文件8的路径和文件名而执行可执行文件8,在此,可执行文件信息存储空间25的起始地址是共享内存5的pExes指针成员变量22的存储值。此时,可执行文件8根据如WaitForSingleObject等的同步待机函数49在待机(Waiting)状态下等待同步信号。
通过接收在代码执行单元400产生的同步信号,各可执行文件8进行同步时间推进10。此时,各可执行文件8执行预定的时间Δt(Time Advancement)11-1之后,再次通过同步待机函数进入待机状态。包含可执行文件8的相关信息的EXE_INFO结构体42的Status成员变量45表示对应的可执行文件8是否完成一次Time Advancement作业的状态,通过在代码执行单元400定期掌握所有EXE_INFO42对象的Status成员变量信息,在所有可执行文件8完成一次时间推进(Time Advancement)的时刻将同步个体的信号修改为ON11,从而使可执行文件8能够进行下一个时间推进(Time Advancement)。按照这种逻辑,各可执行文件8能够在实现时间同步的情况下被执行。
并且,在代码执行单元400中通过将对应于上述共享内存5的整体大小的sizeof(SHARED_MEMORY_HEADER)+nVarsSize+nValuesSize+nExesSiZe字节记录到如硬盘等物理存储器(Physical Memory)12中,从而可以将记录时的所有可执行文件的状态全部存储。不仅如此,仅将物理存储器12的内容恢复到共享内存5中,即可将各可执行文件8的当前状态完美地恢复到与存储时刻相同的状态。
如上所述,根据本发明,为了集成多个工程分析程序6,以往需要对现有的源码直接进行集成而制作大型源码,或者需要按照DLL方式或LIB方式的函数因子交换形式进行开发,此时需要非常长的集成时间和更换连接变量带来的相当长的代码修改时间。但是,在本发明中,通过使用系统化共享内存来共享所有全局变量的所有信息,从而可以克服大量的连接传递函数的生成和连接函数调用次数的增加引起的非有效性增加的问题以及关系到连接变量的大量源码的修改等的很多缺点,可以得到大大缩短集成开发时间的效果。
并且,在现有的直接集成源码的方式中,为了存储程序的执行过程中的状态,需要在源码中制作将特定时刻记录到物理存储器的源码,并且除了预定的时刻之外,根本无法实现程序状态的存储和恢复。但是,根据本发明,通过将所定义的共享内存5存储到如硬盘等物理存储器12中,从而仅将物理存储器12的内容恢复到共享内存5,即可将各可执行文件8的当前状态完美地恢复到与存储时刻相同的状态,因此通过程序进行工程分析时,任意时刻都能根据需要存储程序的状态,在利用同步集成系统进行系统分析作业时具有很大的优势。
并且,在现有的直接集成源码的方式中,即使是经过无数次试错后完成的集成程序,当各程序改版(Version-up)时,为了反映改版内容需要再次重复非常长的集成过程。但是,根据本发明,由于各可执行文件8在独立执行的同时也能实现时间同步,因此可以提供能够独立地对各程序进行维护并以改版的代码进行集成的根本解决方法。
并且,现有的集成源码的方式在开发图形连接程序时需要在程序源码中一一指定期望显示(Display)的连接变量,直接以如函数等连接方式将内部变量值公开到外部。但是,根据本发明,通过提供标准化的连接变量的插入、删除、查询和检索功能函数,因此在开发图形显示程序等具有其他目的的连接程序时,也能够提供相当便捷的功能。
图10为用于说明本发明的利用制作成数据库的共享内存的工程分析程序之间的同步连接方法的流程图。
本发明所提供的工程程序之间的同步连接方法,包含步骤:提取在程序的源码中定义的全局变量;用该全局变量构成数据库后存储到共享内存中,以能够通过变量名进行检索;在移除其源码的全局变量声明区之后,对最初源码进行修改而生成针对各程序的可执行文件,以在共享内存中分得存储空间;执行所生成的可执行文件,以同步的时间间隔推进时间,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复。
参照图10,首先,全局变量提取单元解析构成单一程序的源码中定义的所有全局变量(或者Static变量、new/malloc等Heap变量),将关于变量的各种信息制作成VAR_INFO结构体34形式,并将其传递到内存管理单元(S100)。
然后,内存管理单元用来自全局变量提取单元的全局变量构成数据库后带有逻辑性地存储到共享内存,以通过变量名(Key值)容易进行检索(S110)。
然后,翻译单元从各程序源码中移除全局变量(或者,C语言的情况下为new/malloc等Heap变量)的声明区,作为替代对最初源码进行语法分析而修改源码本身,以得到内存管理单元所提供的共享内存存储空间(S120)。并且,翻译单元将程序的时间推进区间循环语句修改为等待同步个体的逻辑,修改为仅在代码执行单元产生的时间同步信号接通(ON)的时刻推进时间,并对修改的源码进行编译而生成可执行文件(S130)。
然后,代码执行单元在共享内存中的可执行文件信息存储空间中检索可执行文件的信息,进行同步执行(S140)。如此,通过接收代码执行单元中产生的同步信号,各可执行文件8进行同步时间推进(S150)。
最后,代码执行单元通过将对应于上述共享内存的整体大小的字节记录到如硬盘等物理存储器中,从而可以将记录时的所有可执行文件的状态全部进行存储,而且仅将物理存储器的内容恢复到共享内存中,既可将各可执行文件的当前状态完美地恢复到与存储时刻相同的状态(S160)。
如上所述,附图和说明书中公开了最佳实施例。虽然在此使用了特定的术语,但这只是为了说明本发明,并不是为了限定其技术含义或者限定权利要求书中记载的本发明的保护范围而使用的。因此,本技术领域的具有一般知识水平的人员能够理解到可以根据本发明进行各种变形和得到等同的其他实施例。因此,本发明的真正的技术保护范围应该由权利要求书的技术思想来确定。
Claims (17)
1.一种工程分析程序之间的同步连接系统,其特征在于,包含:
全局变量提取单元,用于提取多个程序的源码中所定义的全局变量;
内存管理单元,构成数据库并存储到共享内存中,以根据变量名检索到所述全局变量;
翻译单元,移除所述源码的全局变量声明区后,通过修改最初源码而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间;
代码执行单元,用于执行由所述翻译单元生成的可执行文件,以同步的时间间隔使所述可执行文件进行时间推进,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复,
所述翻译单元生成所述可执行文件以使所述可执行文件在所有可执行文件完成一次时间推进而所述代码执行单元产生的时间同步信号为接通的时刻推进时间。
2.根据权利要求1所述的工程分析程序之间的同步连接系统,其特征在于,所述全局变量提取单元解析所述全局变量,并以特定的结构体形式生成包含关于各全局变量的描述、单位、所属系统、变量形态、维、偏移值和变量名的信息,并将所生成的信息传递到所述内存管理单元中。
3.根据权利要求1所述的工程分析程序之间的同步连接系统,其特征在于,所述共享内存的标题包含:
表示与所述全局变量一一对应的结构体的对象在所述共享内存中所占的存储空间的大小的整数信息;
表示在所述共享内存中全局变量的当前值所占的存储空间的大小的整数信息;
表示将在所述代码执行单元中执行的可执行文件的存储空间的大小的整数信息。
4.根据权利要求3所述的工程分析程序之间的同步连接系统,其特征在于,所述共享内存的标题进一步包含:
用于对与所述全局变量一一对应的结构体的对象构成数据库而进行管理的变量;
存储与所述全局变量一一对应的结构体的对象的存储空间的起始地址的变量;
存储所述全局变量的当前值存储空间的起始地址的变量;
存储所述可执行文件的存储空间的起始地址的变量。
5.根据权利要求3所述的工程分析程序之间的同步连接系统,其特征在于,所述共享内存包含:
用于存储与所述全局变量一一对应的结构体的对象的存储空间;
用于存储所述全局变量的当前值的存储空间;
用于存储关于所述可执行文件的信息的存储空间。
6.根据权利要求3所述的工程分析程序之间的同步连接系统,其特征在于,所述内存管理单元定义用于插入、删除和查询与所述全局变量一一对应的结构体的对象的管理结构体,所述管理结构体包含表示所注册的总全局变量的个数的变量、为了数据检索而指定成为全局变量整体的重点的节点的变量、用于对与所述全局变量一一对应的结构体的对象进行插入、删除、查询和检索的函数。
7.根据权利要求1所述的工程分析程序之间的同步连接系统,其特征在于,所述翻译单元将所述最初源码的时间推进区间循环语句修改为等待同步个体的逻辑。
8.根据权利要求1所述的工程分析程序之间的同步连接系统,其特征在于,所述翻译单元将关于所述可执行文件的信息存储在所述共享内存中的执行信息结构体中,所述执行信息结构体包含存储可执行文件名称的存储空间、接收同步信号的同步个体存储空间、存储可执行文件的执行状态的存储空间。
9.根据权利要求8所述的工程分析程序之间的同步连接系统,其特征在于,所述代码执行单元通过掌握存储所述可执行文件名称的存储空间、接收同步信号的同步个体的存储空间以及存储可执行文件的执行状态的存储空间中注册的对象的内容,利用于可执行文件的同步执行。
10.一种工程分析程序之间的同步连接方法,其特征在于,包含步骤:
提取在程序的源码中定义的全局变量;
构成数据库后存储到共享内存中,以根据变量名检索所述全局变量;
在移除所述源码的全局变量声明区之后,对最初源码进行修改而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间;
执行所述生成的可执行文件,以同步的时间间隔推进时间,并将确定各程序的状态的共享内存的存储空间存储到物理存储器及进行恢复,
其中,生成针对各程序的可执行文件的步骤包括如下步骤:生成所述可执行文件以使所述可执行文件在所有可执行文件完成一次时间推进而代码执行单元产生的时间同步信号为接通的时刻推进时间。
11.根据权利要求10所述的工程分析程序之间的同步连接方法,其特征在于,提取在所述程序的源码中定义的全局变量的步骤包含解析所述全局变量,并以特定的结构体形式生成包含关于各全局变量的描述、单位、所属系统、变量形态、维、偏移值和变量名的信息的步骤。
12.根据权利要求10所述的工程分析程序之间的同步连接方法,其特征在于,构成数据库后存储到共享内存中,以根据变量名检索所述全局变量的步骤包含定义管理结构体的步骤,以对与所述全局变量一一对应的结构体的对象进行插入、删除和查询。
13.根据权利要求12所述的工程分析程序之间的同步连接方法,其特征在于,所述管理结构体包含表示所注册的总全局变量的个数的变量、为了数据检索而指定成为全局变量整体的重点的节点的变量、用于对与所述全局变量一一对应的结构体的对象进行插入、删除、查询和检索的函数。
14.根据权利要求10所述的工程分析程序之间的同步连接方法,其特征在于,在移除所述源码的全局变量声明区之后,对最初源码进行修改而生成针对各程序的可执行文件,以在所述共享内存中分得存储空间的步骤包含将关于所述可执行文件的信息存储在所述共享内存中的执行信息结构体中的步骤。
15.根据权利要求14所述的工程分析程序之间的同步连接方法,其特征在于,所述执行信息结构体包含存储可执行文件名称的存储空间、接收同步信号的同步个体存储空间、存储可执行文件的执行状态的存储空间。
16.根据权利要求10所述的工程分析程序之间的同步连接方法,其特征在于,当对多个程序进行集成而用作综合分析用途时,进一步包含将各程序所使用的所有内部变量的存储空间重新分配为制作成数据库的共享内存,将所定义的共享内存存储在所述物理存储器,将所述物理存储器的内容恢复到共享内存而将各可执行文件的状态恢复为与存储时刻相同的状态的步骤。
17.根据权利要求16所述的工程分析程序之间的同步连接方法,其特征在于,与针对工程分析程序的图形程序连接时,进一步包含通过所述制作成数据库的共享内存的方式重新分配内部全局变量的存储空间,进行连接变量的当前值的提取和更新的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100073204A KR101139610B1 (ko) | 2010-07-29 | 2010-07-29 | 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템 |
KR10-2010-0073204 | 2010-07-29 | ||
PCT/KR2010/005946 WO2012015097A1 (ko) | 2010-07-29 | 2010-09-02 | 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103080925A CN103080925A (zh) | 2013-05-01 |
CN103080925B true CN103080925B (zh) | 2016-11-16 |
Family
ID=45530284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080068330.4A Expired - Fee Related CN103080925B (zh) | 2010-07-29 | 2010-09-02 | 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20130132341A1 (zh) |
EP (1) | EP2600256A4 (zh) |
JP (1) | JP5465358B2 (zh) |
KR (1) | KR101139610B1 (zh) |
CN (1) | CN103080925B (zh) |
WO (1) | WO2012015097A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101425527B1 (ko) * | 2012-05-01 | 2014-07-31 | 한국수력원자력 주식회사 | 원자력발전소 훈련용 시뮬레이터의 실시간 중대사고 모의 시스템 및 그 방법 |
CN105740038B (zh) * | 2016-02-02 | 2019-04-23 | 浙江工业大学 | 一种面向物联网重编程的存储优化方法 |
CN106445467A (zh) * | 2016-09-28 | 2017-02-22 | 广东芬尼克兹节能设备有限公司 | 一种操作变量同步方法及系统 |
KR101702912B1 (ko) * | 2016-11-03 | 2017-02-07 | (주) 이디티 | 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템 |
CN108205596B (zh) * | 2016-12-16 | 2021-06-08 | 中广核研究院有限公司 | 实现核电厂严重事故分析计算程序仿真功能的方法 |
US10453427B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Register spill/fill using shared local memory space |
CN112783912B (zh) * | 2021-02-03 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499362A (zh) * | 2002-10-24 | 2004-05-26 | 国际商业机器公司 | 在异构体系结构的集成可执行程序中用多个代码访问全局变量的系统和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2774770B2 (ja) * | 1994-05-19 | 1998-07-09 | 株式会社東芝 | デバッグ方式 |
KR20030010217A (ko) * | 2001-07-26 | 2003-02-05 | 주식회사 모비츠 | 통합 중개 시스템에서의 어플리케이션 데이터 처리방법 |
EP1546926A4 (en) * | 2002-09-18 | 2008-07-02 | Netezza Corp | RECORDING PROCESSOR, METHOD AND DEVICE FOR ASYMMETRIC STREAMING |
EP1489862A1 (en) | 2003-06-20 | 2004-12-22 | Axalto S.A. | Database synchronization |
KR20050090744A (ko) * | 2004-03-09 | 2005-09-14 | 주식회사 비즈모델라인 | 클라이언트와 서버간 동기화 기술을 이용한 개인화된상품정보 제공방법 |
JP2008102915A (ja) * | 2006-09-20 | 2008-05-01 | Toshiba Tec Corp | 情報処理装置及び情報処理プログラム |
KR20100004208A (ko) * | 2008-07-03 | 2010-01-13 | 삼성전자주식회사 | 단말 및 그의 db 동기화 방법 |
JP5186307B2 (ja) * | 2008-08-27 | 2013-04-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | シミュレーション方法、システム及びプログラム |
US8561035B2 (en) * | 2009-09-03 | 2013-10-15 | International Business Machines Corporation | Method and system to discover possible program variable values by connecting program value extraction with external data sources |
-
2010
- 2010-07-29 KR KR1020100073204A patent/KR101139610B1/ko active IP Right Grant
- 2010-09-02 CN CN201080068330.4A patent/CN103080925B/zh not_active Expired - Fee Related
- 2010-09-02 US US13/812,167 patent/US20130132341A1/en not_active Abandoned
- 2010-09-02 JP JP2013521667A patent/JP5465358B2/ja active Active
- 2010-09-02 EP EP10855369.4A patent/EP2600256A4/en not_active Withdrawn
- 2010-09-02 WO PCT/KR2010/005946 patent/WO2012015097A1/ko active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499362A (zh) * | 2002-10-24 | 2004-05-26 | 国际商业机器公司 | 在异构体系结构的集成可执行程序中用多个代码访问全局变量的系统和装置 |
Non-Patent Citations (1)
Title |
---|
Performance of Cluster-enabled OpenMP for the SCASH Software Distributed Shared Memory System;Yoshinori Ojima 等;《Processing of the 3rd IEEE/ACM International Symposium on Cluster Computing and the Grid,2003》;20030515;450-456 * |
Also Published As
Publication number | Publication date |
---|---|
KR101139610B1 (ko) | 2012-04-27 |
KR20120011950A (ko) | 2012-02-09 |
EP2600256A1 (en) | 2013-06-05 |
JP2013533564A (ja) | 2013-08-22 |
US20130132341A1 (en) | 2013-05-23 |
CN103080925A (zh) | 2013-05-01 |
JP5465358B2 (ja) | 2014-04-09 |
WO2012015097A1 (ko) | 2012-02-02 |
EP2600256A4 (en) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080925B (zh) | 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统 | |
CN105550296B (zh) | 一种基于spark-SQL大数据处理平台的数据导入方法 | |
CN101233505B (zh) | 从关系数据库中检索对象并将其保存到关系数据库 | |
US5206951A (en) | Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types | |
CN107958057A (zh) | 一种用于异构数据库中数据迁移的代码生成方法及装置 | |
CN108469952B (zh) | 一种管理游戏配置的代码生成方法及配套工具 | |
US6532476B1 (en) | Software based methodology for the storage and retrieval of diverse information | |
CN106126204B (zh) | 一种基于模块化设计的信息系统迭代式扩展开发方法 | |
CN105488187A (zh) | 多源异构数据增量抽取的方法及装置 | |
EP0304071B1 (en) | Data integration by object management | |
CN110879813A (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
US20120042299A1 (en) | Model transformation unit | |
CN104737166A (zh) | 数据沿袭系统 | |
CN102023979A (zh) | 元数据管理方法及系统 | |
CN103440285B (zh) | 大型手机游戏系统及其数据库更新方法 | |
CN101221504A (zh) | 测试脚本的处理方法及其调度执行系统 | |
Ebraert et al. | Change-oriented software engineering | |
CN101866315A (zh) | 软件开发工具的测试方法及系统 | |
CN101533346B (zh) | 源文件的比较装置及方法 | |
CN108959626A (zh) | 一种跨平台异构数据简报高效自动生成方法 | |
EP0304072B1 (en) | Customization by automated resource substitution | |
CN100520781C (zh) | 主内存数据中心数据处理方法 | |
CN113536041A (zh) | 一种铁路工程地理信息元数据批量快速采集方法 | |
CA2593883A1 (en) | Markup language based database upgrades | |
WO2018182454A1 (ru) | Способ разработки, хранения и использования компилированных в бинарное представление программ в таблицах баз данных |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190529 Address after: Seoul, South Kerean Co-patentee after: Hanweit Electric Power Co., Ltd. Patentee after: Smart Coop Co., Ltd. Address before: Gyeongbuk city of Gyeongju Korea Patentee before: Korea Atomic Energy Research Institute |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161116 Termination date: 20190902 |
|
CF01 | Termination of patent right due to non-payment of annual fee |