CN116069530A - 基于内存池的仿真引擎数据共享黑板系统 - Google Patents
基于内存池的仿真引擎数据共享黑板系统 Download PDFInfo
- Publication number
- CN116069530A CN116069530A CN202310346206.9A CN202310346206A CN116069530A CN 116069530 A CN116069530 A CN 116069530A CN 202310346206 A CN202310346206 A CN 202310346206A CN 116069530 A CN116069530 A CN 116069530A
- Authority
- CN
- China
- Prior art keywords
- model
- data
- blackboard
- entity
- pool
- 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/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于内存池的仿真引擎数据共享黑板系统。所述系统包括内存池总池管理模块、元数据记录模块、模型和交互内存池分池模块、反射对象类模块、高效更新共享数据模块、高效查询共享数据模块。采用本系统能够通过构建共享内存池实现仿真过程数据共享,黑板利用共享内存池进行仿真实体间的数据存储和读取,避免传递和更新共享数据的过程中产生大量的冗余拷贝开销问题,从而使数据共享黑板整体更加高效稳定,接口更加通用。
Description
技术领域
本申请涉及分布并行仿真引擎以及仿真引擎内模型的数据共享技术领域,特别是涉及一种基于内存池的仿真引擎数据共享黑板系统。
背景技术
离散系统仿真引擎基于时间或事件驱动方式驱动仿真模型运行,各仿真模型在仿真过程中除了不断更新自我状态,还需要与其他模型进行数据共享,包括:读取其他模型属性状态,与其他模型进行交互。以上数据共享行为将会导致大量的数据访问与交换,因此,仿真引擎中的共享数据管理方式会很大程度上影响系统运行效率。
在仿真系统中,发布订阅模式被广泛用于仿真数据的共享,其中,每个仿真模型订阅自身感兴趣的数据,同时对外发布其他模型所感兴趣的数据。黑板机制是一种发布订阅的实现方式,通过创建一块公共的数据区域存储仿真引擎中所有模型所公布的属性和交互,使仿真模型可以方便的查询到其所订阅的数据。
传统的黑板在共享数据管理方面表现欠佳,主要存在以下两个方面的问题:
1)传递和更新共享数据的过程中易产生了大量冗余拷贝开销。黑板向模型提供数据时,模型需要将数据拷贝到本地才能使用,同样的,模型向黑板提交更新数据时,黑板也需要将数据拷贝至对应区域。对于大体积数据结构而言,如果模型只访问或者只更新其中的局部成员,将会产生大量的冗余拷贝。
2)仿真过程中难以高效的进行动态内存申请与回收。仿真引擎在仿真过程中,为了存储共享数据会产生大量的动态内存分配与回收操作,例如:交互的生命周期总是动态产生又销毁,仿真过程中可能会有模型动态加入或退出,乐观时间同步的状态回退需要保留模型的过时属性等等。基于程序语言所提供的例程如C语言中的malloc()和free()方法虽然能够简单的向操作系统动态申请和释放内存空间,但也因为必须进入系统内核态而造成额外的执行负担。并且,由操作系统动态分配的内存往往是不连续的,这还导致了内存碎片化以及空间局部性下滑的问题,这就导致引擎的执行效率进一步降低。所以设计一个高效的仿真引擎数据共享黑板显得尤为重要。
发明内容
基于此,有必要针对上述技术问题,提供一种基于内存池的仿真引擎数据共享黑板系统。本发明能够有效解决当前各类仿真引擎黑板中的普遍问题:一是传递和更新共享数据的过程中易产生了大量冗余拷贝开销,二是仿真过程中难以高效的进行动态内存申请与回收。
一种基于内存池的仿真引擎数据共享黑板系统,所述系统包括:
内存池总池管理模块,用于在初始化时以块为单位向操作系统批量申请内存,根据申请得到的内存块构建共享内存池;在使用时将共享内存池分成内存池总池和内存池分池,根据内存池总池向操作系统申请内存块,根据内存池分池使用内存池总池中的内存块存储共享数据;
元数据记录模块,用于根据想定文件和对象描述文件获取模型实体列表、模型类列表以及模型实体对应的模型属性数据尺寸和交互数据尺寸,并将模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;其中,模型实体是根据模型实体列表构建得到;
模型和交互内存池分池模块,用于根据元数据中的模型属性数据尺寸和交互数据尺寸,在黑板中为每种模型和交互创建内存池分池;
反射对象类模块,用于根据模型实体列表为每一个模型实体构建对应的反射对象类指针,并在黑板中对应构建实体信息表,根据模型类列表为每一类模型构建对应的反射对象集类,并在黑板中对应构建所有模型的查询结果缓存集;
高效更新共享数据模块,用于在仿真过程中将模型实体更新的模型属性数据提交给黑板,黑板根据更新的模型属性数据对内存池分池中的副本进行更新;
高效查询共享数据模块,用于在仿真过程中,模型根据实体ID、实体类型和自定义条件对其他模型的数据进行查询,并根据黑板返回的查询结果缓存集中的反射对象类指针或反射对象集类获取查询的数据。
在其中一个实施例中,内存池总池管理模块还用于:在共享内存池进行内存释放时,以内存块为单位进行释放;其中,内存块固定为一整块长度的连续内存。
在其中一个实施例中,元数据记录模块还用于:
通过解析想定文件获取模型实体列表,根据模型实体列表构建模型实体;
根据想定文件中的对象描述文件路径,读取并解析对象描述文件,根据对象描述文件中的数据结构,解析模型实体对应的模型属性数据和交互数据的结构,获取模型实体对应的模型属性数据尺寸和交互数据尺寸,并将模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;
根据对象描述文件中的模型类信息,生成对应的模型类表。
在其中一个实施例中,元数据记录模块还用于:
当模型属性数据或交互数据为结构体时,根据黑板同时记录结构体的所有子属性相对结构体首地址的偏移量,并记录结构体的所有子属性的元数据;
当模型属性数据或交互数据为数组时,根据黑板同时记录数组的长度以及数组元素的元数据。
在其中一个实施例中,模型和交互内存池分池模块还用于:
读取元数据记录模块中的元数据,根据元数据中的模型属性数据尺寸,在黑板中为模型对应创建内存池分池,根据元数据中的交互数据尺寸,在黑板中为每种交互对应创建内存池分池;其中,内存池分池从内存块中划分出一段长度等于模型属性数据尺寸或交互数据尺寸的连续区间,作为模型属性数据或交互数据的存储区域,并记录连续区间的首地址指针。
在其中一个实施例中,模型和交互内存池分池模块还用于:
在仿真过程之前,对每种模型和交互对应创建的内存池分池进行初始化,初始化时内存池分池中不持有内存块;
在仿真过程中,当且仅当内存池分池的内存不足时,内存池分池向内存池总池申请新的内存块,当内存池分池需要释放内存块时,内存池分池向内存池总池提交申请,根据内存池总池释放内存块。
在其中一个实施例中,反射对象类模块还用于:
根据模型实体列表为每一个模型实体创建对应的反射对象类指针,根据反射对象类指针在黑板上为每一个模型实体对应构建实体信息表;其中,反射对象类指针包括两个常量指针,分别为模型共享数据在内存池分池中的首地址常量指针和模型共享数据的元数据的常量指针;
根据模型类列表为每一类模型创建对应的反射对象集类,根据反射对象集类在黑板中对应创建所有模型的查询结果缓存集;其中,反射对象集类中的元素为反射对象类指针。
在其中一个实施例中,高效更新共享数据模块还包括:
模型属性数据整体更新单元,用于当模型实体更新自身的整体模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交所有指向模型属性数据的指针,黑板根据所有指向模型属性数据的指针,对内存池分池中的副本进行更新;其中,所述副本为内存池分池之前存储的未更新的模型属性数据;
模型属性数据部分更新单元,用于当模型实体更新自身的部分模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的模型属性数据的指针,黑板根据指向发生更新的模型属性数据的指针以及发生更新的模型属性数据相对首地址指针的偏移,对内存池分池中的副本进行更新;
模型属性数据局部更新单元,用于当模型实体的模型属性数据的局部数据发生更新时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的局部数据的指针,并向黑板声明发生更新的局部数据的偏移,黑板根据指向发生更新的局部数据的指针以及发生更新的局部数据的偏移,对内存池分池中的副本进行更新。
在其中一个实施例中,高效查询共享数据模块还包括:
实体ID查询单元,用于当模型根据实体ID对其他模型的数据进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针或反射对象集类,模型根据黑板返回的反射对象类指针或反射对象集类获取查询的数据;
实体类型查询单元,用于当模型根据实体类型对其他模型的数据进行查询时,模型调用黑板查询接口,将实体类型提交黑板,黑板根据实体类型进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据;
自定义条件查询单元,用于当模型根据自定义条件对其他模型的数据进行查询时,模型调用黑板查询接口得到对应的反射对象集类,再调用过滤函数传入自定义条件得到查询结果。
在其中一个实施例中,实体ID查询单元还用于:
当模型根据实体ID对单个模型实体进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针,模型根据黑板返回的反射对象类指针获取查询的数据;
当模型根据实体ID集合对多个模型实体进行查询时,模型调用黑板查询接口,将实体ID集合提交给黑板,黑板根据实体ID集合进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据。
上述基于内存池的仿真引擎数据共享黑板系统,包括内存池总池管理模块、元数据记录模块、模型和交互内存池分池模块、反射对象类模块、高效更新共享数据模块以及高效查询共享数据模块。其中,内存池总池管理模块和模型和交互内存池分池模块是核心模块,是高效数据管理的基石,同时避免了大量的动态内存申请与回收操作,保证了整个黑板的高效运行;元数据记录模块对模型和交互数据进行记录,为数据管理提供了基础支撑;反射对象类模块映射了模型共享数据地址,同时提供方法供模型获得对应数据,避免了大量的拷贝开销;高效更新共享数据模块和高效查询共享数据模块为频繁调用模块,其接口统一,调用更加方便。
本发明通过构建共享内存池实现仿真过程数据共享,黑板利用共享内存池进行仿真实体间的数据存储和读取,从而使数据共享黑板整体更加高效稳定,接口更加通用。与现有的技术相比,本发明具有如下效果:①黑板通过共享内存池进行仿真引擎数据共享,可以避免传递和更新共享数据的过程中产生大量的冗余拷贝开销问题;②避免了在仿真过程中进行大量的动态内存申请与回收操作,从而导致整体仿真效率低下,内存碎片化等问题;③模型属性数据的更新接口和访问接口统一,模型开发人员只需要根据不同情况传入不同参数给黑板即可,使用更加简单便捷。
附图说明
图1为一个实施例中基于内存池的仿真引擎数据共享黑板系统的工作流程图;
图2为一个实施例中基于内存池的仿真引擎数据共享黑板系统的各个模块间的逻辑结构图;
图3为一个实施例中内存池总池管理模块的工作流程图;
图4为一个实施例中元数据记录模块的工作流程图;
图5为一个实施例中内存池分池构建模块的工作流程图;
图6为一个实施例中反射对象类模块的工作流程图;
图7为一个实施例中高效更新共享数据模块的工作流程图;
图8为一个实施例中高效查询共享数据模块的工作流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了基于内存池的仿真引擎数据共享黑板系统的工作流程图,具体步骤包括:
101. 创建共享内存池,该共享内存池通过共享机制由引擎及其下属模型所处的逻辑进程共享;
102. 根据想定文件和对象描述文件获取模型实体列表、模型类列表以及模型实体对应的模型属性数据尺寸和交互数据尺寸,并将模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;其中,模型实体是根据模型实体列表构建得到;
103. 根据元数据中的模型属性数据尺寸和交互数据尺寸,在黑板中为每种模型和交互创建内存池分池;
104. 根据模型实体列表为每一个模型实体构建对应的反射对象类指针,在黑板中对应构建实体信息表,根据模型类列表为每一类模型构建对应的反射对象集类,在黑板中对应构建所有模型的查询结果缓存集;
105. 在仿真过程中将模型实体更新的模型属性数据提交给黑板,黑板根据更新的模型属性数据对内存池分池中的副本进行更新;
106. 在仿真过程中,模型根据实体ID、实体类型和自定义条件对其他模型的数据进行查询,并根据黑板返回的查询结果缓存集中的反射对象类指针或反射对象集类获取查询的数据。
在一个实施例中,如图2所示,提供了基于内存池的仿真引擎数据共享黑板系统,包括:
内存池总池管理模块1,用于共享数据内存总体管理。具体地,用于在初始化时以块为单位向操作系统批量申请内存,根据申请得到的内存块构建共享内存池,其中,内存块固定为一整块较大长度的连续内存(>=1MB);在使用时将共享内存池分成内存池总池和内存池分池,根据内存池总池向操作系统申请内存块,根据内存池分池使用内存池总池中的内存块存储共享数据;以及在共享内存池进行内存释放时,以内存块为单位释放内存。
元数据记录模块2,用于记录元数据信息。具体地,用于通过解析想定文件获取模型实体列表,根据模型实体列表构建模型实体。根据想定文件中的对象描述文件路径,读取并解析对象描述文件,根据对象描述文件中的数据结构,解析模型实体对应的模型属性数据和交互数据的结构,获取模型实体对应的模型属性数据尺寸和交互数据尺寸,并将模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;根据对象描述文件中的模型类信息,生成对应的模型类表。此外,当模型属性数据或交互数据为结构体时,根据黑板同时记录结构体的所有子属性相对结构体首地址的偏移量,并记录结构体的所有子属性的元数据;当模型属性数据或交互数据为数组时,根据黑板同时记录数组的长度以及数组元素的元数据。
模型和交互内存池分池模块3,用于为模型和属性构建内存池分池,使不同模型和交互之间内存隔离,操作更方便快捷。具体地,用于读取元数据记录模块中的元数据,根据元数据中的模型属性数据尺寸,在黑板中为模型对应创建内存池分池,根据元数据中的交互数据尺寸,在黑板中为每种交互对应创建内存池分池;其中,内存池分池从内存块中划分出一段长度等于模型属性数据尺寸或交互数据尺寸的连续区间,作为模型属性数据或交互数据的存储区域,并记录连续区间的首地址指针。还用于在仿真过程之前,对每种模型和交互对应创建的内存池分池进行初始化,初始化时内存池分池中不持有内存块;在仿真过程中,当且仅当内存池分池的内存不足时,内存池分池向内存池总池申请新的内存块,当内存池分池需要释放内存块时,内存池分池向内存池总池提交申请,根据内存池总池释放内存块。
反射对象类模块4,用于映射模型数据,并提供接口用于获取模型当前实际数据。具体地,用于根据模型实体列表为每一个模型实体按照自己的实体ID创建对应的反射对象类指针,根据反射对象类指针在黑板上为每一个模型实体对应构建实体信息表;其中,反射对象类指针包括两个常量指针,分别为模型共享数据在内存池分池中的首地址常量指针和模型共享数据的元数据的常量指针;根据模型类列表为每一类模型创建对应的反射对象集类,汇总此类模型所有实体ClassID相同的属性信息,根据反射对象集类在黑板中对应创建所有模型的查询结果缓存集;其中,反射对象集类中的元素为反射对象类指针,反射对象集类提供类似STL(Standard Template Library,标准模板库)操作,方便后续模型查询结果后对其进行增删改查及通过条件过滤、排序等算法操作。
高效更新共享数据模块5,用于用户在仿真过程高效更新共享数据信息。具体地,包括:
模型属性数据整体更新单元,用于当模型实体更新自身的整体模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交所有指向模型属性数据的指针,黑板根据所有指向模型属性数据的指针,对内存池分池中的副本进行更新;模型属性数据部分更新单元,用于当模型实体更新自身的部分模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的模型属性数据的指针,黑板根据指向发生更新的模型属性数据的指针以及发生更新的模型属性数据相对首地址指针的偏移,对内存池分池中的副本进行更新;模型属性数据局部更新单元,用于当模型实体的模型属性数据的局部数据发生更新时(如结构体的成员或者数组中某段区间数据发生变动时),在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的局部数据的指针,并向黑板声明发生更新的局部数据的偏移,黑板根据指向发生更新的局部数据的指针以及发生更新的局部数据的偏移,对内存池分池中的副本进行更新。其中,所述副本为内存池分池之前存储的未更新的模型属性数据。
高效查询共享数据模块6,用于用户在仿真过程中高效查询共享数据信息,模型调用黑板查询接口时,黑板并不复制整个数据区间,而仅返回一个封装了两个常量指针的反射对象类指针或反射对象集类给模型,模型获得该对象类指针或反射对象集类后,通过调用该对象类指针或反射对象基类的获取属性的成员方法来获取对应数据。具体地,包括:
实体ID查询单元,用于当模型根据实体ID对其他模型的数据进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针或反射对象集类,模型根据黑板返回的反射对象类指针或反射对象集类获取查询的数据;实体类型查询单元,用于当模型根据实体类型对其他模型的数据进行查询时,模型调用黑板查询接口,将实体类型提交黑板,黑板根据实体类型进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据;自定义条件查询单元,用于当模型根据自定义条件对其他模型的数据进行查询时,模型调用黑板查询接口得到对应的反射对象集类,再调用过滤函数传入自定义的lamda表达式得到查询所需结果;
其中实体ID查询单元还用于:当模型根据实体ID对单个模型实体进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针,模型根据黑板返回的反射对象类指针获取查询的数据;当模型根据实体ID集合对多个模型实体进行查询时,模型调用黑板查询接口,将实体ID集合提交给黑板,黑板根据实体ID集合进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据。
图1展现了内存池总池管理模块1、元数据记录模块2、模型和交互内存池分池模块3、反射对象类模块4、高效更新共享数据模块5、高效查询共享数据模块6,这六者之间的数据流向和逻辑关联。高效仿真引擎数据共享黑板系统的核心功能是数据管理,内存池总池管理模块1和模型和交互内存池分池模块3是核心模块,是高效数据管理的基石,同时避免了大量的动态内存申请与回收操作,保证了整个黑板的高效运行;元数据记录模块2对模型和交互数据进行记录,为数据管理提供了基础支撑;反射对象类模块4映射了模型共享数据地址,同时提供方法供模型获得对应数据,避免了大量的拷贝开销;高效更新共享数据模块5和高效查询共享数据模块6为频繁调用模块,其接口统一,调用更加方便。
在其中一个实施例中,如图3所示,提供了内存池总池管理模块1的工作流程,具体步骤包括:
301.共享内存池初始化开始;
302.以内存块为单位向操作系统进行批量内存申请,块的大小通常固定为一整块较大长度的连续内存(>=1MB);
303.检测内存申请操作是否成功,如果检测结果为是,则转至步骤305;如果检测结果为否,则转至步骤304;
304.由于步骤303检测到内存申请操作失败,因此共享内存池创建失败,退出程序;
305.由于步骤303检测到内存申请操作成功,将批量申请的内存块进行组合构建共享内存池,通过共享内存机制由引擎与其挂载模型所处的逻辑进程共享,后续进行内存释放也以内存块为单位进行操作;
306.内存池总池负责当内存块不足时,向操作系统申请新的内存块;
307.内存池分池使用总池块资源来存储共享数据;
308.共享内存池创建成功。
在其中一个实施例中,如图4所示,提供了元数据记录模块2的工作流程,具体步骤包括:
401.元数据记录模块程序开始;
402.检测想定文件和对象描述文件是否存在;如果检测结果为是,则转至404;如果检测结果为否,则转至步骤403;
403.由于步骤402没有检测到想定文件或者对象描述文件,退出程序;
404.由于步骤402检测到想定文件存在,打开想定文件;
405.解析想定文件,获取模型实体列表,根据模型实体列表构建模型实体;
406.由于步骤402检测到对象描述文件存在,打开对象描述文件;
407.读取对象描述文件内容,获取基础类型和枚举类型,解析复合数据类型和数组类型,复合数据类型和数组类型必须严格按照获取的基础类型和枚举类型来构成;
408.根据407获取的数据结构,解析模型属性数据和交互数据的结构;
409.根据对象描述文件记载的模型类信息,生成对应的模型类表;
410.在黑板上记录共享的元数据,元数据包含模型属性数据尺寸和交互数据尺寸;
411.针对复杂类型和数组类型,进行额外信息记录。如果共享数据是结构体,记录结构体的所有子属性相对结构体首地址的偏移量,以及其结构体的所有子属性的元数据;如果共享数据是数组,记录数组的长度以及数组元素的元数据。
在其中一个实施例中,如图5所示,提供了模型和交互内存池分池模块3的工作流程,具体步骤包括:
501.从元数据记录模块读取元数据信息;
502.获取记录的模型属性数据尺寸大小;
503.获取记录的交互数据尺寸大小;
504.从内存块中划分等于模型属性数据尺寸或交互数据尺寸的连续区间作为模型属性数据或交互数据的存储区域;
505.记录为其划分的连续区间的首地址指针;
506.为模型对应创建内存池分池;
507.为交互对应创建内存池分池;
508.对模型和交互创建的内存池分池进行初始化,初始化时内存池分池不持有内存块;
509.仿真过程中,分池内存不足时,向总池申请新的内存块,总池调用allocate()函数为分池申请内存;
510.当分池需要释放内存块时,向总池提交申请,总池调用destory()函数释放内存。
在其中一个实施例中,如图6所示,提供了反射对象类模块4的工作流程,具体步骤包括:
601.获取基于步骤405得到的模型实体列表;
602.为每一个模型实体创建对应的反射对象类指针RefObject*,调用该类的getAttribute()函数获取反射属性类RefAttribute,RefAttribute封装了两个常量指针,分别为模型共享数据在内存池分池中的首地址常量指针baseAddr和模型共享数据的元数据的常量指针,这两个指针对模型不可见,通过对其进行下标运算符“[]”操作,该类通过首地址+元数据中成员偏移量对该成员进行寻址,并在寻址后将对应数据返回给模型;
603.通过步骤602得到每一个模型实体对应的反射对象类指针,在黑板上一一对应创建实体信息表unordered_map<InstanceID, RefObject*>objInfoTable;
604.获取基于步骤409得到的模型类列表信息;
605.为每一类模型创建对应的反射对象集类RefObjectVec,反射对象集类里的元素为反射对象类指针RefObject*;
606.通过步骤605获取每一类模型对应的反射对象集类,在黑板上一一对应创建所有模型的查询结果缓存集map<ClassID, RefObjectVec>RefObjectVecCache;
607.反射对象集类提供类STL操作,包括向尾部添加实体push_back(constRefObject&t),从尾部弹出实体pop_back(),往迭代器中插入实体insert(constiterator&it, const RefObject&t),移除指定位置实体erase(const iterator&it)等函数,同时提供过滤函数filter(const std::function<bool(const RefObject&t)>&condition),通过自定义lamda表达式筛选满足条件的实体集,排序函数sort()和sort(const std::function<bool(const RefObject&t0, const RefObject&t1)>&cmp),分别按模型实体在黑板上的创建顺序对模型实体进行排序和按照自定义lamda表达式比较条件对模型实体进行排序。
在其中一个实施例中,如图7所示,提供了高效更新共享数据模块5的工作流程,具体步骤包括:
如图7所示,高效更新共享数据模块的工作流程如下:
701.基于步骤409中解析对象描述文件获取得到模型库信息,依此初始化模型库类对象,加载模型库DLL;
702.基于步骤405解析的模型实体列表,依次调用对应的模型库DLL接口创建模型实体;
703.创建模型实体完成后保存实体对象指针,并为新创建模型实体设置ClassID和实体ID;
704.调用黑板创建实体函数CreateObj(const ClassID&className, constInstanceID&instName),向黑板创建对应实体信息并更新至实体信息表objInfoTable;
705.等待模型实体进行数据更新;
706.模型调用更新接口UpdateObjInfo(const ClassID&className, constInstanceID&instName, const map<string, void*>&ObjBuf)更新全部属性数据时,ObjBuf包含所有属性名及其要更新的数据地址;
707.模型调用更新接口更新部分属性数据时,ObjBuf包含所要更新的属性名及其要更新的数据地址;
708.模型调用更新接口更新局部属性数据时,ObjBuf包含所要更新的属性名及该局部数据的偏移;
709.检测该模型实体是否退出仿真,如果检测结果为是,转至步骤710;如果检测结果为否,转至步骤705;
710.由于步骤709检测到模型实体退出仿真,调用删除实体函数EraseObj(constInstanceID&instName),并从实体信息表删除该模型实体,内存池回收该模型实体所占内存。
在其中一个实施例中,如图8所示,提供了高效查询共享数据模块6的工作流程,具体步骤包括:
801.通过步骤704在黑板上创建完实体信息;
802.通过步骤606在黑板上构建好查询结果缓存集;
803.仿真开始等待模型查询共享数据;
804.模型按实体ID查询实体数据时,查询单个模型实体时调用QueryObjectInfo(const InstanceID&instName)接口查询返回反射对象类指针,查询多个模型实体时调用QueryObjectInfo(const ClassID&classIDVec, const vector<InstanceID>&instIDVec,RefObjectVec&retAttr)返回反射对象集类,实体ID集合instIDVec传入所有要查询的InstanceID集合,模型类ID集合classIDVec传空即可;
805.模型按实体类型查询实体数据时,调用查询接口,模型类ID集合classIDVec传入要查询的所有实体类型ClassID,实体ID集合instIDVec传空即可;
806.模型自定义条件查询实体数据时,先调用查询接口查询得到反射对象集类,调用filter函数传入自定义条件lamda表达式得到所需结果;
807.根据步骤804、805、806得到的查询结果,调用反射对象类获取属性接口获取查询对象属性数据;
808.检测仿真是否结束,检测结果为是,转至步骤809;检测结果为否,转至步骤803;
809.由于步骤808检测结果为是,仿真结果,在黑板上一一删除实体信息,进行内存释放。
应该理解的是,虽然图1-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于内存池的仿真引擎数据共享黑板系统,其特征在于,所述系统包括:
内存池总池管理模块,用于在初始化时以块为单位向操作系统批量申请内存,根据申请得到的内存块构建共享内存池;在使用时将所述共享内存池分成内存池总池和内存池分池,根据所述内存池总池向操作系统申请内存块,根据所述内存池分池使用内存池总池中的内存块存储共享数据;
元数据记录模块,用于根据想定文件和对象描述文件获取模型实体列表、模型类列表以及模型实体对应的模型属性数据尺寸和交互数据尺寸,并将所述模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;其中,所述模型实体是根据所述模型实体列表构建得到;
模型和交互内存池分池模块,用于根据所述元数据中的模型属性数据尺寸和交互数据尺寸,在黑板中为每种模型和交互创建内存池分池;
反射对象类模块,用于根据所述模型实体列表为每一个模型实体构建对应的反射对象类指针,并在黑板中对应构建实体信息表,根据所述模型类列表为每一类模型构建对应的反射对象集类,并在黑板中对应构建所有模型的查询结果缓存集;
高效更新共享数据模块,用于在仿真过程中将模型实体更新的模型属性数据提交给黑板,黑板根据所述更新的模型属性数据对内存池分池中的副本进行更新;
高效查询共享数据模块,用于在仿真过程中,模型根据实体ID、实体类型和自定义条件对其他模型的数据进行查询,并根据黑板返回的查询结果缓存集中的反射对象类指针或反射对象集类获取查询的数据。
2.根据权利要求1所述的系统,其特征在于,所述内存池总池管理模块还用于:
在共享内存池进行内存释放时,以内存块为单位进行释放;其中,所述内存块固定为一整块长度的连续内存。
3.根据权利要求1所述的系统,其特征在于,所述元数据记录模块还用于:
通过解析想定文件获取模型实体列表,根据所述模型实体列表构建模型实体;
根据想定文件中的对象描述文件路径,读取并解析对象描述文件,根据所述对象描述文件中的数据结构,解析所述模型实体对应的模型属性数据和交互数据的结构,获取所述模型实体对应的模型属性数据尺寸和交互数据尺寸,并将所述模型属性数据尺寸和交互数据尺寸作为共享数据的元数据记录在黑板中;
根据所述对象描述文件中的模型类信息,生成对应的模型类表。
4.根据权利要求3所述的系统,其特征在于,所述元数据记录模块还用于:
当所述模型属性数据或交互数据为结构体时,根据黑板同时记录结构体的所有子属性相对结构体首地址的偏移量,并记录结构体的所有子属性的元数据;
当所述模型属性数据或交互数据为数组时,根据黑板同时记录数组的长度以及数组元素的元数据。
5.根据权利要求1所述的系统,其特征在于,所述模型和交互内存池分池模块还用于:
读取所述元数据记录模块中的元数据,根据所述元数据中的模型属性数据尺寸,在黑板中为模型对应创建内存池分池,根据所述元数据中的交互数据尺寸,在黑板中为每种交互对应创建内存池分池;其中,所述内存池分池从内存块中划分出一段长度等于模型属性数据尺寸或交互数据尺寸的连续区间,作为模型属性数据或交互数据的存储区域,并记录连续区间的首地址指针。
6.根据权利要求5所述的系统,其特征在于,所述模型和交互内存池分池模块还用于:
在仿真过程之前,对每种模型和交互对应创建的内存池分池进行初始化,初始化时所述内存池分池中不持有内存块;
在仿真过程中,当且仅当所述内存池分池的内存不足时,所述内存池分池向内存池总池申请新的内存块,当所述内存池分池需要释放内存块时,所述内存池分池向内存池总池提交申请,根据所述内存池总池释放内存块。
7.根据权利要求1所述的系统,其特征在于,所述反射对象类模块还用于:
根据所述模型实体列表为每一个模型实体创建对应的反射对象类指针,根据所述反射对象类指针在黑板上为每一个模型实体对应构建实体信息表;其中,所述反射对象类指针包括两个常量指针,分别为模型共享数据在内存池分池中的首地址常量指针和模型共享数据的元数据的常量指针;
根据所述模型类列表为每一类模型创建对应的反射对象集类,根据所述反射对象集类在黑板中对应创建所有模型的查询结果缓存集;其中,所述反射对象集类中的元素为反射对象类指针。
8.根据权利要求1所述的系统,其特征在于,所述高效更新共享数据模块还包括:
模型属性数据整体更新单元,用于当模型实体更新自身的整体模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交所有指向模型属性数据的指针,黑板根据所述所有指向模型属性数据的指针,对内存池分池中的副本进行更新;其中,所述副本为内存池分池之前存储的未更新的模型属性数据;
模型属性数据部分更新单元,用于当模型实体更新自身的部分模型属性数据时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的模型属性数据的指针,黑板根据所述指向发生更新的模型属性数据的指针以及发生更新的模型属性数据相对首地址指针的偏移,对内存池分池中的副本进行更新;
模型属性数据局部更新单元,用于当模型实体的模型属性数据的局部数据发生更新时,在仿真过程中,通过调用黑板的模型数据更新接口向黑板提交指向发生更新的局部数据的指针,并向黑板声明发生更新的局部数据的偏移,黑板根据所述指向发生更新的局部数据的指针以及发生更新的局部数据的偏移,对内存池分池中的副本进行更新。
9.根据权利要求8所述的系统,其特征在于,所述高效查询共享数据模块还包括:
实体ID查询单元,用于当模型根据实体ID对其他模型的数据进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针或反射对象集类,模型根据黑板返回的反射对象类指针或反射对象集类获取查询的数据;
实体类型查询单元,用于当模型根据实体类型对其他模型的数据进行查询时,模型调用黑板查询接口,将实体类型提交黑板,黑板根据实体类型进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据;
自定义条件查询单元,用于当模型根据自定义条件对其他模型的数据进行查询时,模型调用黑板查询接口得到对应的反射对象集类,再调用过滤函数传入自定义条件得到查询结果。
10.根据权利要求9所述的系统,其特征在于,所述实体ID查询单元还用于:
当模型根据实体ID对单个模型实体进行查询时,模型调用黑板查询接口,将实体ID提交给黑板,黑板根据实体ID进行查询并返回对应的反射对象类指针,模型根据黑板返回的反射对象类指针获取查询的数据;
当模型根据实体ID集合对多个模型实体进行查询时,模型调用黑板查询接口,将实体ID集合提交给黑板,黑板根据实体ID集合进行查询并返回对应的反射对象集类,模型根据黑板返回的反射对象集类获取查询的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310346206.9A CN116069530B (zh) | 2023-04-03 | 2023-04-03 | 基于内存池的仿真引擎数据共享黑板系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310346206.9A CN116069530B (zh) | 2023-04-03 | 2023-04-03 | 基于内存池的仿真引擎数据共享黑板系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116069530A true CN116069530A (zh) | 2023-05-05 |
CN116069530B CN116069530B (zh) | 2023-06-16 |
Family
ID=86171805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310346206.9A Active CN116069530B (zh) | 2023-04-03 | 2023-04-03 | 基于内存池的仿真引擎数据共享黑板系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069530B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501744A (zh) * | 2023-06-30 | 2023-07-28 | 中国人民解放军国防科技大学 | 仿真数据的自动化建表与入库方法、装置和计算机设备 |
CN117707789A (zh) * | 2024-01-10 | 2024-03-15 | 北京浩瀚深度信息技术股份有限公司 | 一种弹性伸缩元数据管理方法 |
CN118426990A (zh) * | 2024-07-05 | 2024-08-02 | 中国人民解放军国防科技大学 | 基于动态反射机制的仿真数据交换方法和系统 |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102455943A (zh) * | 2010-10-19 | 2012-05-16 | 上海聚力传媒技术有限公司 | 一种基于内存池来进行数据共享的方法和计算机设备 |
US8352229B1 (en) * | 2009-01-26 | 2013-01-08 | Xilinx, Inc. | Reloadable just-in-time compilation simulation engine for high level modeling systems |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN103455647A (zh) * | 2012-06-04 | 2013-12-18 | 黄晓冬 | 一种反射式面向对象仿真引擎 |
US8943449B1 (en) * | 2013-07-15 | 2015-01-27 | Cadence Design Systems, Inc. | Method and apparatus of enabling direct memory access into a target system memory modeled in dual abstractions while ensuring coherency |
CN106846963A (zh) * | 2016-12-27 | 2017-06-13 | 国电南瑞科技股份有限公司 | 一种仿真数据管理模块及方法 |
CN109298935A (zh) * | 2018-09-06 | 2019-02-01 | 华泰证券股份有限公司 | 一种多进程单写多读无锁共享内存的方法及应用 |
US20190102411A1 (en) * | 2017-09-29 | 2019-04-04 | Oracle International Corporation | Rule-based autonomous database cloud service framework |
CN112463400A (zh) * | 2020-10-30 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种基于共享内存的实时数据分发方法及装置 |
CN113419881A (zh) * | 2021-08-23 | 2021-09-21 | 中电烽友信息技术(武汉)有限公司 | 一种基于通用黑板的本地共享内存运行方法和系统 |
CN113821940A (zh) * | 2021-11-22 | 2021-12-21 | 湖南高至科技有限公司 | 一种基于分布式黑板机制的仿真平台 |
CN114091251A (zh) * | 2021-11-19 | 2022-02-25 | 中国人民解放军国防科技大学 | 面向多智能体群体行为的仿真系统及方法 |
CN114490141A (zh) * | 2022-04-14 | 2022-05-13 | 中国电子科技集团公司第二十八研究所 | 一种基于共享内存的高并发ipc数据交互方法 |
CN114610506A (zh) * | 2022-03-09 | 2022-06-10 | 奥特酷智能科技(南京)有限公司 | 基于分离式数据分发服务的域内共享内存传输架构及机制 |
WO2022134723A1 (zh) * | 2020-12-25 | 2022-06-30 | 苏州浪潮智能科技有限公司 | 一种共享内存管理的方法和设备 |
CN114741853A (zh) * | 2022-03-25 | 2022-07-12 | 中国人民解放军国防科技大学 | 基于通用黑板系统的仿真运行平台和方法 |
CN114880138A (zh) * | 2022-04-22 | 2022-08-09 | 烽火通信科技股份有限公司 | 一种基于共享内存池的高性能数据模型访问方法和装置 |
CN115203251A (zh) * | 2022-06-01 | 2022-10-18 | 浪潮软件集团有限公司 | 一种基于共享内存的本地数据库查询方法 |
CN115563817A (zh) * | 2022-12-02 | 2023-01-03 | 中国人民解放军国防科技大学 | 基于内存数据库的仿真数据访存方法、装置和计算机设备 |
CN115599542A (zh) * | 2022-09-30 | 2023-01-13 | 浪潮软件集团有限公司(Cn) | 一种共享内存池实现方法及系统 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
-
2023
- 2023-04-03 CN CN202310346206.9A patent/CN116069530B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352229B1 (en) * | 2009-01-26 | 2013-01-08 | Xilinx, Inc. | Reloadable just-in-time compilation simulation engine for high level modeling systems |
CN102455943A (zh) * | 2010-10-19 | 2012-05-16 | 上海聚力传媒技术有限公司 | 一种基于内存池来进行数据共享的方法和计算机设备 |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN103455647A (zh) * | 2012-06-04 | 2013-12-18 | 黄晓冬 | 一种反射式面向对象仿真引擎 |
US8943449B1 (en) * | 2013-07-15 | 2015-01-27 | Cadence Design Systems, Inc. | Method and apparatus of enabling direct memory access into a target system memory modeled in dual abstractions while ensuring coherency |
CN106846963A (zh) * | 2016-12-27 | 2017-06-13 | 国电南瑞科技股份有限公司 | 一种仿真数据管理模块及方法 |
US20190102411A1 (en) * | 2017-09-29 | 2019-04-04 | Oracle International Corporation | Rule-based autonomous database cloud service framework |
CN109298935A (zh) * | 2018-09-06 | 2019-02-01 | 华泰证券股份有限公司 | 一种多进程单写多读无锁共享内存的方法及应用 |
CN112463400A (zh) * | 2020-10-30 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种基于共享内存的实时数据分发方法及装置 |
WO2022134723A1 (zh) * | 2020-12-25 | 2022-06-30 | 苏州浪潮智能科技有限公司 | 一种共享内存管理的方法和设备 |
CN113419881A (zh) * | 2021-08-23 | 2021-09-21 | 中电烽友信息技术(武汉)有限公司 | 一种基于通用黑板的本地共享内存运行方法和系统 |
CN114091251A (zh) * | 2021-11-19 | 2022-02-25 | 中国人民解放军国防科技大学 | 面向多智能体群体行为的仿真系统及方法 |
CN113821940A (zh) * | 2021-11-22 | 2021-12-21 | 湖南高至科技有限公司 | 一种基于分布式黑板机制的仿真平台 |
CN114610506A (zh) * | 2022-03-09 | 2022-06-10 | 奥特酷智能科技(南京)有限公司 | 基于分离式数据分发服务的域内共享内存传输架构及机制 |
CN114741853A (zh) * | 2022-03-25 | 2022-07-12 | 中国人民解放军国防科技大学 | 基于通用黑板系统的仿真运行平台和方法 |
CN114490141A (zh) * | 2022-04-14 | 2022-05-13 | 中国电子科技集团公司第二十八研究所 | 一种基于共享内存的高并发ipc数据交互方法 |
CN114880138A (zh) * | 2022-04-22 | 2022-08-09 | 烽火通信科技股份有限公司 | 一种基于共享内存池的高性能数据模型访问方法和装置 |
CN115203251A (zh) * | 2022-06-01 | 2022-10-18 | 浪潮软件集团有限公司 | 一种基于共享内存的本地数据库查询方法 |
CN115599542A (zh) * | 2022-09-30 | 2023-01-13 | 浪潮软件集团有限公司(Cn) | 一种共享内存池实现方法及系统 |
CN115563817A (zh) * | 2022-12-02 | 2023-01-03 | 中国人民解放军国防科技大学 | 基于内存数据库的仿真数据访存方法、装置和计算机设备 |
CN115858205A (zh) * | 2023-02-27 | 2023-03-28 | 中国人民解放军国防科技大学 | 基于内存黑板机制的仿真组件交互方法、装置和设备 |
Non-Patent Citations (5)
Title |
---|
DAISUKE NISHIURA ET AL: "Parallel-vector algorithms for particle simulations on shared-memory multiprocessors", 《JOURNAL OF COMPUTATIONAL PHYSICS》, vol. 230, no. 5, pages 1923 - 1938, XP027601172, DOI: 10.1016/j.jcp.2010.11.040 * |
刘雁兵;孙宏波;范文慧;肖田元;: "基于全局共享内存的协同仿真运行支撑", 清华大学学报(自然科学版), no. 12 * |
王煜;林浒;陶耀东;郑一麟;: "一种高效RTAI共享内存管理层的研究与实现", 组合机床与自动化加工技术, no. 01 * |
白曦;刘强;: "基于Windows的跨进程共享变量池设计", 仪器仪表用户, no. 01 * |
闫家年;陈文光;郑纬民;: "面向结构体数据布局优化的高效内存管理", 清华大学学报(自然科学版), no. 01 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501744A (zh) * | 2023-06-30 | 2023-07-28 | 中国人民解放军国防科技大学 | 仿真数据的自动化建表与入库方法、装置和计算机设备 |
CN116501744B (zh) * | 2023-06-30 | 2023-09-19 | 中国人民解放军国防科技大学 | 仿真数据的自动化建表与入库方法、装置和计算机设备 |
CN117707789A (zh) * | 2024-01-10 | 2024-03-15 | 北京浩瀚深度信息技术股份有限公司 | 一种弹性伸缩元数据管理方法 |
CN117707789B (zh) * | 2024-01-10 | 2024-09-03 | 北京浩瀚深度信息技术股份有限公司 | 一种弹性伸缩元数据管理方法 |
CN118426990A (zh) * | 2024-07-05 | 2024-08-02 | 中国人民解放军国防科技大学 | 基于动态反射机制的仿真数据交换方法和系统 |
CN118426990B (zh) * | 2024-07-05 | 2024-09-17 | 中国人民解放军国防科技大学 | 基于动态反射机制的仿真数据交换方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116069530B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116069530B (zh) | 基于内存池的仿真引擎数据共享黑板系统 | |
US7072919B2 (en) | Method for performing data migration | |
US5692183A (en) | Methods and apparatus for providing transparent persistence in a distributed object operating environment | |
US8108587B2 (en) | Free-space reduction in cached database pages | |
US4912629A (en) | Real-time garbage collection for list processing using restructured cells for increased reference counter size | |
US20110264712A1 (en) | Copy planning in a concurrent garbage collector | |
US8527559B2 (en) | Garbage collector with concurrent flipping without read barrier and without verifying copying | |
US5392415A (en) | System for grouping non-contiguous pages belonging to a storage object for page out | |
US6792606B2 (en) | Method and apparatus for object persistence | |
US20100185703A1 (en) | Lock-free hash table based write barrier buffer for large memory multiprocessor garbage collectors | |
CN1389790A (zh) | 闪速存储器管理方法 | |
CN102289409B (zh) | 分层可伸缩的存储器分配器 | |
EP1593052A2 (en) | Memory-resident database management system and implementation thereof | |
JPH0877023A (ja) | ローカル・オブジェクト・アドレス及びグローバル・オブジェクト識別子を結合して単一オブジェクト・ポインタにするためのシステム | |
JPH10254756A (ja) | リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
CN112463753B (zh) | 一种区块链数据存储方法、系统、设备及可读存储介质 | |
CN115543224B (zh) | 基于zns ssd的文件系统控制方法、装置及设备 | |
JP2002182970A (ja) | オブジェクト統合管理システム | |
Gerbessiotis | Extending the BSP model for multi-core and out-of-core computing: MBSP | |
CN112988060A (zh) | 键值存储装置和用于操作键值存储装置的方法 | |
CN113448897B (zh) | 适用于纯用户态远端直接内存访问的优化方法 | |
CN101030135A (zh) | 一种在共享内存中存储c++对象的方法及装置 | |
US20200012599A1 (en) | Apparatus and method and computer program product for controlling data access | |
US7404061B2 (en) | Permanent pool memory management method and system |
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 |