买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种多系统共享内存的管理方法及装置_深圳前海达闼云端智能科技有限公司_201780002588.6 

申请/专利权人:深圳前海达闼云端智能科技有限公司

申请日:2017-08-08

公开(公告)日:2023-01-24

公开(公告)号:CN108064377B

主分类号:G06F9/50

分类号:G06F9/50

优先权:

专利状态码:有效-授权

法律状态:2023.01.24#授权;2018.06.15#实质审查的生效;2018.05.22#公开

摘要:本发明实施例公开了一种多系统共享内存的管理方法及装置。该方法包括:当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;基于所述剩余空闲空间,生成新数据块。该实施方式提高了共享内存的使用率和灵活性,一定程度上提升了数据的传输效率,从而在整体上提升了系统的性能。

主权项:1.一种多系统共享内存的管理方法,其特征在于,应用于宿主操作系统,包括:当接收到虚拟操作系统向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;如果包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小与所述数据大小相匹配的第二数据块,以使所述待写数据被写入所述第二数据块;如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;基于所述剩余空闲空间,生成新数据块;所述数据块的控制信息头部分包括所述数据块的偏移值,根据所述偏移值计算所述第一数据块的首地址;根据所述第一数据块的首地址获取存储地址;将所述存储地址发送给目标虚拟系统,以使所述目标虚拟系统在完成数据的读取后向所述宿主操作系统发送确认消息;根据所述确认消息,释放存储了所述待写数据的数据块;判断所述数据块的前一数据块以及所述数据块的后一数据块是否空闲;将判断为空闲的数据块与释放所述待写数据的数据块进行合并。

全文数据:一种多系统共享内存的管理方法及装置【技术领域】[0001]本发明涉及虚拟化技术领域,特别是涉及一种多系统共享内存的管理方法及装置。【背景技术】[0002]随着数据量和数据处理需求的进一步提升,负载对操作系统的性能要求越来越高,因而,在面临着大数据处理的今天,各种多操作系统也逐渐步入人们的视线,从传统的计算机集群系统到如今比较热门的异构操作系统都是人们在这方面的尝试。[0003]多操作系统结构的主要思想是将不同的负载分配到不同的操作系统内核上执行,以提高系统的处理能力,并且兼容不同操作系统上的应用。采用这种设计,所有的内核在计算上是独立的即独立处理负载,但在资源使用上各个操作系统共享整个多操作系统结构的资源,例如输入输出、内存等。[0004]就内存这一多操作系统结构的资源而言,现存的多操作系统结构一般都采用共享内存的方式,即,允许两个不相关的进程访问同一个逻辑内存。[0005]对于共享内存而言,现有技术的一种典型设计为:如果将共享内存抽象成一条“内存带”,则由共享内存管理服务程序按照固定顺序从前往后将“内存带”的内存以块数为基本单位分配给各个子操作系统的内核区,即各个子操作系统的内核区占用内存的顺序是从前往后固定排列,内核区分配的内存在整个多操作系统的运行过程中不会更改。[0006]上述现有技术存在的缺陷为:各个子操作系统缺乏主动内存感知的能力,所有的共享内存管理工作都交由共享内存管理服务程序处理,从而造成共享内存分配不够灵活,并且容易造成部分共享内存的浪费,不能充分有效的利用共享内存。【发明内容】[0007]本发明实施例主要解决在多系统共享内存时,如何充分利用共享内存。[0008]为解决上述技术问题,本发明实施例采用的一个技术方案是:提供一种多系统共享内存的管理方法,包括:[0009]当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;[0010]判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;[0011]如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;[0012]在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;[0013]基于所述剩余空闲空间,生成新数据块。[0014]为解决上述技术问题,本发明实施例采用的另一个技术方案是:提供一种多系统共享内存的管理装置,包括:[0015]第一获取模块,用于当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;[0016]第一判断模块,用于判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;[0017]第一处理模块,用于如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;[0018]第二获取模块,用于在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;[0019]生成模块,用于基于所述剩余空闲空间,生成新数据块。[0020]为解决上述技术问题,本发明实施例采用的又一个技术方案是:提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令程序,所述指令程序被所述至少一个处理器执行,以使所述至少一个处理器执行如上所述的方法。[0021]为解决上述技术问题,本发明实施例采用的再一个技术方案是:提供一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上所述的方法。[0022]为解决上述技术问题,本发明实施例采用的还一个技术方案是:提供一种计算机程序产品,所述计算机程序产品包括:非易失性计算机可读存储介质以及内嵌于所述非易失性计算机可读存储介质的计算机程序指令;所述计算机程序指令包括用以使处理器执行如上所述的方法的指令。[0023]本发明实施例的有益效果在于:本发明实施例提供的多系统共享内存的管理方法及装置,根据待写数据的数据大小为其分配适合的共享内存,在分配的数据块的内存大小大于待写数据的数据大小时,获取该数据块剩余的空闲空间,并且将该剩余的空闲空间生成新的数据块。该实施方式提高了共享内存的使用率和灵活性,一定程度上提升了数据的传输效率,从而在整体上提升了系统的性能。【附图说明】[0024]—个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。[0025]图1是本发明实施例提供的基于QEMU-KVM技术的虚拟化方案的结构示意图;[0026]图2是本发明实施例提供的一种多系统共享内存的管理方法的流程示意图;[0027]图3是本发明实施例提供的一种多系统共享内存的管理方法中共享内存分^配时的一种状态示意图;[0028]图4是本发明实施例提供的一种多系统共享内存的管理方法中共享内存分配时的另一种状态示意图;[0029]图5是本发明实施例提供的一种多系统共享内存的管理方法中一个数据块的结构示意图;L〇〇3〇」图6是本发明买施例提供的一W多糸统共孚内存的管理方法中一个数据块的控制信息头部分的结构示意图;[0031]图7是本发明实施例提供的另一种多系统共享内存的管理方法的流程示意图;[0032]图8是本发明实施例提供的另一种多系统共享内存的管理方法中获取所述待写数据写入第一数据块后的存储地址的方法的流程示意图;[0033]图9是本发明另一实施例提供的一种多系统共享内存的管理方法的流程示意图;[0034]图10是本发明另一实施例提供的一种多系统共享内存的管理方法中释放数据块的前后过程的状态示意图;[0035]图11是本发明实施例提供的一种多系统共享内存的管理装置的结构示意图;[0036]图12是本发明另一实施例提供的一种多系统共享内存的管理装置的结构示意图;[0037]图13是本发明实施例提供的执行多系统共享内存的管理方法的电子设备的硬件结构示意图。【具体实施方式】[0038]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。[0039]需要说明的是,如果不冲突,本发明实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。[0040]为使本领域技术人员更好地理解本发明,以下对本发明所涉及的相关技术进行简单说明。[0041]虚拟化是将计算机物理资源如服务器、网络、内存及存储等予以抽象、转换后呈现出来,使用户可以比原本的组态更好的方式来应用这些资源,这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。在虚拟化中,真实的物理环境一般称为宿主机器Host,而经过虚拟化被建立起来的环境被称为客户机器Guest。在宿主机器上运行的系统被称为宿主机操作系统Host0S,而运行在客户机器上的操作系统被称为客户机操作系统Guest0S,负责虚拟化的一层一般被称为虚拟机监视器VirtualMachineMonitor,VMM。[0042]KVMKernel-basedVirtualMachine就是一种开源的VMVUKVM的思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理和10管理等部分,使之成为一个可以支持虚拟机运行的虚拟机管理程序,所以KVM并不是一个完整的模拟器,可以将其认为是一个提供了虚拟化功能的内核插件,其具体的模拟器工作需要借助虚拟操作系统模拟器QEMU来完成,在业界己经将QEMU与KVM的结合作为一种常用的虚拟化实施架构。其中,QEMU主要作为模拟器来使用,QEMU-KVM是基于硬件虚拟化技术,并结合了QEMU提供设备虚拟化功能,来实现整个系统虚拟化。[0043]在本发明实施例中,基于该QEMU-KVM虚拟化架构实施本发明实施例提供的多系统共享内存的管理方法。[0044]具体地,如图1所示,提供了一种基于QEMU-KVM技术的虚拟化方案,该方案由一个Host0S,若干个虚拟出来的Guest0S组成,这些操作系统运行在同一套硬件处理器芯片上,共享处理器及外设资源。支持该虚拟化架构的ARM处理器至少包含三种模式,第一种模式下运行虚拟机管理程序,第二种模式下运行Linux内核程序,第三种模式下运行用户空间程序。[0045]其中,虚拟硬件平台负责管理CPU、内存、定时器、中断等硬件资源,通过CPU、内存、定时器、中断的虚拟化资源,可以把不同的操作系统分时加载到物理处理器上运行,从而实现系统虚拟化的功能。[0046]KVM虚拟机监视器虚拟机管理程序层跨越Linux主机内核和虚拟硬件平台两层,一方面为QEMU提供驱动节点,允许QEMU通过KVM节点创建虚拟CPU,管理虚拟化资源;另一方面KVM虚拟机监视器虚拟机管理程序实现了把HostLinux系统从物理CPU上切换出去,然后把GuestLinux系统加载到物理处理器上运行,最后处理GuestLinux系统异常退出的后续事务。[0047]QEMU作为HostLinux的一"^应用运行,为GuestLinux的运行提供虚拟的硬件设备资源,通过KVM虚拟机监视器虚拟机管理程序的设备KVM节点,创建虚拟CPU,分配物理硬件资源,实现把一个未经修改的GuestLinux加载到物理硬件处理上去运行。[0048]为了在机器人、手机或者平板等智能终端设备上实现上述虚拟化方案,需要解决所有硬件设备的虚拟化问题,即允许虚拟出来的操作系统也能使用真实的硬件设备,比如使用内存、中断资源、定时器、网络、多媒体、摄像头、显示等外设资源。由于高效的数据传输方法能够达到理想的设备虚拟化效果,通常采用多个系统之间共享内存的方法来解决所有硬件设备的虚拟化问题。[0049]因此,下述实施例提供了一种多系统共享内存的管理方法及装置,该方法应用在上述QEMU-KVM虚拟化架构上,该多系统共享内存的管理方法能够充分利用共享内存,提升数据的传输效率,以使各种智能终端设备达到理想的虚拟化效果。[0050]请参考图2,图2是本发明实施例提供的一种多系统共享内存的管理方法的流程示意图。如图2所示,该方法包括:[0051]步骤11、当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;[0052]其中,当待传输数据的虚拟操作系统需要向寄宿于同一物理机的目标虚拟系统传输数据时,该待传输数据的虚拟操作系统向宿主机操作系统发送向共享内存写入数据的数据写入指令,此时,可以根据该数据写入指令获取待写入共享内存的待写数据的数据大小。[0053]例如,当虚拟操作系统A向虚拟操作系统B即目标虚拟系统传输数据时,虚拟操作系统A向Host0S发送数据写入指令,由Host0S中所包含的共享内存管理应用程序根据接收到的数据写入指令,获取待写数据的数据大小。该待写数据的数据大小由虚拟操作系统A计算得到。[0054]步骤12、判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;[0055]步骤13、如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;[0056]步骤14、在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;[0057]步骤15、基于所述剩余空闲空间,生成新数据块。[0058]在本实施例中,上述过程即共享内存的分配过程。如图3所示,基于双向链表的数据结构形式,提供了一种共享内存分配时的状态示意图。[0059]在初始化状态时,如图4所示,该共享内存只有一个数据块。同样如图4所示,在运行阶段时,进行共享内存分配,此时该共享内存包含至少两个数据块。在这里,根据待写数据的数据大小匹配合适的数据块,如果共享内存中存在一个数据块的内存大小恰好与待写数据的数据大小相同并且空闲的数据块,则表示共享内存中包含与该数据大小相匹配的并且空闲的数据块,此时,直接获取该数据块,并且控制待写数据写入该数据块。如果共享内存中不存在一个数据块的内存大小与待写数据的数据大小相同并且空闲的数据块,则获取内存大小大于该数据大小并且空闲的数据块,并且控制待写数据写入该数据块,此时,该数据块必定包含剩余的空闲空间,将该空闲空间生成新的数据块。该新的数据块可以被其他进程利用,以保证共享内存不被浪费。[0060]其中,生成的新的数据块的大小由待写数据写入大于所述数据大小并且空闲的第一数据块时的方式来决定。在本实施例中,该待写数据写入大于所述数据大小并且空闲的第一数据块的过程具体包括:根据所述待写数据的数据大小,控制所述待写数据写入大于所述数据大小并且空闲的第一数据块的连续地址空间。在这里,保证写入第一数据块的数据是连续的存储在第一数据块的地址空间中的,从而使生成的新数据块的内存大小尽可能的大,以减少存储碎片的产生。例如,数据块大小为10KB,待写数据为8KB,将该8KB数据写入第一数据块的连续地址空间,则空闲的空间为2KB,当待写数据从所述第一数据块的地址空间的首地址或者尾地址开始,写入所述第一数据块的地址空间时,该生成的新数据块大小为2KB。[0061]因此,优选地,从所述数据块的地址空间的首地址或者尾地址开始,控制所述待写数据写入所述第一数据块的地址空间。从而充分的提高共享内存的利用率。_2]其中,以双向链表管理共享内存数据块节点时,每一个数据块节点的格式如图5所示,该数据块节点包含三段区域,分别是:[0063]控制信息头部分,该部分用于记录共享内存数据块的状态、大小等信[00M]息;应用程序数据区,该部分是真正分配给Guest0S可以进行数据读[0065]写的区域;[0066]控制信息尾部分,该部分用于标记一个数据节点结尾,也就是说Guestos不可以与越这部分区,主要用于监控Guest0S写越界。[0067L其中,^图6所示,该控制信息头部分的主要信息域包含:节点偏移值,用于记录数据块节点从共享内存起始位置到该数据块节点起始位置的偏移量。前节点偏移值,用于记录数据块节点双向链表中该数据块节点的前一个数据块节点的偏移值。后节点偏移值,用于记录数据块节点双向^表中该数据块节点的下一个数据块节点的偏移值。节点状态,用于标识该数据块节点当前状态处于空闲或者使用状态。其它信息,用于记录该数据块节占的长度信息、同步信息等。'[0068]需要说明的是,该共享内存在分配内存时还可以用循环链表或者其他数据结构来管理共享内存的数据块节点,并不仅限于图3、图4所示的形式。当采用其他数据结构时,每个数据块节点的格式与当前的数据结构相匹配。[0069]在一些实施例中,如图7所示,当所述待写数据写入数据块后,该方法还包括:[0070]步骤W、获取所述待写数据写入所述第一数据块后的存储地址,并发送所述存储地址。[0071^该存储地址,即待写数据在第一数据块中存储的位置。共享内存管理应用程序获取待写数据写入第一数据块的存储地址后,将该存储地址发送给目标虚拟系统,目标虚拟系统根据该存储地址从第一数据块中读取所述待写数据,从而完成数据的传输。[0072]其中,如图8所示,获取所述待写数据写入所述第一数据块后的存储地址,具体包括:[0073]步骤161、获取所述第一数据块的偏移值,所述偏移值为所述第一数据块从所述共享内存的起始位置到所述第一数据块的起始位置的偏移量;[0074]步骤162、根据所述偏移值计算所述第一数据块的首地址;[0075]步骤163、根据所述第一数据块的首地址获取所述存储地址。[0076]根据上述图5中一个数据块节点的格式可知,该偏移值可以根据控制信息头部分记录的节点偏移值而得到,获取偏移值后,将共享内存的起始节点地址与该偏移值相加即可获取所述第一数据块的首地址。该存储地址即一个数据块节点中应用程序数据区的地址,可以是其首地址,也可以是其首地址到尾地址这个存储区间。根据第一数据块的首地址,以及控制信息头部分记录的数据块的大小等信息,可以获取所述存储地址。[0077]本发明实施例提供了一种多系统共享内存的管理方法,该方法根据待写数据的数据大小为其分配适合的共享内存,在分配的数据块的内存大小大于待写数据的数据大小时,获取该数据块剩余的空闲空间,并且将该剩余的空闲空间生成新的数据块。该实施方式提高了共享内存的使用率和灵活性,通过充分提升共享内存的使用率,从而提升了数据的传输效率,整体上提升了系统性能。[0078]请参考图9,图9是本发明另一实施例提供的一种多系统共享内存的管理方法的流程不意图。如图9所示,该方法包括:[0079]步骤21、当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;[0080]步骤22、判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;[0081]步骤23、如果包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小与所述数据大小相匹配的第二数据块,以使所述待写数据被写入所述第二数据块;[0082]步骤24、如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;[0083]步骤25、在所述待写数据被写入大于所述数据大小并且空闲的所述第一数据块之后,获取所述第一数据块的剩余空闲空间;[0084]步骤26、基于所述剩余空闲空间,生成新数据块;[0085]上述步骤21-步骤26可参考上述方法实施例中的叙述,在此不再赘述。[0086]步骤27、当接收到从所述共享内存释放所述待写数据的数据释放指令时,释放存储所述待写数据的数据块;[0087]、其中,可以」是在共享内存管理应用程序接收到目标虚拟系统发送的数据读取完成指令后控制所述共享内存释放待写数据,也可以是共享内存管理应用程序主动控制共享内存释放待写数据。该数据块为上述第一数据块或者第二数据块。[0088]步骤28、判断所述数据块的前一数据块以及所述数据块的后一数据块是否空闲;[0089]步骤29、将判断为空闲的数据块与释放所述待写数据的数据块进行合并。[0090]在释放数据块的存储空间的同时,还判断该数据块的前一数据块的状态是否空闲,以及判断该数据块的后一数据块的状态是否空闲,如果前一数据块空闲而后一数据块不空闲,则将削一数据块与该数据块进行合并,合并为一个数据块;如果后一数据块空闲而前一数据块不空闲,则将后一数据块与该数据块进行合并,合并为一个数据块;如果前一数据块和后一数据块均空闲,则同时将前一数据块、后一数据块与该数据块进行合并,生成一个新的数据块。如图10所示,示出了该数据块释放的前后过程。[0091]需要说明的是,本发明实施例提供的多系统共享内存的管理方法可以应用于共享内存的数据传输过程,下面通过举例来说明该过程。[0092]例如,当虚拟操作系统A向虚拟操作系统B传输数据时。首先,虚拟操作系统A向宿主操作系统发送数据传输请求指令,该宿主操作系统中包含共享内存管理应用程序,由共享内存管理应用程序根据接收到的数据传输请求指令,获取待写数据的数据大小。然后,根据待写数据的数据大小分配共享内存,获取合适的数据块,并控制待写数据写入该数据块,在这个过程中,如果分配的数据块有剩余空闲空间,则将该剩余的空闲空间生成新的数据块。在待写数据写入数据块后,共享内存管理应用程序调用同步接口,通知虚拟操作系统B数据已经写入。虚拟操作系统B接收通知并读取数据块中的数据,并且在读取完成后,向宿主操作系统发送确认消息,根据该确认消息,共享内存管理应用程序调用内存释放函数释放存储了数据的数据块,在这个过程中,如果该释放的数据块的前一数据块或者后一数据块为空闲状态,则将空闲的数据块与释放了数据的数据块进行合并。其中,共享内存的数据结构可以是双向链表,或者循环链表,或者其他数据结构。[0093]在本实施例中,根据待写数据的数据大小为其分配适合的共享内存,在分配的数据块的内存大小大于待写数据的数据大小时,获取该数据块剩余的空闲空间,并且将该剩余的空闲空间生成新的数据块;在共享内存释放数据时,还将释放数据的数据块与其临近的空闲数据块进行合并。一方面,该实施方式提高了共享内存的使用率和灵活性,提升了数据的传输效率,另一方面,通过合并释放的数据块可以减少下一次内存分配的时间,提高了内存分配的效率。[0094]请参考图11,图11是本发明实施例提供的一种多系统共享内存的管理装置的结构示意图。如图11所示,该装置30包括:第一获取模块31、第一判断模块32、第一处理模块33、第二获取模块34以及生成模块35。[0095]其中,第一获取模块31,用于当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;第一判断模块32,用于判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;第一处理模块33,用于如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;第二获取模块34,用于在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;生成模块35,用于基于所述剩余空闲空间,生成新数据块。[00%]其中,所述待写数据被写入所述第一数据块的地址空间,并且该地址空间是连续的地址空间。[0097]其中,所述连续的地址空间的首地址与所述第一数据块的地址空间的首地址相同,或者所述连续的地址空间的尾地址与所述第一数据块的地址空间的尾地址相同。[0098]在一些实施例中,如图12所示,该装置3〇还包括:第二处理模块36、释放模块37、第二判断模块38以及合并模块39。[00"]其中,第二处理模块36,用于如果包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小与所述数据大小相匹配的第二数据块,以使所述待写数据写入所述第二数据块。释放模块37,用于当接收到从所述共享内存释放所述待写数据的数据释放指令时,释放存储了所述待写数据的数据块。第二判断模块38,用于判断所述数据块的前一数据块以及所述数据块的后一数据块是否空闲。合并模块39,用于将判断为空闲的数据块与释放所述待写数据的数据块进行合并。[0100]需要说明的是,本发明实施例中的多系统共享内存的管理装置中的各个模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容同样适用于多系统共享内存的管理装置。[0101]本实施例提供了一种多系统共享内存的管理装置,该装置根据待写数据的数据大小为其分配适合的共享内存,在分配的数据块的内存大小大于待写数据的数据大小时,获取该数据块剩余的空闲空间,并且将该剩余的空闲空间生成新的数据块;在共享内存释放数据时,还将释放数据的数据块与其临近的空闲数据块进行合并。一方面,该实施方式提高了共享内存的使用率和灵活性,提升了数据的传输效率,另一方面,通过合并释放的数据块可以减少下一次内存分配的时间,提高了内存分配的效率。[0102]请参考图13,图13是本发明实施例提供的执行多系统共享内存的管理方法的电子设备的硬件结构示意图,该电子设备40能够执行上述多系统共享内存的管理方法,其可以是任何合适的智能终端设备,比如:智能机器人、机器人助手、PDA、个人电脑、平板电脑、智能手机、可穿戴智能设备等。[0103]具体地,如图13所示,该电子设备40包括:一个或多个处理器41以及存储器42,图12中以一个处理器41为例。[0104]处理器41和存储器42可以通过总线或者其他方式连接,图13中以通过总线连接为例。[0105]存储器42作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的多系统共享内存的管理方法对应的程序指令模块例如,附图11所示的第一获取模块31、第一判断模块32、第一处理模块33、第二获取模块34以及生成模块35。处理器41通过运行存储在存储器42中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例多系统共享内存的管理方法。[0106]存储器42可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据多系统共享内存的管理装置的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,坯可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器42可选包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至多系统共享内存的管理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。[0107]所述一个或者多个模块存储在所述存储器42中,当被所述一个或者多个处理器41执行时,执行上述任意方法实施例中多系统共享内存的管理方法,例如,执行以上描述的图2中的方法步骤11至步骤15,图7中的方法步骤11至步骤16,图8中的方法步骤u至步骤13,图9中的方法步骤21至步骤29,实现图11中的模块31-35,图12中的模块31-39的功能。[0108]上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。[0109]本发明实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被电子设备执行上述任意方法实施例中的多系统共享内存的管理方法,例如,执行以上描述的图2中的方法步骤11至步骤15,图7中的方法步骤11至步骤16,图8中的方法步骤11至步骤13,图9中的方法步骤21至步骤29,实现图11中的模块31-35,图12中的模块31-39的功能。[0110]本发明实施例还提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时时,使所述计算机执行上述任意方法实施例中的多系统共享内存的管理方法,例如,执行以上描述的图2中的方法步骤11至步骤15,图7中的方法步骤11至步骤16,图8中的方法步骤11至步骤13,图9中的方法步骤21至步骤29,实现图11中的模块31-35,图12中的模块31-39的功能。[0111]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0112]通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体Read-OnlyMemory,ROM或随机存储记忆体(RandomAccessMemory,RAM等。[0113]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

权利要求:1.一种多系统共享内存的管理方法,其特征在于,包括:当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;基于所述剩余空闲空间,生成新数据块。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小与所述数据大小相匹配的第二数据块,以使所述待写数据被写入所述第二数据块。3.根据权利要求1所述的方法,其特征在于,所述待写数据被写入所述第一数据块的地址空间,所述地址空间是连续的地址空间。4.根据权利要求3所述的方法,其特征在于,所述连续的地址空间的首地址与所述第一数据块的地址空间的首地址相同,或者所述连续的地址空间的尾地址与所述第一数据块的地址空间的尾地址相同。5.根据权利要求1所述的方法,其特征在于,当所述共享内存包含至少两个数据块时,通过循环链表或者双向链表管理所述共享内存的数据块。6.根据权利要求5所述的方法,其特征在于,当通过所述双向链表管理所述共享内存的数据块时,所述数据块的控制信息头部分包括所述数据块的偏移值、所述数据块的前一数据块的偏移值、所述数据块的后一数据块的偏移值、所述数据块的状态信息以及所述数据块的长度信息和同步信息。7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:当接收到从所述共享内存释放所述待写数据的数据释放指令时,释放存储了所述待写数据的数据块。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:判断所述数据块的前一数据块以及所述数据块的后一数据块是否空闲;将判断为空闲的数据块与释放所述待写数据的数据块进行合并。9.一种多系统共享内存的管理装置,其特征在于,包括:第一获取模块,用于当接收到向所述共享内存写入数据的数据写入指令时,获取待写入所述共享内存的待写数据的数据大小;第一判断模块,用于判断所述共享内存中是否包含与所述数据大小相匹配的并且空闲的数据块;第一处理模块,用于如果不包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小大于所述数据大小并且空闲的第一数据块,以使所述待写数据被写入所述第一数据块;第二获取模块,用于在所述待写数据被写入所述第一数据块之后,获取所述第一数据块的剩余空闲空间;生成模块,用于基于所述剩余空闲空间,生成新数据块。10.根据权利要求9所述的装置,其特征在于,所述装置还包括:第二处理模块,用于如果包含与所述数据大小相匹配的并且空闲的数据块,获取内存大小与所述数据大小相匹配的第二数据块,以使所述待写数据被写入所述第二数据块。11.根据权利要求9所述的装置,其特征在于,所述待写数据被写入所述第一数据块的地址空间,所述地址空间是连续的地址空间。12.根据权利要求11所述的装置,其特征在于,所述连续的地址空间的首地址与所述第一数据块的地址空间的首地址相同,或者所述连续的地址空间的尾地址与所述第一数据块的地址空间的尾地址相同。13.根据权利要求9所述的装置,其特征在于,当所述共享内存包含至少两个数据块时,所述共享内存中的数据块通过循环链表或者双向链表的形式连接。14.根据权利要求9至13任一项所述的装置,其特征在于,所述装置还包括:释放模块,用于当接收到从所述共享内存释放所述待写数据的数据释放指令时,释放存储了所述待写数据的数据块。15.根据权利要求14所述的装置,其特征在于,所述装置还包括:第二判断模块,用于判断所述数据块的前一数据块以及所述数据块的后一数据块是否空闲;合并模块,用于将判断为空闲的数据块与释放所述待写数据的数据块进行合并。16.—种电子设备,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令程序,所述指令程序被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求丨至8任一项所述的方法。I7•—种非易失性计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求丨至8任一项所述的方法。18.—种计算机程序产品,其特征在于,所述计算机程序产品包括:非易失性计算机可读存储介质以及内嵌于所述非易失性计算机可读存储介质的计算机程序指令;所述计算机程序指令包括用以使处理器执行权利要求1至8任一项所述的方法的指令。

百度查询: 深圳前海达闼云端智能科技有限公司 一种多系统共享内存的管理方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。