CN101493784A - 一种基于分布仿真的反射内存网动态内存管理方法 - Google Patents

一种基于分布仿真的反射内存网动态内存管理方法 Download PDF

Info

Publication number
CN101493784A
CN101493784A CNA2009100782667A CN200910078266A CN101493784A CN 101493784 A CN101493784 A CN 101493784A CN A2009100782667 A CNA2009100782667 A CN A2009100782667A CN 200910078266 A CN200910078266 A CN 200910078266A CN 101493784 A CN101493784 A CN 101493784A
Authority
CN
China
Prior art keywords
memory
distributed
federal
internal memory
space
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
Application number
CNA2009100782667A
Other languages
English (en)
Other versions
CN101493784B (zh
Inventor
冷传航
赵雯
代坤
张灏龙
李烁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Academy of Launch Vehicle Technology CALT
Original Assignee
China Academy of Launch Vehicle Technology CALT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Academy of Launch Vehicle Technology CALT filed Critical China Academy of Launch Vehicle Technology CALT
Priority to CN2009100782667A priority Critical patent/CN101493784B/zh
Publication of CN101493784A publication Critical patent/CN101493784A/zh
Application granted granted Critical
Publication of CN101493784B publication Critical patent/CN101493784B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种基于分布仿真反射内存网动态内存管理方法,该方法采用面向对象的手段,对VMIC反射内存的底层驱动函数进行了两次封装,实现了面向用户的内存动态分配和读写,解决了通信软总线开发过程中的安全性、可重用性和便利性问题,该封装执行下述任务:仿真开始时,为联邦分配内存空间供联邦进行通信交互;仿真进行中,联邦的邦员依次加入仿真,为每个邦员分配内存空间,并根据仿真想定为有通信需求的邦员之间分配对象实例/交互实例内存空间;通信过程中的读、写操作完成后,为所述对象实例/交互实例释放内存空间;任一邦员退出仿真后,为所述邦员释放内存空间;仿真结束联邦退出后,为所述联邦释放内存空间。

Description

一种基于分布仿真的反射内存网动态内存管理方法
技术领域
本发明涉及计算机分布仿真技术领域,特别是涉及一种应用于工业分布仿真中的反射内存网的动态内存管理方法。
背景技术
随着现代工业系统的复杂程度和现代化程度的不断提高,使得其设计、研制和维护日益依赖于先进的试验、测试与试验手段。带有半实物设备的分布式实时分布仿真中为了保证通信的实时性,采用VMIC反射内存网进行数据和消息的传输。VMIC-5565反射内存卡提供了共享内存和中断等实时通信方式,但是这种方式允许各个节点直接读写板载内存,带来了数据安全性难以保证的问题。由于传统的板上内存采用了顺序分配的方式,导致释放的内存无法再次分配和内存碎片的增加,造成了系统性能的降低和不稳定因素的增加。由于VMIC提供的函数多而杂,对于开发人员而言比较难于掌握,特别是对于从事虚拟试验和仿真领域的技术人员。
发明内容
本发明的目的在于克服现有技术的不足,,提供一种基于分布仿真的反射内存网动态内存管理方法,该方法通过对VMIC反射内存的驱动函数进行封装,实现对内存的及时分配与释放,使得板卡内存可以充分循环利用,并增强了系统的稳定性和安全性。
本发明的上述目的是通过如下技术方案予以实现的:
一种基于分布仿真反射内存网动态内存管理方法,其特征在于:在实时操作系统下对反射内存网的驱动函数进行封装,所述封装基于复杂map映射,执行下述任务:
仿真开始时,为联邦分配内存空间供联邦进行通信交互;仿真进行中,联邦的邦员依次加入仿真,为每个邦员分配内存空间,并根据仿真想定为有通信需求的邦员之间分配对象实例/交互实例内存空间;通信过程中的读、写操作完成后,为所述对象实例/交互实例释放内存空间;任一邦员退出仿真后,为所述邦员释放内存空间;仿真结束联邦退出后,为所述联邦释放内存空间。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了该联邦地址空间,如果已经分配则退出;
(2)检查剩余内存空间是否充足,如果空间为零,则退出;
(3)如果有剩余内存空间,首先查找是否存在刚好所述联邦大小的内存块,如果存在则将其分配给所述联邦,并将所述内存块标志为busy,进入步骤(5);
(4)如果没有刚好大小的内存块,则遍历空闲的内存空间,找到能够分配所述联邦的最小内存空间,并将所述最小内存空间标志为busy,进入步骤(5);
(5)退出并返回起始地址。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦邦员分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了所述邦员所属联邦地址空间,如果已经分配则退出;
(2)查找所述联邦地址空间中已分配的内存空间,是否已经分配了所述邦员地址空间,如果已经分配则退出;
(3)检查所述联邦内剩余内存空间是否充足,如果空间为零则退出;
(4)如果有剩余内存空间,首先查找是否存在刚好所述邦员大小的内存块,如果存在则将其分配给所述邦员,并将所述内存块标志为busy,进入步骤(6);
(5)如果没有刚好大小的内存块,则遍历所述联邦的空闲内存空间,找到能够分配所述邦员的最小内存空间,并将所述最小内存空间标志为busy,进入步骤(6)。
(6)退出并返回起始地址。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦邦员中的对象实例/交互实例分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了所述对象实例/交互实例所属联邦地址空间,如果已经分配则退出;
(2)查找所述联邦地址空间中已分配的内存空间,是否已经分配了所述对象实例/交互实例所属的邦员地址空间,如果已经分配则退出;
(3)查找所述邦员地址空间中已分配的内存空间,是否已经分配了所述对象实例/交互实例地址空间,如果已经分配则退出;
(4)检查所述邦员内剩余内存空间是否充足,如果空间为零则进入步骤(7);
(5)如果有剩余内存空间,首先查找是否存在刚好对象实例/交互实例大小的内存块,如果存在则将其分配给该所述对象实例/交互实例,并将所述内存块标志为busy,进入步骤(7);
(6)如果没有刚好大小的内存块,则遍历所述邦员的空闲内存空间,找到能够分配该对象实例/交互实例的最小内存空间,并将所述最小内存空间进行标志为busy,进入步骤(7);
(7)退出并返回起始地址。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦释放内存的方法如下:
(1)在已分配的内存区域中查找所述联邦的内存是否存在,如果不存在则退出;
(2)如果所述联邦的内存存在,将所述联邦的内存空间标志为空闲区域,并释放联邦内存;
(3)检查步骤(2)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦邦员释放内存的方法如下:
(1)在已分配的内存区域中查找所述邦员所属联邦的内存是否存在,如果不存在则退出;
(2)在所述联邦内存区域内的已分配内存区域中查找所述邦员的内存是否存在,如果不存在则退出;
(3)如果所述邦员的内存存在,将所述邦员的内存空间标志为空闲区域,并释放邦员内存;
(4)检查步骤(3)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
在上述基于分布仿真反射内存网动态内存管理方法中,为联邦邦员中的对象实例/交互实例释放内存的方法如下:
(1)在已分配的内存区域中查找所述对象实例/交互实例所属联邦的内存是否存在,如果不存在则退出;
(2)在所述联邦内存区域内的已分配内存区域中查找所述对象实例/交互实例所属邦员的内存是否存在,如果不存在则退出;
(3)在所述邦员内存区域内的已分配内存区域中查找所述对象实例/交互实例的内存是否存在,如果不存在则退出;
(4)如果所述对象实例/交互实例的内存存在,将所述对象实例/交互实例的内存空间标志为空闲区域,并释放对象实例/交互实例的内存;
(5)检查步骤(4)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
在上述基于分布仿真反射内存网动态内存管理方法中,在第一层封装的基础上进行第二次封装,第二次封装是将有通信需求的邦员之间分配对象实例/交互实例内存空间,通信过程中的读、写操作,释放内存空间四个过程封装为一个类,当邦员之间需要进行对象类/交互类实例通信时,对该类进行实例化,该类中分配对象实例/交互实例内存空间,通信过程中的读、写操作,释放内存空间四个过程均由该实例进行管理。
本发明与现有技术相比有益效果为:
(1)通过对VMIC反射内存函数进行封装,可以使内存空间得到及时分配与释放,将使用后释放的内存空间进行碎片合并整理后再次分配使用,从而达到对板卡内存的动态充分循环利用,与现有的按顺序分配内存相比,解决了内存空间有限和内存碎片再分配的问题。
(2)通过对VMIC反射内存函数进行封装,与现有技术直接对板上内存进行操作相比,解决了分布仿真数据的安全性问题,并使系统的稳定性提高。
(3)通过对VMIC反射内存函数进行面向对象的封装,与现有VMIC纷繁复杂的函数操作相比,具有很强的开发上的便利性和可重用性,能够提高开发效率,并使安全性进一步提高。
附图说明
图1为本发明的系统体系示意图;
图2为本发明为驱动函数进行第一层封装的工作流程图;
图3为本发明第一层封装中为联邦分配内存的工作流程图;
图4为本发明第一层封装中为联邦中的邦员分配内存的工作流程图;
图5为本发明第一层封装中为联邦邦员中的对象实例/交互实例分配内存的工作流程图;
图6为本发明第一层封装中为联邦释放内存的工作流程图;
图7为本发明第一层封装中为联邦中的邦员释放内存的工作流程图;
图8为本发明第一层封装中为联邦邦员中的对象实例/交互实例释放内存的工作流程图;
图9为本发明第二层封装中为对象实例/交互实例申请内存空间的工作流程图;
图10为本发明第二层封装中为对象实例/交互实例释放内存空间的工作流程图;
图11为本发明第二层封装中填写对象实例/交互实例的工作流程图;
图12为本发明第二层封装中读取对象实例/交互实例的工作流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的描述:
VMIC反射内存网可以采用环形网络结构,使用一台计算机承担调度服务与通信服务功能,称为管理节点机,网络上的其他计算机可以称为运行节点机。本发明在管理节点机上对反射内存进行动态管理。如图1所示,对VMIC5565板卡提供的函数驱动进行了两层封装,应用程序通过实例化第二层封装的类,动态管理板卡内存。
首先在实时操作系统下对反射内存网的驱动函数进行第一层封装,所述封装基于复杂map映射,执行下述任务:
仿真开始时,为联邦分配内存空间以备联邦通信交互;仿真进行中,联邦的邦员依次加入仿真,为每个邦员分配内存空间,并根据仿真想定为有通信需求的邦员之间分配对象实例/交互实例内存空间;通信完成后,为所述对象实例/交互实例释放内存空间,以方便为其他对象实例/交互实例分配内存空间;任一邦员退出仿真后,为所述邦员释放内存空间;仿真结束联邦退出时,为所述联邦释放内存空间,以方便为其他联邦分配内存空间。如图2所示为对驱动函数进行第一层封装的工作流程图。其中对象实例/交互实例表示对象实例或者交互实例或者对象实例和交互实例。
第一层封装了VMIC反射内存网底层驱动函数,实现了动态分配和释放内存的内存管理功能。下面进行详细描述:
(1)为联邦分配内存空间的工作过程:
federationNum表示联邦编号,federationSize表示该联邦的大小(单位:M),federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域,其流程图如图3所示。首先查找已分配的内存空间,是否已经分配了该联邦地址空间,如果已经分配则函数退出,返回非法地址;然后检查剩余内存空间是否充足,如果空间为零则函数退出,返回非法地址;如果有剩余内存空间,首先查找是否存在刚好federationSize大小的内存块,如果存在则将其分配给该联邦,并将此区域标志为“busy”,做好该联邦的内存初始化,退出并返回起始地址;如果没有刚好大小的内存块,则遍历空闲的内存空间,找到能够分配该联邦的最小内存空间,并将此区域标志为“busy”,做好该联邦的内存初始化,退出并返回起始地址。
(2)为联邦中的邦员分配内存空间的工作过程
federationNum表示联邦编号,federateNum表示邦员编号,federateSize表示邦员大小(K),federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域。其流程图如图4所示。首先查找已分配的内存空间,是否已经分配了该邦员所属联邦地址空间,如果已经分配则函数退出,返回非法地址;接着查找该联邦地址空间中已分配的内存空间,是否已经分配了该邦员地址空间,如果已经分配则函数退出,返回非法地址;然后检查联邦内剩余内存空间是否充足,如果空间为零则函数退出,返回非法地址;如果有剩余内存空间,首先查找是否存在刚好federateSize大小的内存块,如果存在则将其分配给该邦员,并将此区域标志为“busy”,做好该邦员的内存初始化,退出并返回起始地址;如果没有刚好大小的内存块,则遍历联邦的空闲内存空间,找到能够分配该邦员的最小内存空间,并将此区域标志为“busy”,做好该邦员的内存初始化,退出并返回起始地址。
(3)为联邦邦员中的对象实例/交互实例分配内存的工作过程
federationNum表示联邦编号,federateNum表示邦员编号,eventNum表示对象类实例或是交互类的编号,eventSize表示对象实例或是交互实例的大小,federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域。其流程图如图5所示。首先查找已分配的内存空间,是否已经分配了该交互/对象类所属联邦地址空间,如果已经分配则函数退出,返回非法地址;接着查找该联邦地址空间中已分配的内存空间,是否已经分配了该交互/对象类所属的邦员地址空间,如果已经分配则函数退出,返回非法地址;然后查找该邦员地址空间中已分配的内存空间,是否已经分配了该交互/对象类地址空间,如果已经分配则函数退出,返回非法地址;然后检查邦员内剩余内存空间是否充足,如果空间为零则函数退出,返回非法地址;如果有剩余内存空间,首先查找是否存在刚好eventSize大小的内存块,如果存在则将其分配给该交互/对象类,并将此区域标志为“busy”,做好该交互/对象类的内存初始化,退出并返回起始地址;如果没有刚好大小的内存块,则遍历邦员的空闲内存空间,找到能够分配该交互/对象类的最小内存空间,并将此区域标志为“busy”,做好该交互/对象类的内存初始化,退出并返回起始地址。
(4)为联邦释放空间的工作过程:
federationNum表示联邦编号,federationSize表示联邦大小,federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域。其流程图如图6所示。首先在已分配的反射内存区域中查找该联邦的内存是否存在,如果不存在则返回错误代码;然后将该联邦的内存空间标志位空闲区域;检查新增空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域,返回真。
(5)为联邦中的邦员释放空间的工作过程:
federationNum表示联邦编号,federateNum表示邦员编号,federateSize表示邦员大小,federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域。其流程图如图7所示。首先在已分配的反射内存区域中查找该邦员所属联邦的内存是否存在,如果不存在则返回错误代码;接着在联邦内存区域内的已分配反射内存区域中查找该邦员的内存是否存在,如果不存在则返回错误代码;然后将该邦员的内存空间标志位空闲区域;检查新增空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域,返回真。
(6)为联邦邦员中的对象实例/交互实例释放内存的工作过程:
federationNum表示联邦编号,federateNum表示邦员编号,eventNum表示对象实例或是交互实例的编号,eventSize表示对象实例或是交互实例大小,federation_busyArea表示联邦繁忙区域,federation_freeArea表示联邦空闲区域。其流程图如图8所示。首先在已分配的反射内存区域中查找该事件所属联邦的内存是否存在,如果不存在则返回错误代码;接着在联邦内存区域内的已分配反射内存区域中查找该事件所属邦员的内存是否存在,如果不存在则返回错误代码;然后在邦员内存区域内的已分配反射内存区域中查找该事件内存是否存在,如果不存在则返回错误代码;最后将该事件的内存空间标志位空闲区域;检查新增空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域,返回真。
反射内存网动态内存管理中间件的第二层封装是考虑到面向对象程序设计的需要,为了使本技术方案具有程序开发上的便利性和可重用性。第二层封装在第一层封装的基础上进行,第二次封装是将有通信需求的邦员之间的对象实例/交互实例分配内存空间,通信过程中的读、写操作,为对象实例/交互实例释放内存空间四个过程封装为一个类,当邦员之间需要进行对象类/交互类实例通信时,对该类进行实例化,该类中为对象实例/交互实例分配内存空间,通信过程中的读、写操作,为对象实例/交互实例释放内存空间这四个过程均由这个实例进行管理,由于采用上述面向对象的程序设计方式使其具有内存管理的安全性高和软件开发的可重用性强的优点。
其中上述实例对通信进行管理的过程如下:
一、当邦员之间需要进行对象类/交互类实例通信时,根据仿真想定查找到该通信的信息量,调用第一层封装为该对象类/交互类实例分配相应大小的内存空间,将该空间的起止地址记录下来,并发出“分配完成”消息;
二、当发送信息的邦员收到“分配完成”消息后,将该对象类/交互类实例写入步骤一中的内存空间,并发出“写完毕”消息;
三、当接收信息的邦员收到“写完毕”消息后,将该对象类/交互类实例接收下来,并发出“读完毕”消息;
四、收到“读完毕”消息后,根据该空间的起止地址,调用第一层封装将该对象类/交互类实例的内存释放。
其中步骤一中为对象类/交互类实例分配内存空间的具体流程如下:
如图9所示为分配内存空间的流程图,complexCode由索引码(占16bit)和申请内存大小(占16bit)组合而成。返回值如果为0x1111,表明申请操作不成功,否则表示申请空间的起始地址。首先由运行节点想管理节点发出中断,附加数据为complexCode;管理节点收到运行节点的中断后,解析附加数据,得到索引码和申请空间大小S,根据索引码判断操作类型为分配空间,同时获得对象实例\交互实例编号enum,根据enum得到邦员编号fnmu,和联邦编号Fnum。之后执行步骤(3)中为对象实例/交互实例分配内存空间的操作,得到返回值R。若R值不为0x1111,申请空间成功,附加数据设为索引码(高14bit)和R(低18bit)的组合,否则附加数据设为索引码(高14bit)和后18bit全为1的组合;管理节点完成上述操作后向运行节点发送返回中断;运行节点收到管理节点的中断后,解析附加数据,得到索引码和后18bit,如果后18bit全为1,则函数返回错误码0x111,否则返回后18bit。
步骤二中进行写操作的具体流程如下:
如图11所示为写操作的工作流程图,info指要填写的对象实例/交互实例,offset指填写位置,size指对象实例/交互实例的大小。操作成功返回真,否则假。该函数直接封装了VMIC的驱动函数,实现了对反射内存的写操作。
步骤3)中进行读操作的具体流程如下:
如图12所示为读操作的工作流程图,indexCode为索引码(占16bit)。如果函数操作成功返回真,否则返回假。首先由运行节点想管理节点发出中断,附加数据为complexCode;管理节点收到运行节点的中断后,解析附加数据,得到索引码和释放空间大小S,根据索引码判断操作类型为释放空间,同时获得对象实例/交互实例编号enum,根据enum得到邦员编号fnmu,和联邦编号fnum,同时根据enum判断其是否为对象实例。如果为对象实例,执行步骤(4)中释放联邦空间的操作,否则执行步骤(6)中释放对象实例/交互实例的空间的操作,执行上述操作完成后,得到返回值R。R为true释放空间成功,设附加数据为索引码和1(用低16bit表示)的组合,否则附加数据为索引码和0(用低16bit表示)的组合;管理节点完成上述操作后向运行节点发送返回中断;运行节点收到管理节点的中断后,解析附加数据,得到索引码和低16bit。如果低16bit为0,函数返回false,否则返回true。
步骤4)中为对象类/交互类实例释放内存空间的具体流程如下:
如图10所示为为对象类/交互类实例分配内存空间的工作流程图,complexCode由索引码(占16bit)和所要释放内存的大小组成(占16bit)。如果释放的是对象实例,那么该内存大小为对象实例所属联邦的大小,否则为该对象实例的大小。操作成功返回真,否则返回假。首先由运行节点想管理节点发出中断,附加数据为complexCode;管理节点收到运行节点的中断后,解析附加数据,得到索引码和释放空间大小S,根据索引码判断操作类型为释放空间,同时获得对象实例/交互实例编号enum,根据enum得到邦员编号fnmu,和联邦编号fnum,同时根据enum判断其是否为对象实例。如果为对象实例,执行步骤(4)中释放联邦空间的操作,否则执行步骤(6)中释放对象实例/交互实例的空间的操作,执行上述操作完成后,得到返回值R。R为true释放空间成功,设附加数据为索引码和1(用低16bit表示)的组合,否则附加数据为索引码和0(用低16bit表示)的组合;管理节点完成上述操作后向运行节点发送返回中断;运行节点收到管理节点的中断后,解析附加数据,得到索引码和低16bit。如果低16bit为0,函数返回false,否则返回true。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

Claims (8)

1、一种基于分布仿真反射内存网动态内存管理方法,其特征在于:在实时操作系统下对反射内存网的驱动函数进行封装,所述封装执行下述任务:
仿真开始时,为联邦分配内存空间供联邦进行通信交互;仿真进行中,联邦的邦员依次加入仿真,为每个邦员分配内存空间,并根据仿真想定为有通信需求的邦员之间分配对象实例/交互实例内存空间;通信过程中的读操作、写操作完成后,为所述对象实例/交互实例释放内存空间;任一邦员退出仿真后,为所述邦员释放内存空间;仿真结束联邦退出后,为所述联邦释放内存空间。
2、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了所述联邦地址空间,如果已经分配则退出;
(2)检查剩余内存空间是否充足,如果空间为零,则退出;
(3)如果有剩余内存空间,首先查找是否存在刚好所述联邦大小的内存块,如果存在则将其分配给所述联邦,并将所述内存块标志为busy,进入步骤(5);
(4)如果没有刚好大小的内存块,则遍历空闲的内存空间,找到能够分配所述联邦的最小内存空间,并将所述最小内存空间标志为busy,进入步骤(5);
(5)退出并返回起始地址。
3、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦邦员分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了所述邦员所属联邦地址空间,如果已经分配则退出;
(2)查找所述联邦地址空间中已分配的内存空间,是否已经分配了所述邦员地址空间,如果已经分配则退出;
(3)检查所述联邦内剩余内存空间是否充足,如果空间为零则退出;
(4)如果有剩余内存空间,首先查找是否存在刚好所述邦员大小的内存块,如果存在则将其分配给所述邦员,并将所述内存块标志为busy,进入步骤(6);
(5)如果没有刚好大小的内存块,则遍历所述联邦的空闲内存空间,找到能够分配所述邦员的最小内存空间,并将所述最小内存空间标志为busy,进入步骤(6)。
(6)退出并返回起始地址。
4、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦邦员中的对象实例/交互实例分配内存的方法如下:
(1)查找已分配的内存空间,是否已经分配了所述对象实例/交互实例所属联邦地址空间,如果已经分配则退出;
(2)查找所述联邦地址空间中已分配的内存空间,是否已经分配了所述对象实例/交互实例所属的邦员地址空间,如果已经分配则退出;
(3)查找所述邦员地址空间中已分配的内存空间,是否已经分配了所述对象实例/交互实例地址空间,如果已经分配则退出;
(4)检查所述邦员内剩余内存空间是否充足,如果空间为零则进入步骤(7);
(5)如果有剩余内存空间,首先查找是否存在刚好对象实例/交互实例大小的内存块,如果存在则将其分配给该所述对象实例/交互实例,并将所述内存块标志为busy,进入步骤(7);
(6)如果没有刚好大小的内存块,则遍历所述邦员的空闲内存空间,找到能够分配所述对象实例/交互实例的最小内存空间,并将所述最小内存空间标志为busy,进入步骤(7);
(7)退出并返回起始地址。
5、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦释放内存的方法如下:
(1)在已分配的内存区域中查找所述联邦的内存是否存在,如果不存在则退出;
(2)如果所述联邦的内存存在,将所述联邦的内存空间标志为空闲区域,并释放联邦内存;
(3)检查步骤(2)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
6、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦邦员释放内存的方法如下:
(1)在已分配的内存区域中查找所述邦员所属联邦的内存是否存在,如果不存在则退出;
(2)在所述联邦内存区域内的已分配内存区域中查找所述邦员的内存是否存在,如果不存在则退出;
(3)如果所述邦员的内存存在,将所述邦员的内存空间标志为空闲区域,并释放邦员内存;
(4)检查步骤(3)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
7、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:为联邦邦员中的对象实例/交互实例释放内存的方法如下:
(1)在已分配的内存区域中查找所述对象实例/交互实例所属联邦的内存是否存在,如果不存在则退出;
(2)在所述联邦内存区域内的已分配内存区域中查找所述对象实例/交互实例所属邦员的内存是否存在,如果不存在则退出;
(3)在所述邦员内存区域内的已分配内存区域中查找所述对象实例/交互实例的内存是否存在,如果不存在则退出;
(4)如果所述对象实例/交互实例的内存存在,将所述对象实例/交互实例的内存空间标志为空闲区域,并释放对象实例/交互实例的内存;
(5)检查步骤(4)中新增的空闲区域是否存在左侧或右侧的空闲区域,如果存在则合并空闲区域。
8、根据权利要求1所述的一种基于分布仿真反射内存网动态内存管理方法,其特征在于:在所述封装的基础上进行第二次封装,所述第二次封装是将有通信需求的邦员之间分配对象实例/交互实例内存空间,通信过程中的读操作,通信过程中的写操作,释放对象实例/交互实例内存空间四个过程封装为一个类,当所述邦员之间需要进行对象类/交互类实例通信时,对所述类进行实例化,所述类中分配对象实例/交互实例内存空间,通信过程中的读操作、通信过程中的写操作,释放对象实例/交互实例内存空间四个过程均由所述实例进行管理。
CN2009100782667A 2009-02-24 2009-02-24 一种基于分布仿真的反射内存网动态内存管理方法 Active CN101493784B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100782667A CN101493784B (zh) 2009-02-24 2009-02-24 一种基于分布仿真的反射内存网动态内存管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100782667A CN101493784B (zh) 2009-02-24 2009-02-24 一种基于分布仿真的反射内存网动态内存管理方法

Publications (2)

Publication Number Publication Date
CN101493784A true CN101493784A (zh) 2009-07-29
CN101493784B CN101493784B (zh) 2011-09-21

Family

ID=40924395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100782667A Active CN101493784B (zh) 2009-02-24 2009-02-24 一种基于分布仿真的反射内存网动态内存管理方法

Country Status (1)

Country Link
CN (1) CN101493784B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651674A (zh) * 2012-03-30 2012-08-29 北京经纬恒润科技有限公司 一种反射内存网数据传输方法
CN103293964A (zh) * 2013-03-22 2013-09-11 中国航空工业集团公司沈阳飞机设计研究所 一种机电非总线、总线信号的仿真激励与综合测试方法
CN103678001A (zh) * 2013-11-18 2014-03-26 中国空间技术研究院 一种基于反射内存网的多节点内存自动分配方法
CN103957132A (zh) * 2014-04-18 2014-07-30 北京航空航天大学 一种反射内存网络节点卡共享存储区数据映射误码率测试方法
CN103984240A (zh) * 2014-04-27 2014-08-13 中国航空工业集团公司沈阳飞机设计研究所 一种基于反射内存网的分布式实时仿真方法
CN107273210A (zh) * 2017-06-13 2017-10-20 上海青橙实业有限公司 Jack Server实例的管理方法和装置
CN108153922A (zh) * 2016-12-05 2018-06-12 北京仿真中心 一种分布式仿真实时网络的内存规划方法
CN109189107A (zh) * 2018-11-30 2019-01-11 南京长峰航天电子科技有限公司 一种多模转台的复合控制方法及系统
CN111506426A (zh) * 2020-04-17 2020-08-07 翱捷科技(深圳)有限公司 内存管理方法、装置及电子设备
CN114047712A (zh) * 2021-10-12 2022-02-15 中国电子科技集团公司第二十九研究所 一种基于反射内存网的半实物仿真系统的数据通信方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651674B (zh) * 2012-03-30 2015-06-24 北京经纬恒润科技有限公司 一种反射内存网数据传输方法
CN102651674A (zh) * 2012-03-30 2012-08-29 北京经纬恒润科技有限公司 一种反射内存网数据传输方法
CN103293964A (zh) * 2013-03-22 2013-09-11 中国航空工业集团公司沈阳飞机设计研究所 一种机电非总线、总线信号的仿真激励与综合测试方法
CN103293964B (zh) * 2013-03-22 2016-06-22 中国航空工业集团公司沈阳飞机设计研究所 一种机电非总线、总线信号的仿真激励与综合测试方法
CN103678001A (zh) * 2013-11-18 2014-03-26 中国空间技术研究院 一种基于反射内存网的多节点内存自动分配方法
CN103957132A (zh) * 2014-04-18 2014-07-30 北京航空航天大学 一种反射内存网络节点卡共享存储区数据映射误码率测试方法
CN103957132B (zh) * 2014-04-18 2017-05-17 北京航空航天大学 一种反射内存网络节点卡共享存储区数据映射误码率测试方法
CN103984240A (zh) * 2014-04-27 2014-08-13 中国航空工业集团公司沈阳飞机设计研究所 一种基于反射内存网的分布式实时仿真方法
CN108153922A (zh) * 2016-12-05 2018-06-12 北京仿真中心 一种分布式仿真实时网络的内存规划方法
CN107273210A (zh) * 2017-06-13 2017-10-20 上海青橙实业有限公司 Jack Server实例的管理方法和装置
CN109189107A (zh) * 2018-11-30 2019-01-11 南京长峰航天电子科技有限公司 一种多模转台的复合控制方法及系统
CN111506426A (zh) * 2020-04-17 2020-08-07 翱捷科技(深圳)有限公司 内存管理方法、装置及电子设备
CN114047712A (zh) * 2021-10-12 2022-02-15 中国电子科技集团公司第二十九研究所 一种基于反射内存网的半实物仿真系统的数据通信方法

Also Published As

Publication number Publication date
CN101493784B (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
CN101493784B (zh) 一种基于分布仿真的反射内存网动态内存管理方法
US7769031B2 (en) Virtual machine system and method of network communication between virtual machines
CN102253840B (zh) 插件管理方法及插件管理器
CN103180830B (zh) 中央处理器资源分配方法和计算节点
CN102750178B (zh) 通信设备硬件资源的虚拟化管理方法及相关装置
CN104916048B (zh) 一种基于互联网思维,云平台,app付费的充电控制系统及方法
CN103747107B (zh) 一种兼容式云操作平台及其实现方法
CN107943459A (zh) 一种通用化航天器综合电子系统
CN106547612A (zh) 一种多任务处理方法及装置
CN106941516A (zh) 基于工业互联网操作系统的异构现场设备控制管理系统
CN106685787A (zh) 基于OpenStack的PowerVM虚拟化网络管理方法及装置
CN103377070A (zh) 一种现场总线接口抽象方法
CN109522090A (zh) 资源调度方法及装置
CN106126359A (zh) 进程间共享数据的快速传输方法
CN103207965A (zh) 一种虚拟环境下License认证的方法及装置
CN105843693A (zh) 一种面向高速磁浮交通仿真的共享内存方法
CN104038444A (zh) 一种资源分配的方法、设备及系统
CN106909752A (zh) 高速铁路计算机联锁系统外部接口测试的仿真系统
CN105335235A (zh) 一种基于IaaS模式的资源管理系统及方法
CN104850505A (zh) 基于链式堆叠的内存管理方法与系统
CN113377344A (zh) 一种复杂信息系统综合集成方法
CN109101194A (zh) 一种刷写性能优化方法和存储系统
CN103795603A (zh) 一种基于多网卡的边缘虚拟桥接的实现方法和设备
CN106059877A (zh) 一种基于SPARC架构CPU的EtherCAT主站模块
CN113626150A (zh) 一种弹性容器实例实现方法

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