CN107797872A - 用于传输信息的方法和装置 - Google Patents

用于传输信息的方法和装置 Download PDF

Info

Publication number
CN107797872A
CN107797872A CN201610808299.2A CN201610808299A CN107797872A CN 107797872 A CN107797872 A CN 107797872A CN 201610808299 A CN201610808299 A CN 201610808299A CN 107797872 A CN107797872 A CN 107797872A
Authority
CN
China
Prior art keywords
storage location
internal storage
information
memory
size
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.)
Pending
Application number
CN201610808299.2A
Other languages
English (en)
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610808299.2A priority Critical patent/CN107797872A/zh
Priority to US15/409,930 priority patent/US10133688B2/en
Publication of CN107797872A publication Critical patent/CN107797872A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

本申请公开了用于传输信息的方法和装置。所述方法的一具体实施方式包括:向共享内存发送待传输的第一信息;遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;将所述第一信息存储到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。该实施方式通过将需要传输的第一信息存储到与其大小相适应的内存单元的方式,节约了内存资源。

Description

用于传输信息的方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及计算机应用技术领域,尤其涉及一种用于传输信息的方法和装置。
背景技术
操作系统内的各节点之间可以通过共享内存的方式进行信息传输。具体地,发送节点可以将信息存储到共享内存,接收节点在共享内存单元中读取信息,从而实现信息的传输。
通常,在信息传输之前通常需要初始化共享内存中用于存储信息的内存单元。由于无法确定需要传输信息的大小,系统通常会将共享内存设置成多个大小相同的内存单元,并且为了可以存储不同大小的信息,这里的内存单元需要预留额外的空间,造成了内存资源的浪费。而当需要传输的信息大于每个内存单元的大小时,系统还需要回收内存单元,并重新分配出可以匹配需要传输信息大小的内存单元,内存单元的回收和重新分配的过程需要消耗大量的时间,这会导致信息传输的时延增加,影响信息传输的效率。
发明内容
本申请的目的在于提出一种改进的用于传输信息的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于传输信息的方法,所述方法包括:向共享内存发送待传输的第一信息;遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;将所述第一信息存储到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。
在一些实施例中,向操作系统申请所述共享内存,并将所述共享内存划分为多个所述内存组和预留内存,各所述内存单元的大小大于预设阈值。
在一些实施例中,所述内存组包括静态内存组和动态内存组,其中,所述动态内存组中仅包括一个内存单元;所述动态内存组中的内存单元的大小大于所述静态内存组中的各内存单元的大小。
在一些实施例中,所述遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,包括:遍历所述共享内存中的所述内存组,判断各所述内存组中是否存在大于所述第一信息的内存单元;若是,则在大于所述第一信息的各内存单元中获取与所述第一信息的大小差值最小的内存单元作为第一内存单元;若否,则根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元。
在一些实施例中,所述将所述共享内存划分为多个所述内存组和预留内存,包括:根据所述共享内存第一次接收的信息的大小,将所述共享内存划分为多个所述内存组和所述预留内存,各所述内存组中的内存单元的大小均大于所述共享内存第一次接收的信息的大小。
在一些实施例中,所述根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元,包括:判断所述动态内存组中的内存单元是否空闲;若是,则获取所述动态内存组中的内存单元,将该内存单元与所述预留内存重新组合,并分配与所述第一信息的大小相适应的第一内存单元;若否,则删除所述动态内存组中的内存单元,并从所述预留内存中分配与所述第一信息的大小相适应的第一内存单元。
第二方面,本申请提供了一种用于传输信息的装置,包括:发送模块,配置用于向共享内存发送待传输的第一信息;获取模块,配置用于遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;存储模块,配置用于将所述第一信息存储 到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。
在一些实施例中,所述装置还包括:划分模块,配置用于向操作系统申请所述共享内存,并将所述共享内存划分为多个所述内存组和预留内存,各所述内存单元的大小大于预设阈值。
在一些实施例中,所述内存组包括静态内存组和动态内存组,其中,所述动态内存组中仅包括一个内存单元;所述动态内存组中的内存单元的大小大于所述静态内存组中的各内存单元的大小。
在一些实施例中,所述获取模块包括:判断子模块,配置用于遍历所述共享内存中的所述内存组,判断各所述内存组中是否存在大于所述第一信息的内存单元;若是,则在大于所述第一信息的各内存单元中获取与所述第一信息的大小差值最小的内存单元作为第一内存单元;若否,则根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元。
在一些实施例中,所述划分模块配置具体用于:根据所述共享内存第一次接收的信息的大小,将所述共享内存划分为多个所述内存组和所述预留内存,各所述内存组中的内存单元的大小均大于所述共享内存第一次接收的信息的大小。
在一些实施例中,所述判断子模块还用于:判断所述动态内存组中的内存单元是否空闲;若是,则获取所述动态内存组中的内存单元,将该内存单元与所述预留内存重新组合,并分配与所述第一信息的大小相适应的第一内存单元;若否,则删除所述动态内存组中的内存单元,并从所述预留内存中分配与所述第一信息的大小相适应的第一内存单元。
本申请提供的用于传输信息的方法,向共享内存发送待传输的第一信息后,遍历共享内存中的各内存组,获取与该第一信息的大小相适应的第一内存单元,而后将第一信息存储到上述第一内存单元中,最后接收节点在上述第一内存单元读取第一信息,通过将第一信息存储到与其大小相适应的第一单元,减少了对内存的浪费,节约了内存资源。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了可以应用于本申请的用于传输信息的方法或装置的实施例的示例性操作系统的架构图;
图2是根据本申请的用于传输信息的方法的一个实施例的流程图;
图3是根据本申请的用于传输信息的方法的又一个实施例的流程图;
图4是根据本申请的用于传输信息的装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的用于传输信息的装置的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用于本申请的用于传输信息的方法或装置的实施例的示例性操作系统的架构图100。
如图1所示,操作系统100可以包括用于发送信息的发送节点101,用于存储信息的共享内存102,以及用于读取信息的接收节点103,使得操作系统可以通过共享内存实现信息自发送节点101向接收节点103的传输,这里的操作系统100例如可以是但不限于Linux系统、机器人操作系统(Robot Operating System,ROS)等。
在上述操作系统100中,发送节点101可以向共享内存102发送待传输的信息,接收节点103可以读取共享内存102中存储的信息。上述共享内存102中的内存单元1021可以用于存储发送节点101发送的信息。
在本申请中,共享内存102可以包括多个内存组和预留内存,如图1所示,共享内存102包括内存组1、内存组2等n个内存组和一个预留内存。各内存组可以包括至少一个内存单元1021,如内存组1包括三个内存单元,内存组2包括两个内存单元,如图1所示。在同一个内存组中的各内存单元1021的大小相同,而不同内存组中的内存单元1021的大小不同。因此,上述共享内存102中包括n种大小不同的内存单元1021。
进一步地,上述共享内存102中的内存组可以包括静态内存组和动态内存组,例如,其中的内存组1、内存组2等为静态内存组,内存组n为动态内存组。这里,静态内存组中的各内存单元1021的大小通常不会发生改变,而动态内存组中的内存单元1021可以与预留内存重新组合分配出预设大小的内存单元。通常,共享内存102中可以包括多个静态内存组和一个动态内存组,且动态内存组中仅存在一个内存单元,当待传输信息的大小大于所有内存单元1021的大小时,可以将动态内存组中的内存单元1021与预留内存组合重新分配与待传输信息大小相适应的内存单元,并将待传输信息存储到重新分配的内存单元。
上述共享内存102中的各内存单元1021可以具有唯一的编号,例如,可以如图1所示为各内存单元1021依次编号为1、2等。当发送节点101向共享内存102发送待传输信息时,可以按照编号依次检查并获取大于上述待传输信息的大小的内存单元1021,而后计算各所获取的内存单元1021与上述待传输信息的差值,最后可以将待传输信息存储到与其大小差值最小的内存单元1021中。需要说明的是,若是共享内存102中不存在大于待传输信息的内存单元1021,将动态内存组n中的内存单元m与预留内存组合重新分配,分配后的内存单元重新编号为m,并将待传输信息存储到该内存单元中。
在上述共享内存102中,随着内存单元1021编号的增加,位于不同内存组中的内存单元1021的大小可以依次增加,如图1所示。例如,若内存组1中的内存单元1等的大小为a,内存组2中的内存单元4等的大小为b,内存组3中的内存单元6等的大小为c,内存组n中的内存单元m的大小为d,各内存组中的内存单元的编号依次增加,且a<b<c<d,例如,内存单元1小于内存单元4,内存单元4小于内存单元6,内存单元6小于内存单元m,即位于不同内存组中的内存单元1021的大小依次增加。在此种这情况下,当发送节点101按照编号依次查询并获取多个大于待传输信息的大小的内存单元1021时,无需确定待传输信息与获取的各内存单元的差值,其中编号最小的内存单元即为与上述待传输信息的大小差值最小的内存单元。
上述接收节点103可以将上述共享内存映射到自身的空间内,这样接收节点103可以通过访问自身的内存实现读取共享内存102中存储的信息的效果,最后实现发送节点101和接收节点103之间的信息传输。
应该理解,图1中的发送节点101、接收节点103的数目仅仅是示意性的。根据实现需要,上述操作系统100可以具有任意数目发送节点101和接收节点103。
图2示出了根据本申请的用于传输信息的方法的一个实施例的流程图200。本实施例的用于传输信息的方法,包括以下步骤:
步骤201,向共享内存发送待传输的第一信息。
在本实施例中,发送节点可以是在操作系统内的用于发送信息的节点,上述操作系统可以是各种操作系统,例如可以是Linux系统、机器人操作系统(Robot OperatingSystem,ROS)等。上述第一信息可以是操作系统内的各节点之间的可传输的信息,例如可以是自动驾驶汽车的仿真器在仿真运行时的路况信息。上述共享内存是指在计算机系统中可以被不同节点访问的内存,上述发送节点可以向共享内存中发送待传输的第一信息。可以理解的是,发送节点可以通过向操作系统申请获得上述共享内存。
步骤202,遍历共享内存中的各内存组,获取与第一信息的大小 相适应的第一内存单元。
在本实施例中,上述接收节点可以首先获得该第一信息的大小,之后遍历共享内存中的各内存组,在各内存组的内存单元中获取与上述第一信息的大小相适应的第一内存单元。
需要说明的是,上述共享内存可以包括多个内存组,每个内存组包括至少一个内存单元。进一步地,在同一内存组中的各内存单元的大小相等,在不同内存组中的内存单元的大小互不相同。由此可见,上述内存系统中可以包括多种存储大小的内存单元,以便于接收节点可以在其中获取与第一信息大小相适应的第一内存单元。通常,上述获取的用于存储第一信息的第一内存单元的大小可以稍大于第一信息的大小,以使其能够存储发送节点发送的第一消息。
步骤203,将第一信息存储到第一内存单元,以使接收节点读取第一内存单元中的第一信息。
在本实施例中,基于步骤202获取的第一单元,发送节点将上述待传输的第一信息存储到上述第一单元,而后接收节点可以读取上述第一信息,从而实现信息的传输。这里的第一信息可以是操作系统中任意一条待传输的信息。上述接收节点可以是在操作系统内的用于接收或读取上述发送节点发送的第一信息的节点,例如可以是自动驾驶汽车的仿真器中的各仿真模块所在的节点。
上述接收节点可以将上述共享内存映射到自身内存中,而后接收节点可以在自身的内存中读取上述共享内存中存储的第一信息,实现信息从发送节点到接收节点的传输。
本申请的上述实施例提供的用于传输信息的方法,可以将共享内存划分为多个内存组,并且不同内存组中的内存单元的大小不同,使得共享内存可以包括多种大小的内存单元,待传输的第一信息可以选择与其大小相适应的内存单元,避免了内存的浪费。
请继续参考图3,其示出了根据本申请的用于传输信息的方法的另一个实施例的流程图300。本实施例的用于传输信息的方法,包括以下步骤:
步骤301,向操作系统申请所述共享内存,并将共享内存划分为 多个内存组和预留内存,各内存单元的大小大于预设阈值。
在本实施例中,发送节点可以是在操作系统内的用于发送信息的节点,上述操作系统可以是各种操作系统,例如可以是Linux系统、机器人操作系统(Robot OperatingSystem,ROS)等。上述共享内存是指在计算机系统中可以被不同节点访问的内存,上述发送节点可以向共享内存中发送待传输的第一信息。可以理解的是,发送节点可以通过向操作系统申请获得上述共享内存。
发送节点在得到操作系统分配的共享内存后,可以将共享内存划分为多个内存组和预留内存。其中各内存组可以包括至少一个内存单元,同一个内存组中的各内存单元的大小相同,不同内存组中的内存单元的大小不同。需要说明的是,在该共享内存中的各内存单元的大小均大于预设阈值。例如,当预设阈值为2M,共享内存包括内存组1、内存组2、内存组3等,内存组1、内存组2、内存组3等中的各内存单元的存储空间大小均大于2M,且任意一个内存组中的内存单元与其它内存组中的内存单元的大小不同。
在本实施例的一些可选的实现方式中,上述发送节点可以根据共享内存第一次接收到的信息的大小划分内存组和预留内存,使得最小内存单元的大小大于上述共享内存第一次接收到的信息的大小,即上述预设阈值为共享内存第一次接收到的信息的大小。可以理解的是,还可以根据历史传输信息的平均值设置上述预设阈值,上述共享内存中内存单元的最小值没有具体的限定。
在本实施例的一些可选的实现方式中,上述内存组可以包括多个静态内存组和一个动态内存组。当发送节点对共享内存划分完成后,静态内存组中的各内存单元不会再次重新分配,而动态内存组中的内存单元可以与上述预留内存组和进行重新分配。进一步地,上述动态内存组中可以只包含一个内存单元,且上述内存组中的内存单元的大小可以大于各静态内存组中的内存单元的大小。上述发送节点向共享内存发送第一信息后,可以遍历各内存单元获取与上述第一信息的大小相适应的内存单元,若各内存组中的内存单元均小于上述第一信息,则可以将动态内存组中的内存单元与预留内存进行组合重新分配一个与上述第一信息的大小相适应的内存单元,该内存单元可以取代原动态内存组中的内存单元。
步骤302,向共享内存发送待传输的第一信息。
在本实施例中,上述发送节点可以向上述共享内存发送需要传输的第一信息。上述第一信息可以是操作系统内的各节点之间的可传输的信息,例如可以是自动驾驶汽车的仿真器在仿真运行时的路况信息。可以理解的是,上述发送节点还可以获取待传输的第一信息的大小,以便于在共享内存中查询可以用于存储上述第一信息的内存单元。
步骤303,遍历共享内存中的内存组,判断各内存组中是否存在大于第一信息的内存单元。
在本实施例中,上述发送节点根据第一信息的大小,遍历上述共享内存中静态内存组和动态内存组,在各内存组中查询大于上述第一信息的内存单元。若各内存组中存在大于上述第一信息的内存单元,则转到步骤304,若各内存组中不存在大于上述第一信息的内存单元,则转到步骤305。
步骤304,在大于第一信息的各内存单元中获取与第一信息的大小差值最小的内存单元作为第一内存单元。
在本实施例中,基于步骤303确定的共享内存中存在大于上述第一信息的内存单元,发送节点继续在所确定的各大于上述第一信息的内存单元中获取与上述第一信息的大小的差值最小的内存单元,该内存单元为用于存储上述第一信息的第一内存单元。若上述共享内存中只存在一个大于上述第一信息的内存单元,则可以不计算该内存单元的大小与上述第一信息的大小的差值而直接将该内存单元作为用于存储第一信息的第一内存单元。
在本实施例的一些可选的实现方式中,上述共享内存中的各内存单元可以具有唯一的编号,并且随着内存单元编号的增加,位于不同内存组中的内存单元的大小可以依次增加。上述发送节点可以按照编号的顺序依次查询大于第一信息的内存单元。在此种这情况下,若共享内存中存在大于上述第一信息的内存单元,无需确定待传输信息与获取的各内存单元的差值,其中编号最小的内存单元即为与上述待传 输信息的大小差值最小的内存单元,提高了信息传输的效率。
步骤305,判断动态内存组中的内存单元是否空闲。
在本实施例中,基于步骤303确定的共享内存中不存在大于上述第一信息的内存单元,则可以确定需要在上述共享内存中重新分配一个与上述第一信息的大小相适应的第一内存单元用于存储上述第一信息。上述发送节点可以继续判断上述动态内存组中的内存单元是否空闲,若上述动态内存组中的内存单元空闲,则可以转到步骤306,若上述动态内存组中的内存单元中已经存储了信息,则可以转到步骤307。
步骤306,获取动态内存组中的内存单元,将该内存单元与预留内存重新组合,并分配与第一信息的大小相适应的第一内存单元。
在本实施例中,基于步骤305确定的动态内存组中的内存单元空闲,可以将动态内存组中的内存单元与预留内存进行组合并重新分配与上述第一信息的大小相适应的内存单元作为第一内存单元,而后将上述第一信息存储到该第一内存单元。需要说明的是,该重新分配的第一内存单元可以取代上述动态内存组中的内存单元。
步骤307,删除动态内存组中的内存单元,并从预留内存中分配与第一信息的大小相适应的第一内存单元。
在本实施例中,基于步骤305确定的动态内存组中的内存单元中已经存储了信息,则可以将该内存单元删除,而后根据上述第一信息的大小在上述预留内存中重新分配与上述第一信息的大小相适应的内存单元作为第一内存单元,最后将上述第一信息存储到该第一内存单元。需要说明的是,该重新分配的第一内存单元可以取代上述动态内存组中的内存单元。
从图3中可以看出,与图2的实施例相比,本实施例中的用于传输信息的方法的流程300突出了将动态内存组与预留内存组合并重新分配的步骤。由此本方案实施例描述的方案可以使得当共享内存中存在大于上述第一信息的内存单元时,该第一信息可以存储到与其大小相适应的第一内存单元中,当共享内存中不存在大于与第一信息的内存单元时,上述动态内存组中的内存单元可以与上述预留内存组合并 重新分配与上述待传输信息的大小相适应的内存单元,节约内存资源,避免了内存单元频繁回收重分配,提高了信息传输的效率。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于传输信息的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所述的用于传输信息的装置400包括:发送模块401、获取模块402和存储模块403。其中,发送模块401配置用于向共享内存发送待传输的第一信息;获取模块402配置用于遍历上述共享内存中的各内存组,获取与上述第一信息的大小相适应的第一内存单元,其中,各内存组包括至少一个内存单元,且同一内存组中的各内存单元的大小相同,不同内存组中的内存单元的大小互不相同;存储模块403配置用于将上述第一信息存储到上述第一内存单元,以使接收节点读取上述第一内存单元中的第一信息。
在本实施例中,用于传输信息的装置400可以向共享内存发送待传输的第一信息,而后遍历上述共享内存中的各内存组,从内存组中获取与上述第一信息的大小相适应的第一内存单元,最后将上述第一信息存储到上述第一内存单元,接收节点读取第一内存中的第一信息。这里,共享内存中可以包括多个内存组以及预留内存,各内存组包括至少一个内存单元,并且在同一个内存组中的内存单元的大小相同,不同内存组中的内存单元的大小不同,使得共享内存中包括多个大小不同的内存单元,以存储大小不同的待传输信息,避免了对内存资源的浪费。
在本实施例中,用于传输信息的装置400还包括:划分模块,配置用于向操作系统申请上述共享内存,并将上述共享内存划分为多个内存组和预留内存,各内存单元的大小大于预设阈值。这里,内存组包括静态内存组和动态内存组,其中,动态内存组中仅包括一个内存单元。上述动态内存组中的内存单元的大小大于上述静态内存组中的各内存单元的大小。
在本实施例中,上述划分模块配置具体用于根据上述共享内存第一次接收的信息的大小,将该共享内存划分为多个内存组和预留内存, 各内存组中的内存单元的大小均大于上述共享内存第一次接收的信息的大小。
在本实施例中,获取模块403还包括判断子模块,配置用于从内存单元最小的内存组开始,遍历上述共享内存中的内存组,判断上述各内存组中是否存在大于上述第一信息的内存单元;若是,则在大于上述第一信息的各内存单元中获取与该第一信息的大小差值最小的内存单元作为第一内存单元;若否,则根据上述预留内存和动态内存组中的内存单元的空闲状态,重新分配与上述第一信息的大小相适应的第一内存单元。当共享内存中存在大于上述第一信息的内存单元时,该第一信息存储到与其大小相适应的第一内存单元中,当共享内存中不存在大于第一信息的内存单元时,上述动态内存组中的内存单元可以与上述预留内存组合并重新分配与上述待传输信息的大小相适应的内存单元,节约了内存资源,避免了内存单元频繁回收重分配,提高了信息传输的效率。
在本实施例中,上述判断子模块还用于判断上述动态内存组中的内存单元是否空闲;若是,则获取上述动态内存组中的内存单元,将该内存单元与上述预留内存重新组合,并分配与上述第一信息的大小相适应的第一内存单元;若否,则删除上述动态内存组中的内存单元,并从上述预留内存中分配与上述第一信息的大小相适应的第一内存单元。
本申请的上述实施例提供的用于传输信息的装置,可以将待传输的第一信息存储到共享内存中大于上述第一信息且与该第一信息差值最小的内存单元中,而当共享内存中不存在大于第一信息的内存单元时,上述动态内存组中的内存单元可以与上述预留内存组合并重新分配与上述待传输信息的大小相适应的内存单元,节约内存资源,避免了内存单元频繁回收重分配,提高了信息传输的效率。
下面参考图5,其示出了适于用来实现本申请实施例的用于传输信息的装置的计算机系统500的结构示意图。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508 加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实 现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块和存储模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,发送模块还可以被描述为“向共享内存发送待传输的第一信息的模块”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:向共享内存发送待传输的第一信息;遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;将所述第一信息存储到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种用于传输信息的方法,其特征在于,包括:
向共享内存发送待传输的第一信息;
遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;
将所述第一信息存储到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。
2.根据权利要求1中的方法,其特征在于,所述方法还包括:
向操作系统申请所述共享内存,并将所述共享内存划分为多个所述内存组和预留内存,各所述内存单元的大小大于预设阈值。
3.根据权利要求2所述的方法,其特征在于,所述内存组包括静态内存组和动态内存组,其中,所述动态内存组中仅包括一个内存单元;
所述动态内存组中的内存单元的大小大于所述静态内存组中的各内存单元的大小。
4.根据权利要求3所述的方法,其特征在于,所述遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,包括:
遍历所述共享内存中的所述内存组,判断各所述内存组中是否存在大于所述第一信息的内存单元;
若是,则在大于所述第一信息的各内存单元中获取与所述第一信息的大小差值最小的内存单元作为第一内存单元;
若否,则根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元。
5.根据权利要求2所述的方法,其特征在于,所述将所述共享内存划分为多个所述内存组和预留内存,包括:
根据所述共享内存第一次接收的信息的大小,将所述共享内存划分为多个所述内存组和所述预留内存,各所述内存组中的内存单元的大小均大于所述共享内存第一次接收的信息的大小。
6.根据权利要求4所述的方法,其特征在于,所述根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元,包括:
判断所述动态内存组中的内存单元是否空闲;
若是,则获取所述动态内存组中的内存单元,将该内存单元与所述预留内存重新组合,并分配与所述第一信息的大小相适应的第一内存单元;
若否,则删除所述动态内存组中的内存单元,并从所述预留内存中分配与所述第一信息的大小相适应的第一内存单元。
7.一种用于传输信息的装置,其特征在于,包括:
发送模块,配置用于向共享内存发送待传输的第一信息;
获取模块,配置用于遍历所述共享内存中的各内存组,获取与所述第一信息的大小相适应的第一内存单元,其中,各所述内存组包括至少一个内存单元,且同一内存组中的各所述内存单元的大小相同,不同内存组中的所述内存单元的大小互不相同;
存储模块,配置用于将所述第一信息存储到所述第一内存单元,以使接收节点读取所述第一内存单元中的所述第一信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
划分模块,配置用于向操作系统申请所述共享内存,并将所述共享内存划分为多个所述内存组和预留内存,各所述内存单元的大小大于预设阈值。
9.根据权利要求8所述的装置,其特征在于,所述内存组包括静态内存组和动态内存组,其中,所述动态内存组中仅包括一个内存单元;
所述动态内存组中的内存单元的大小大于所述静态内存组中的各内存单元的大小。
10.根据权利要求9所述的装置,其特征在于,所述获取模块包括:
判断子模块,配置用于遍历所述共享内存中的所述内存组,判断各所述内存组中是否存在大于所述第一信息的内存单元;
若是,则在大于所述第一信息的各内存单元中获取与所述第一信息的大小差值最小的内存单元作为第一内存单元;
若否,则根据所述预留内存和所述动态内存组中的内存单元的空闲状态,重新分配与所述第一信息的大小相适应的第一内存单元。
11.根据权利要求8所述的装置,其特征在于,所述划分模块配置具体用于:
根据所述共享内存第一次接收的信息的大小,将所述共享内存划分为多个所述内存组和所述预留内存,各所述内存组中的内存单元的大小均大于所述共享内存第一次接收的信息的大小。
12.根据权利要求10所述的装置,其特征在于,所述判断子模块还用于:
判断所述动态内存组中的内存单元是否空闲;
若是,则获取所述动态内存组中的内存单元,将该内存单元与所述预留内存重新组合,并分配与所述第一信息的大小相适应的第一内存单元;
若否,则删除所述动态内存组中的内存单元,并从所述预留内存中分配与所述第一信息的大小相适应的第一内存单元。
CN201610808299.2A 2016-09-07 2016-09-07 用于传输信息的方法和装置 Pending CN107797872A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610808299.2A CN107797872A (zh) 2016-09-07 2016-09-07 用于传输信息的方法和装置
US15/409,930 US10133688B2 (en) 2016-09-07 2017-01-19 Method and apparatus for transmitting information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610808299.2A CN107797872A (zh) 2016-09-07 2016-09-07 用于传输信息的方法和装置

Publications (1)

Publication Number Publication Date
CN107797872A true CN107797872A (zh) 2018-03-13

Family

ID=61280853

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610808299.2A Pending CN107797872A (zh) 2016-09-07 2016-09-07 用于传输信息的方法和装置

Country Status (2)

Country Link
US (1) US10133688B2 (zh)
CN (1) CN107797872A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753361A (zh) * 2019-01-04 2019-05-14 合肥杰发科技有限公司 一种内存管理方法、电子设备及存储装置
WO2020029978A1 (zh) * 2018-08-06 2020-02-13 杭州海康威视系统技术有限公司 分配存储设备的方法、装置、设备及存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022049405A (ja) * 2020-09-16 2022-03-29 キオクシア株式会社 記憶装置および制御方法
US11468031B1 (en) * 2021-12-10 2022-10-11 Chaossearch, Inc. Methods and apparatus for efficiently scaling real-time indexing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984417A (zh) * 2010-11-01 2011-03-09 中兴通讯股份有限公司 内存管理方法及装置
CN102004675A (zh) * 2010-11-11 2011-04-06 福建星网锐捷网络有限公司 跨进程数据传输方法、装置及网络设备
CN102567225A (zh) * 2011-12-28 2012-07-11 北京握奇数据系统有限公司 一种管理系统内存的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289470A (en) * 1992-12-14 1994-02-22 International Business Machines Corp. Flexible scheme for buffer space allocation in networking devices
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984417A (zh) * 2010-11-01 2011-03-09 中兴通讯股份有限公司 内存管理方法及装置
CN102004675A (zh) * 2010-11-11 2011-04-06 福建星网锐捷网络有限公司 跨进程数据传输方法、装置及网络设备
CN102567225A (zh) * 2011-12-28 2012-07-11 北京握奇数据系统有限公司 一种管理系统内存的方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020029978A1 (zh) * 2018-08-06 2020-02-13 杭州海康威视系统技术有限公司 分配存储设备的方法、装置、设备及存储介质
CN109753361A (zh) * 2019-01-04 2019-05-14 合肥杰发科技有限公司 一种内存管理方法、电子设备及存储装置
CN109753361B (zh) * 2019-01-04 2020-10-23 合肥杰发科技有限公司 一种内存管理方法、电子设备及存储装置

Also Published As

Publication number Publication date
US20180067878A1 (en) 2018-03-08
US10133688B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
CN108052615B (zh) 访问请求的处理方法、装置、介质及电子设备
CN104734931B (zh) 一种虚拟网络功能间链路建立方法及装置
CN107797872A (zh) 用于传输信息的方法和装置
CN104243265B (zh) 一种基于虚拟机迁移的网关控制方法、装置及系统
CN105159753B (zh) 加速器虚拟化的方法、装置及集中资源管理器
CN103401909B (zh) 基于bs的数据交互方法与系统、客户端及服务器
CN104391868B (zh) 动态页面静态化的装置和方法
CN102165739B (zh) 使用散列对经由rdma写入的消息的可靠接收
CN106095597B (zh) 客户端数据处理方法及装置
CN104199912B (zh) 一种任务处理的方法及装置
CN109471725A (zh) 资源分配方法、装置和服务器
CN109976907A (zh) 任务分配方法和系统、电子设备、计算机可读介质
CN106454402A (zh) 转码任务调度方法和装置
CN106250061A (zh) 文件下载处理方法及装置
CN105210324B (zh) 策略与计费规则功能虚拟化方法、装置及系统
CN102882960B (zh) 一种资源文件的发送方法及装置
CN107832149A (zh) 一种针对多核处理器动态分组管理的Receive‑side Scaling电路
CN108153494A (zh) 一种io请求处理方法及装置
CN109582242B (zh) 级联存储阵列系统的地址确定方法、装置、电子设备
CN107818537A (zh) 数据处理方法和装置
JP4718939B2 (ja) オブジェクトのカテゴリ化
CN109818762B (zh) 用于实现sdn控制器自动注册的方法、适配器和系统
CN110300178A (zh) 通信设备、业务卡、主控卡、文件访问方法及装置
CN109639447B (zh) 环形组网下的网络功能虚拟化业务链映射的方法及装置
CN108965578A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180313