CN113419881A - 一种基于通用黑板的本地共享内存运行方法和系统 - Google Patents
一种基于通用黑板的本地共享内存运行方法和系统 Download PDFInfo
- Publication number
- CN113419881A CN113419881A CN202110966000.7A CN202110966000A CN113419881A CN 113419881 A CN113419881 A CN 113419881A CN 202110966000 A CN202110966000 A CN 202110966000A CN 113419881 A CN113419881 A CN 113419881A
- Authority
- CN
- China
- Prior art keywords
- blackboard
- control module
- main control
- universal blackboard
- universal
- 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.)
- Granted
Links
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/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于通用黑板的本地共享内存运行方法和系统,方法包括:自主交互进程从通用黑板中拉取目标数据进行仿真计算,并生成第一补丁文件发送至主控模块;主控模块将全部第一补丁文件打包生成第二补丁文件,并将第二补丁文件写入通用黑板,然后生成并发布对应的索引消息;自主交互进程根据索引消息判断下一时钟周期内通用黑板中待拉取数据是否发生变化,若是,则拉取通用黑板的最新数据进行仿真计算,若否,则直接读取本地数据。本发明采用GBB通用黑板技术实现了本地黑板数据的快速读写以及网络数据的高速共享,同时采用网线进行本地内存同步,且在仿真计算时合理选择通用黑板数据或者本地数据,进一步提高了仿真速度和仿真效率。
Description
技术领域
本发明涉及军事模拟训练领域,尤其涉及一种基于通用黑板的本地共享内存运行方法和系统。
背景技术
随着现代军事化要求,军事训练越来越强调对抗性,特别是针对高技术条件下军事作战的特点而发展起来的军事模拟训练,成为提高部队战斗力的重要手段。与传统训练手段相比,军事模拟训练不受实操训练设备使用情况的限制,并且在作战环境和操作使用上与实战十分相似,同时,利用模拟训练手段,还能够真实记录训练情况,做到训练水平的量化评估。一般情况下,军事模拟训练系统运行过程中会采用不同进程进行不同模拟运算,因此需要保证本地共享内存同步的实时性。目前本地共享内存运行方案一般通过内存映射实现多个进程之间的内存共享,内存使用混乱、同步性差且内存的利用率低,难以满足军事模拟训练的需求。
发明内容
本发明提供了一种基于通用黑板的本地共享内存运行方法和系统,解决了以上所述的技术问题。
本发明解决上述技术问题的技术方案如下:一种基于通用黑板的本地共享内存运行方法,利用主控模块以及至少一个自主交互进程,方法包括:
S1,所述主控模块发布第一时钟消息;
S2,所述至少一个自主交互进程接收所订阅的第一时钟消息,并在所述第一时钟消息对应的时钟周期内,从通用黑板中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至所述主控模块;
S3,所述主控模块接收所述第一补丁文件,将所述第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件,并将所述第二补丁文件写入所述通用黑板后,生成并发布对应的索引消息;
S4,所述至少一个自主交互进程接收所述主控模块发布的所述索引消息和下一第一时钟消息,并根据所述索引消息判断通用黑板中待拉取的目标数据是否发生变化,若是,则从所述通用黑板中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算;
所述索引消息包括所述第二补丁文件中状态值发生变化的目标描述子的字段。
本发明实施例的第二方面提供了一种基于通用黑板的本地共享内存运行系统,包括主控模块、通用黑板以及与所述主控模块连接的至少一个自主交互进程,
所述至少一个自主交互进程中每个自主交互进程分别用于从所述主控模块接收所订阅的第一时钟消息,在所述第一时钟消息对应的时钟周期内从所述通用黑板中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至所述主控模块;以及用于接收所述主控模块发布的索引消息和下一第一时钟消息,并根据所述索引消息判断通用黑板中待拉取的目标数据是否发生变化,若是,则从所述通用黑板中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算;
所述主控模块用于发布第一时钟消息,接收所有订阅所述第一时钟消息的自主交互进程发送的第一补丁文件,将所述第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件;以及用于将所述第二补丁文件写入通用黑板后生成并发布对应的索引消息,所述索引消息包括所述第二补丁文件中状态值发生变化的目标描述子的字段。
本发明提供了一种基于通用黑板的本地共享内存运行方法和系统,具有以下有益效果:
(1)本发明采用GBB通用黑板技术,将大量的复杂模型根据计算量的大小合理配置到不同的仿真进程,提高了仿真模型的计算效率;同时采用GBB通用黑板技术实现了本地黑板数据的快速读写以及网络数据的高速共享,从而保证了军事模拟训练系统的实时共享性和业务协同性。
(2)本发明绕过了CPU直接采用网线进行本地内存同步,同时进行仿真计算时合理选择通用黑板的共享内存数据或者本地数据,无需每次都拉取通用黑板的共享内存数据,从而进一步提高了仿真速度和仿真效率。。
为使发明的上述目的、特征和优点能更明显易懂,下文特举本发明较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是实施例1提供的基于通用黑板的本地共享内存运行方法的流程示意图;
图2是实施例1提供的基于通用黑板的本地共享内存运行方法的时序图;
图3是实施例2提供的基于通用黑板的本地共享内存运行系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本发明所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
通用黑板GBB(GenericBlack-Board)是一个通用的本地共享仓库,在仿真应用时,它包含了整个仿真执行过程的应用数据,同时采用共享内存空间机制,使得所有自主交互进程(Agent)能够在任何时间访问并应用该数据。具体来说,GBB内存分配采用内存换性能的策略,在系统运行前按本地黑板所需最大的数据量提前分配内存空间,系统运行期间,黑板不再进行内存分配与释放。且GBB每块数据区采用“读、写”双缓存机制,通过双缓存的轮转解决多应用数据同步问题。同时,所述通用黑板具有包括至少一个仿真实体的实体信息表,且每个仿真实体均具有对应的描述符表,所述描述符表包括所述仿真实体对应的至少一个描述子的字段和状态值。比如一个实施例中,该军事模拟训练系统需要建立多艘船,每艘船即是一个采用类,比如class建立的仿真实体,实体信息表中包含这些船的ID、创建时间和创建类型等。而这艘船的油箱、位置等都是一个个的描述子,描述符表中包括这些描述子的字段信息和最后更新时间,而剩余油量和经纬度即是对应描述子的状态值。
具体来说,在分布式系统的每台PC机中均存在一块本地共享仓库(即GBB)和多个自主交互进程(agent),自主交互进程比如界面更新进程(即GUI)可以只读取GBB的共享内存,而比如位置计算进程需要读取黑板数据并计算移动位置后将计算结果写入共享内存。每个自主交互进程需要在各自的时钟周期内完成读取、计算和/或写入数据等步骤,如果每个自主交互进程的步调即时钟周期都保持一致,那么整体仿真数据的一致性、差异性就保持得比较好。因此需要一个独立的主控模块(即master)来对多个自主交互进程进行控制。如图1、图2所示,本实施例的基于通用黑板的本地共享内存运行方法包括以下步骤:
S1,主控模块发布第一时钟消息。
S2,至少一个自主交互进程接收所订阅的第一时钟消息,并在第一时钟消息对应的时钟周期内,从通用黑板中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至主控模块。比如主控模块每50毫秒发布一个时钟消息tick,每个自主交互进程均订阅了这个时钟消息,从接收到该时钟消息开始计算,经过读取、计算等步骤后,生成第一补丁文件发送至主控模块,这个第一补丁文件实际上是对通用黑板内容的差异化补丁。举例来说,通用黑板的实体信息表包括一艘船,该船具有d1、d2、d3三个描述子,其中d1是位置数据。此时位置计算进程接收到第一时钟消息tick后,从通用黑板中拉取该位置数据d1,并仿真计算形成d1’,此时就会把d1’整个序列化成一个字符串,并通过消息路由将这个字符串作为第一补丁文件发送给主控模块Master。
S3,主控模块接收第一补丁文件,将第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件,并将第二补丁文件写入通用黑板后,生成并发布对应的索引消息,这样通过索引消息即可告知这些自主交互进程哪些描述子发生了变化,即哪些描述子的状态值被更新了。比如任一艘船的位置是位置计算进程仿真的,其将修改的位置d1’打成第一补丁文件发给主控模块,而在实际计算过程中,可以形成大量类似d1’的不同数据,主控模块会把这些数据打包成一个大补丁,然后对通用黑板数据进行一次性的批量修改,从而提高仿真效率。当数据修改成功后再通过索引消息通知其他自主交互进程这艘船的位置发生变化了,这时第一周期就全部结束了。这里的索引消息中只包括第二补丁文件中状态值发生变化的目标描述子的字段,没有实际的描述子的数据,比如经纬度值,因此数据量非常小,比如1亿个仿真实体的索引消息才几k,最多几M,从而保持较快的同步速度。
S4,至少一个自主交互进程接收主控模块发布的索引消息和下一第一时钟消息,并根据索引消息判断通用黑板中待拉取的目标数据是否发生变化,若是,则从通用黑板中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算。具体来说,通过索引消息,每个自主交互进程均知道哪些描述子的状态值发生了改变以及被谁修改了。这时,当某一自主交互进程判断所需要使用的状态值发生改变时,即本地数据已经落后了,就从通用黑板中拉取最新数据并复写到本地对应数据;而判断状态值没有发生改变时,即本地数据没有落后,就直接读取本地数据进行计算。因为通用黑板的读取速度是微秒级,而本地数据通过CPU指令的读取速度是纳秒级,这样就无需经常读取通用黑板,直接读取本地值就可以了,从而提高整体的速度读取速度和仿真速度。
一个优选实施例中,当任一自主交互进程的仿真计算结果还包括创建和/或删除仿真实体时,方法包括:
S6,自主交互进程通过远程调用协议,即RPC向主控模块发送实体创建指令和/或实体删除指令;
S7,主控模块接收实体创建指令和/或实体删除指令,根据实体创建指令调用对应服务,比如Create服务创建新增仿真实体、修改新增仿真实体在通用黑板的状态值,并发布新的索引消息。和/或根据实体删除指令将通用黑板中对应仿真实体的状态值清零。
具体来说,第一补丁文件中除了将位置数据d1变成d1’之外,还可能创建和/或删除一个仿真实体,比如创建一个导弹、创建一个船或者销毁一艘船,此时自主交互进程和主控模块不再通过补丁和消息路由进行通讯,而是直接进行通讯。同时为了重复利用,当删除仿真实体时,主控模块不会去删除这个仿真实体,而是将仿真实体的状态清零下一次可能再用。但是这个创建和删除的动作会影响索引消息,比如当这艘船被炸毁了,索引消息中对应目标描述子的字段,比如位置和油箱也要更新,同时通用黑板中的对应状态值也要更新。
一个优选实施例中,该基于通用黑板的本地共享内存运行方法还包括回放步骤,具体为:
S8,主控模块获取通用黑板的初始状态,将初始状态和所有的第二补丁文件分别发送至回放数据库。
S9,回放数据库的录制器按照时间顺序将所有第二补丁文件依次叠加到初始状态中,并生成不同时间点对应的通用黑板录制文件。
S10,当接收到用户发送的回放命令时,主控模块发布具有回放时间点和回放模式的第二时钟消息。
S11,至少一个自主交互进程接收所订阅的第二时钟消息,识别出回放模式后停止仿真计算;同时回放数据库接收所订阅的第二时钟消息后,调用回放器拉取最接近回放时间点的目标通用黑板录制文件,并发送至主控模块。
S12,主控模块接收目标通用黑板录制文件,并将目标通用黑板录制文件写入到通用黑板。
具体来说,主控模块连接一个回放数据库,回放数据库包括记录器和回放器。主控模块在将第二补丁文件写进通用黑板的同时,记录器会把第二补丁文件也记录到回放数据库中,因此这个第二补丁文件是增量上升的,记录器会在黑板的初始化状态上面按照时间顺序依次叠加很多第二补丁文件,即会对通用黑板的所有变化进行录制。当接收到用户发送的回放命令时,主控模块会发布具有回放时间点和回放模式的第二时钟消息。当发现这个时钟消息是对应回放模式时,用于仿真计算的agent就可以不工作。而回放器根据这个时钟消息得到回放时间点比如t’,从回放数据库中找到最靠近t’的目标通用黑板录制文件,即黑板状态,并将其从回放数据库拉出来,打成一个大的回放补丁,并发送给主控模块,然后主控模块再写回到通用黑板,并用GUI的界面进行显示。
另一优选实施例中,自主交互进程为界面更新进程。这里界面更新进程是不会产生补丁的,因为其不会去改通用黑板的数据,它是通用黑板可视化的一个自主交互进程,通过二维方式、三维方式、地图方式以及数据方式、表格方式等等如实呈通用黑板上的数据变化,因此同样需要知道目标描述子的状态值是什么时候发生变化的。如果界面的数据更新频率过快,就可能会导致界面卡顿。因此优选实施例中,界面更新进程根据预设界面刷新频率从所有的索引消息中获取目标刷新时刻的目标索引消息,根据目标索引消息获取状态值发生变化的目标描述子,并通知图形用户界面对目标描述子的状态值进行更新。这样界面的刷新频率和数据更新频率可以设置为不一样。比如界面的刷新频率设置为1秒一次,而数据更新频率设置为1秒100次,一秒后刷新仿真实体的目标位置时,该仿真实体实际发生了100次目标位置变化,产生了100个目标位置数据,界面更新进程只读取该100个数据中最新的位置数据,从而减少因刷新频率太快导致的界面卡顿问题。
另一优选实施例中,所述基于通用黑板的本地共享内存运行方法还包括快照保存和恢复步骤,具体为:
S13,界面更新进程通过远程调用协议向主控模块发送保存快照命令;
S14,主控模块接收保存快照命令,获取通用黑板的当前状态,将当前状态序列化后压缩为二进制的快照文件,并保存至对应的快照数据库;
S15,当界面更新进程识别出通用黑板为初始化状态时,从快照数据库中调用对应的快照文件对通用黑板进行状态恢复。
以上实施例基于通用黑板的本地共享内存运行方法,采用GBB通用黑板技术实现了本地黑板数据的快速读写以及网络数据的高速共享,同时采用消息路由进行本地内存同步,且在仿真计算时合理选择通用黑板数据或者本地数据,进一步提高了仿真速度和仿真效率。
需要说明的是,在上述各个实施例中,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,亦可以交换执行等等。
作为本发明实施例的另一方面,本发明实施例还提供一种基于通用黑板的本地共享内存运行系统,如图3所示,包括主控模块100、通用黑板200以及与主控模块100连接的至少一个自主交互进程300,
至少一个自主交互进程300中每个自主交互进程分别用于从主控模块100接收所订阅的第一时钟消息,在第一时钟消息对应的时钟周期内从通用黑板200中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至主控模块100,比如通过消息路由600将第一补丁文件发送至主控模块100;以及用于接收主控模块100发布的索引消息和下一第一时钟消息,并根据索引消息判断通用黑板200中待拉取的目标数据是否发生变化,若是,则从通用黑板200中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算;
主控模块100用于发布第一时钟消息,接收所有订阅第一时钟消息的自主交互进程300发送的第一补丁文件,将第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件;以及用于将第二补丁文件写入通用黑板200后生成并发布对应的索引消息,索引消息包括第二补丁文件中状态值发生变化的目标描述子的字段。
优选实施例中,系统还包括与主控模块100连接的回放数据库400,
主控模块100还用于获取通用黑板200的初始状态,将初始状态和所有的第二补丁文件分别发送至回放数据库400,并当接收到用户发送的回放命令时发布具有回放时间点和回放模式的第二时钟消息;以及用于接收目标通用黑板录制文件,并将目标通用黑板录制文件写入到通用黑板200;
回放数据库400用于调用录制器401按照时间顺序将所有第二补丁文件依次叠加到初始状态中,生成不同时间点的通用黑板录制文件;以及用于接收第二时钟消息,调用回放器402拉取最接近回放时间点的目标通用黑板录制文件,并发送至主控模块100;
至少一个自主交互进程300还用于接收所订阅的第二时钟消息,并在识别出回放模式后停止仿真计算。
另一优选实施例中,至少一个自主交互进程300包括界面更新进程,系统还包括快照数据库500,
界面更新进程用于通过远程调用协议向主控模块发送保存快照命令;以及用于当识别出通用黑板为初始化状态时,从快照数据库500中调用对应的快照文件对通用黑板进行状态恢复;
主控模块100还用于接收保存快照命令,获取通用黑板的当前状态,将当前状态序列化后压缩为二进制的快照文件,并保存至对应的快照数据库500。
本发明中,主控模块以BBMaster、BBMasterPrivate、IMasterService为基类,MasterServiceProxy、MasterMasterService、ReplayMasterService、SimulationMasterService、SlaverMasterService为主控主要服务端交互子类。主控模块对外处理与自主交互进程的数据交换接口主要通过GBBAccessor类提供,GBBAccessor与自主交互进程为1:1关系,通过BBClient管理GBBAccessor。BBClient与GBBAccessor为1:n关系,BBClient可以直接访问黑板数据,这样自主交互进程都是通过BBClient来访问黑板数据,通过观察者模式来进行仿真、快照、回放等模式的多节点分布式数据同步。
需要说明的是,上述基于通用黑板的本地共享内存运行系统可执行本发明实施例所提供的基于通用黑板的本地共享内存运行方法,具备执行方法相应的功能模块和有益效果。未在基于通用黑板的本地共享内存运行系统实施例中详尽描述的技术细节,可参见本发明实施例所提供的基于通用黑板的本地共享内存运行方法。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于通用黑板的本地共享内存运行方法,利用主控模块以及至少一个自主交互进程,方法包括:
S1,所述主控模块发布第一时钟消息;
S2,所述至少一个自主交互进程接收所订阅的第一时钟消息,并在所述第一时钟消息对应的时钟周期内,从通用黑板中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至所述主控模块;
S3,所述主控模块接收所述第一补丁文件,将所述第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件,并将所述第二补丁文件写入所述通用黑板后,生成并发布对应的索引消息;
S4,所述至少一个自主交互进程接收所述主控模块发布的所述索引消息和下一第一时钟消息,并根据所述索引消息判断通用黑板中待拉取的目标数据是否发生变化,若是,则从所述通用黑板中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算;
所述索引消息包括所述第二补丁文件中状态值发生变化的目标描述子的字段。
2.根据权利要求1所述基于通用黑板的本地共享内存运行方法,其特征在于,所述通用黑板具有包括至少一个仿真实体的实体信息表,且每个仿真实体均具有对应的描述符表,所述描述符表包括所述仿真实体对应的至少一个描述子的字段和状态值。
3.根据权利要求2所述基于通用黑板的本地共享内存运行方法,其特征在于,所述根据仿真计算结果生成第一补丁文件发送至主控模块具体为:将所述仿真计算结果序列化生成第一补丁文件,并通过消息路由将所述第一补丁文件发送至所述主控模块。
4.根据权利要求1-3任一所述基于通用黑板的本地共享内存运行方法,其特征在于,当任一自主交互进程的仿真计算结果还包括创建和/或删除仿真实体时,所述方法包括:
S6,所述自主交互进程通过远程调用协议向所述主控模块发送实体创建指令和/或实体删除指令;
S7,所述主控模块接收所述实体创建指令和/或所述实体删除指令,根据所述实体创建指令创建新增仿真实体并修改新增仿真实体在通用黑板的状态值和/或根据所述实体删除指令将所述通用黑板中对应仿真实体的状态值清零。
5.根据权利要求4所述基于通用黑板的本地共享内存运行方法,其特征在于,所述方法还包括回放步骤,具体为:
S8,所述主控模块获取通用黑板的初始状态,将所述初始状态和所有的第二补丁文件分别发送至回放数据库;
S9,所述回放数据库的录制器按照时间顺序将所有所述第二补丁文件依次叠加到所述初始状态中,并生成不同时间点对应的通用黑板录制文件;
S10,当接收到用户发送的回放命令时,所述主控模块发布具有回放时间点和回放模式的第二时钟消息;
S11,所述至少一个自主交互进程接收所订阅的第二时钟消息,识别出所述回放模式后停止仿真计算;同时所述回放数据库接收所订阅的所述第二时钟消息后,调用回放器拉取最接近所述回放时间点的目标通用黑板录制文件,并发送至所述主控模块;
S12,所述主控模块接收所述目标通用黑板录制文件,并将所述目标通用黑板录制文件写入到通用黑板。
6.根据权利要求5所述基于通用黑板的本地共享内存运行方法,其特征在于,所述自主交互进程为界面更新进程,所述界面更新进程根据预设界面刷新频率从所有的索引消息中获取目标刷新时刻的目标索引消息,根据所述目标索引消息获取状态值发生变化的目标描述子,并通知图形用户界面对目标描述子的状态值进行更新。
7.根据权利要求6所述基于通用黑板的本地共享内存运行方法,其特征在于,所述方法还包括快照保存和恢复步骤,具体为:
S13,所述界面更新进程通过远程调用协议向所述主控模块发送保存快照命令;
S14,所述主控模块接收所述保存快照命令,获取所述通用黑板的当前状态,将所述当前状态序列化后压缩为二进制的快照文件,并保存至对应的快照数据库;
S15,当所述界面更新进程识别出通用黑板为初始化状态时,从所述快照数据库中调用对应的快照文件对所述通用黑板进行状态恢复。
8.一种基于通用黑板的本地共享内存运行系统,其特征在于,包括主控模块、通用黑板以及与所述主控模块连接的至少一个自主交互进程,
所述至少一个自主交互进程中每个自主交互进程分别用于从所述主控模块接收所订阅的第一时钟消息,在所述第一时钟消息对应的时钟周期内从所述通用黑板中拉取目标数据进行仿真计算,并根据仿真计算结果生成第一补丁文件发送至所述主控模块;以及用于接收所述主控模块发布的索引消息和下一第一时钟消息,并根据所述索引消息判断通用黑板中待拉取的目标数据是否发生变化,若是,则从所述通用黑板中拉取最新的目标数据进行仿真计算,若否,则直接读取本地的目标数据进行仿真计算;
所述主控模块用于发布第一时钟消息,接收所有订阅所述第一时钟消息的自主交互进程发送的第一补丁文件,将所述第一时钟消息对应时间周期内的全部第一补丁文件打包生成第二补丁文件;以及用于将所述第二补丁文件写入通用黑板后生成并发布对应的索引消息,所述索引消息包括所述第二补丁文件中状态值发生变化的目标描述子的字段。
9.根据权利要求8所述基于通用黑板的本地共享内存运行系统,其特征在于,所述系统还包括与所述主控模块连接的回放数据库,
所述主控模块还用于获取通用黑板的初始状态,将所述初始状态和所有的第二补丁文件分别发送至回放数据库,并当接收到用户发送的回放命令时发布具有回放时间点和回放模式的第二时钟消息;以及用于接收目标通用黑板录制文件,并将所述目标通用黑板录制文件写入到通用黑板;
所述回放数据库用于调用录制器按照时间顺序将所有所述第二补丁文件依次叠加到所述初始状态中,生成不同时间点的通用黑板录制文件;以及用于接收所述第二时钟消息,调用回放器拉取最接近所述回放时间点的目标通用黑板录制文件,并发送至所述主控模块;
所述至少一个自主交互进程还用于接收所订阅的第二时钟消息,并在识别出所述回放模式后停止仿真计算。
10.根据权利要求8或9所述基于通用黑板的本地共享内存运行系统,其特征在于,所述至少一个自主交互进程包括界面更新进程,所述系统还包括快照数据库,
所述界面更新进程用于通过远程调用协议向所述主控模块发送保存快照命令;以及用于当识别出通用黑板为初始化状态时,从所述快照数据库中调用对应的快照文件对所述通用黑板进行状态恢复;
所述主控模块还用于接收所述保存快照命令,获取所述通用黑板的当前状态,将所述当前状态序列化后压缩为二进制的快照文件,并保存至对应的快照数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110966000.7A CN113419881B (zh) | 2021-08-23 | 2021-08-23 | 一种基于通用黑板的本地共享内存运行方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110966000.7A CN113419881B (zh) | 2021-08-23 | 2021-08-23 | 一种基于通用黑板的本地共享内存运行方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113419881A true CN113419881A (zh) | 2021-09-21 |
CN113419881B CN113419881B (zh) | 2021-11-19 |
Family
ID=77719766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110966000.7A Active CN113419881B (zh) | 2021-08-23 | 2021-08-23 | 一种基于通用黑板的本地共享内存运行方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113419881B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003413A (zh) * | 2021-12-30 | 2022-02-01 | 深圳佑驾创新科技有限公司 | 一种ipc数据通信方法、装置、设备及介质 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
CN116069530A (zh) * | 2023-04-03 | 2023-05-05 | 中国人民解放军国防科技大学 | 基于内存池的仿真引擎数据共享黑板系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019627A1 (en) * | 1997-09-05 | 2004-01-29 | Kabushiki Kaishi Toshiba | Information processing apparatus and method and information processing program recording medium |
CN105630578A (zh) * | 2015-12-24 | 2016-06-01 | 中国人民解放军海军航空工程学院 | 一种基于分布式多Agent系统的作战仿真引擎 |
CN105893656A (zh) * | 2016-03-24 | 2016-08-24 | 中国人民解放军装甲兵工程学院 | 一种面向平台级Agent交互仿真的陆军分队作战实验方法 |
US20210073212A1 (en) * | 2018-01-17 | 2021-03-11 | Geeq Corporation | Blockchain methods, nodes, systems and products |
-
2021
- 2021-08-23 CN CN202110966000.7A patent/CN113419881B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019627A1 (en) * | 1997-09-05 | 2004-01-29 | Kabushiki Kaishi Toshiba | Information processing apparatus and method and information processing program recording medium |
CN105630578A (zh) * | 2015-12-24 | 2016-06-01 | 中国人民解放军海军航空工程学院 | 一种基于分布式多Agent系统的作战仿真引擎 |
CN105893656A (zh) * | 2016-03-24 | 2016-08-24 | 中国人民解放军装甲兵工程学院 | 一种面向平台级Agent交互仿真的陆军分队作战实验方法 |
US20210073212A1 (en) * | 2018-01-17 | 2021-03-11 | Geeq Corporation | Blockchain methods, nodes, systems and products |
Non-Patent Citations (3)
Title |
---|
M PRAKASH: "Resource discovery using brokering with dispute solving in grid environment", 《ICACT2011》 * |
卫翔: "通用黑板技术在大型分布式仿真系统中的应用", 《电子技术与软件工程》 * |
陈勇: "基于通用黑板的多Agent作战仿真系统建模", 《系统仿真技术及其应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003413A (zh) * | 2021-12-30 | 2022-02-01 | 深圳佑驾创新科技有限公司 | 一种ipc数据通信方法、装置、设备及介质 |
CN114003413B (zh) * | 2021-12-30 | 2022-04-26 | 深圳佑驾创新科技有限公司 | 一种ipc数据通信方法、装置、设备及介质 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
CN116069530A (zh) * | 2023-04-03 | 2023-05-05 | 中国人民解放军国防科技大学 | 基于内存池的仿真引擎数据共享黑板系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113419881B (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113419881B (zh) | 一种基于通用黑板的本地共享内存运行方法和系统 | |
CN110493325B (zh) | 区块链状态数据同步方法及装置、电子设备 | |
CN106484906B (zh) | 一种分布式对象存储系统闪回方法及装置 | |
CN104965757A (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
CN112947856B (zh) | 一种内存数据的管理方法、装置、计算机设备及存储介质 | |
CN109144416B (zh) | 查询数据的方法和装置 | |
CN111125402B (zh) | 用于记录关于被渲染资产的信息的方法和系统 | |
CN110968554A (zh) | 一种基于文件链分块的区块链存储方法、存储系统及存储介质 | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN105100149A (zh) | 用于管理文件的方法和系统 | |
CN113806300B (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN113821487A (zh) | 本地文件系统实现方法、装置、设备及存储介质 | |
CN108897822A (zh) | 一种数据更新方法、装置、设备及可读存储介质 | |
CN113641446A (zh) | 内存快照创建方法、装置、设备及可读存储介质 | |
CN108255434A (zh) | 标签管理方法、管理装置及计算机可读存储介质 | |
CN110022341A (zh) | 一种数据传输方法及相关设备 | |
CN111522689B (zh) | 全局快照方法、装置、电子设备及计算机可读存储介质 | |
CN109558082B (zh) | 分布式文件系统 | |
CN114328018B (zh) | 快照的创建方法、计算设备及存储介质 | |
CN117082046A (zh) | 数据上传方法、装置、设备及存储介质 | |
CN114116008B (zh) | 命令队列管理方法、装置、可读存储介质及电子设备 | |
CN115270731A (zh) | 混合文档的协同编辑方法及装置 | |
CN113420468B (zh) | 一种基于通用黑板的数据写入冲突处理方法和系统 | |
CN113419822B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |