CN106021000B - 用于机器人操作系统的共享内存管理方法和装置 - Google Patents
用于机器人操作系统的共享内存管理方法和装置 Download PDFInfo
- Publication number
- CN106021000B CN106021000B CN201610390625.2A CN201610390625A CN106021000B CN 106021000 B CN106021000 B CN 106021000B CN 201610390625 A CN201610390625 A CN 201610390625A CN 106021000 B CN106021000 B CN 106021000B
- Authority
- CN
- China
- Prior art keywords
- node
- message
- shared
- memory block
- topic name
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/18—Commands or executable codes
-
- 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/418—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/34—Director, elements to supervisory
- G05B2219/34069—Shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/173—Vehicle or other transportation
Abstract
本申请公开了用于机器人操作系统的共享内存管理方法和装置。所述方法的一具体实施方式包括:获取消息接收节点发送的注册共享内存服务请求,注册共享内存服务请求包括:话题名称和所需内存段大小;根据所需内存段大小向共享内存区申请内存段,并将话题名称与所申请的内存段进行关联,将话题名称保存到配置文件中;根据消息发送节点所发送的消息的大小将内存段划分成多个内存块;当满足以下条件中的任一项时将内存段回收:主节点中的话题名称与配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅话题名称对应的话题。该实施方式实现了更加合理、灵活地分配和管理机器人操作系统的共享内存。
Description
技术领域
本申请涉及计算机技术领域,具体涉及计算机操作系统技术领域,尤其涉及用于机器人操作系统的共享内存管理方法和装置。
背景技术
ROS(Robot Operating System,机器人操作系统)使用共享内存的通信方式,它与传统通信方式的区别是:通过不断申请新的共享内存区来实现消息的快速传输,从而实现控制通道的低时延和数据通道的高吞吐量,提高系统的运行效率。
目前ROS使用自动回收内存的方法,当节点进程停止工作后,系统会自行判断是否对该内存进行回收。当对象的所有关联都被切断,且系统进行资源清理后依旧没有使该对象变为可达状态,则这个对象将永久性失去引用并且变成不可达状态,系统才会真正的回收该对象所占用的内存资源。
然而,该自动回收内存的方法存在很多隐患,如果出现某些异常原因没有及时清理不可达内存将会造成大量的资源浪费,严重时会影响其他模块执行效率,甚至会造成整个系统崩溃。
发明内容
本申请的目的在于提出一种改进的用于机器人操作系统的共享内存管理方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于机器人操作系统的共享内存管理方法,其特征在于,所述方法包括:获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称。
在一些实施例中,所述根据所述所需内存段大小向共享内存区申请内存段包括:将内存段申请成功后返回的所述内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
在一些实施例中,每个内存块包括用于指示内存块读写状态的内存块标志量。
在一些实施例中,所述方法还包括:检测消息发送节点对所述内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间;在超过预设的阈值时间的情况下,将所述内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
在一些实施例中,所述内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。
第二方面,本申请提供了一种用于机器人操作系统的共享内存管理装置,其特征在于,所述装置包括:注册单元,配置用于获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;申请单元,配置用于根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;分配单元,配置用于根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;回收单元,配置用于当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称。
在一些实施例中,所述装置还包括:映射单元,配置用于将内存段申请成功后返回的所述内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
在一些实施例中,每个内存块包括用于指示内存块读写状态的内存块标志量。
在一些实施例中,所述装置还包括:检测单元,配置用于检测消息发送节点对所述内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间,在超过预设的阈值时间的情况下,将所述内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
在一些实施例中,所述内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。
本申请提供的用于机器人操作系统的共享内存管理方法和装置,通过根据注册共享内存服务中的话题名称和所需内存段大小申请内存段,根据发送消息的大小将内存段分成多个内存块,当监控到主节点中的话题名称与所述配置文件中的话题名称不一致,或者消息发送节点和消息接收节点停止工作,或者消息接收节点不再订阅所述话题名称对应的话题时回收所分配的内存段,从而能够合理、灵活的分配内存并及时清理不可达内存,提高内存使用效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的用于机器人操作系统的共享内存管理方法的一个实施例的流程图;
图3是根据本申请的用于机器人操作系统的共享内存管理方法的又一个实施例的流程图;
图4是根据本申请的用于机器人操作系统的共享内存管理装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的终端设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于机器人操作系统的共享内存管理方法或装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括无人驾驶车辆101、后台服务器106和网络105。网络105用以在无人驾驶车辆101和后台服务器106之间提供通信链路的介质。网络105可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
后台服务器106可以是提供各种服务的服务器,例如为无人驾驶车辆101提供在线地图的后台地图服务器。
无人驾驶车辆101上可以安装有采集设备102、103和车载控制器104。采集设备102、103可以通过各种通信方式(例如有线、无线通信链路或者光纤电缆等等)将采集的信息发送给车载控制器104。采集设备102、103可以是采集周围环境信息的各种电子设备,包括但不限于摄像头、雷达等等。车载控制器104采用改进的机器人操作系统,通过车内各节点的协同配合,将采集设备102、103采集的周围环境信息和后台服务器106提供的地图信息转化成控制信息,让汽车平稳精确地在道路上行驶。
需要说明的是,本申请实施例所提供的用于机器人操作系统的共享内存管理方法一般由车载控制器104执行,相应地,用于机器人操作系统的共享内存管理装置一般设置于车载控制器104中。
应该理解,图1中的采集设备、无人驾驶车辆和后台服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的采集设备、无人驾驶车辆和后台服务器。
继续参考图2,示出了根据本申请的用于机器人操作系统的共享内存管理方法的一个实施例的流程200。所述的用于机器人操作系统的共享内存管理方法,包括以下步骤:
步骤201,获取消息接收节点发送的注册共享内存服务请求。
机器人操作系统由很多节点和话题构成,每个节点都是一个独立的进程可以和其他节点进行通信。话题是节点之间建立连接的依据,节点可以在一个话题上发布消息,同样也可以订阅一个话题来接收消息。当在一个话题上,发布或订阅时所使用的ROS的数据类型。节点分为两种:发送节点和接收节点,发送节点负责将处理完成的信息发送出去,接收节点负责接收发送节点发出的信息,并根据命令做出相应操作(有时一个节点即是发送者又是接收者)。当节点之间建立连接后,发送-接收节点通过共享内存的方式进行消息传输。使用共享内存的方式进行传输通常是多个发布和接收节点同时使用同一段共享内存区。
在本实施例中,用于机器人操作系统的共享内存管理方法运行于其上的电子设备(例如图1所示的车载控制器)通过操作系统的内存管理进程获取消息接收节点发送的注册共享内存服务请求。其中,该注册共享内存服务请求包括:话题名称和所需内存段大小。例如,向内存管理进程发送话题名称为topic1,所需内存段为500M的注册共享内存服务请求。
步骤202,根据所需内存段大小向共享内存区申请内存段,并将话题名称与所申请的内存段进行关联,将话题名称保存到配置文件中。
在本实施例中,根据所需内存段大小向共享内存区申请内存段,例如,消息接收节点向共享内存区申请500M的内存段,内存管理进程将话题名称topic1与所申请的500M内存段进行关联,将话题名称topic1保存到配置文件中。
在本实施例的一些可选的实现方式中,将内存段申请成功后返回的内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
步骤203,根据消息发送节点所发送的消息的大小将内存段划分成多个内存块。
在本实施例中,根据消息发送节点所发送的消息的大小将内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小。例如,消息发送节点发送40k的消息,则可将500M的内存段分成10个内存块,每一个内存块50k,也可以是不均分但要保证每一个内存块大于40k,每个内存块除了存放消息之外还要保留部分冗余空间,内存块的大小一般设置成消息大小的1.2倍。
在本实施例的一些可选的实现方式中,每个内存块包括用于指示内存块读写状态的内存块标志量。该内存块标志量存储在内存块中,因此在划分内存块时需要一些冗余空间来存储内存块标志量。
在本实施例的一些可选的实现方式中,所申请的内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。消息发送节点将消息写入内存块后在内存段标志量中记录该内存块的序号,消息接收节点可以根据该内存块的序号去读取相应的数据,这样可以节省遍历查找内存块的时间。
步骤204,当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题。
在本实施例中,用于自动驾驶汽车的ROS中的应用是以节点和话题的形式组成的,其中主节点中维护着系统内所有节点和话题的信息。消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称。需要频繁地同步主节点中的活跃信息,当监控到主节点中的话题信息与自身配置文件中的话题不一致、发送者和接收者进程都停止工作或都不再订阅当前话题时,内存管理者将分配的内存回收。
本申请的上述实施例提供的方法通过将话题与所申请的内存段相关联,能够及时回收不可达内存以避免内存资源浪费。
进一步参考图3,其示出了用于机器人操作系统的共享内存管理方法的又一个实施例的流程300。该用于机器人操作系统的共享内存管理方法的流程300,包括以下步骤:
步骤301,获取消息接收节点发送的注册共享内存服务请求。
步骤302,根据所需内存段大小向共享内存区申请内存段,并将话题名称与所申请的内存段进行关联,将话题名称保存到配置文件中。
步骤303,根据消息发送节点所发送的消息的大小将内存段划分成多个内存块。
步骤301-302与步骤201-202基本相同,因此不再赘述。
步骤304,检测消息发送节点对内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间。
在本实施例中,如果发送节点或接收节点对一个内存块进行了过长时间的读写操作,有可能是因为内存块异常、进程死亡等因素所导致,这块内存块将一直不会被利用且处于永久被占用状态,我们将这样的内存块称为“僵尸内存”。需要进行定时轮询检查以发现“僵尸内存”。
步骤305,在超过预设的阈值时间的情况下,将内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
在本实施例中,当发现“僵尸内存”存在时,将内存块中的内存块标志量设置为可写入状态,允许消息发送节点对其重新写入,从而避免内存过度浪费。
从图3中可以看出,与图2对应的实施例相比,本实施例中的用于机器人操作系统的共享内存管理方法的流程300突出了对“僵尸内存”处理的步骤。由此,本实施例描述的方案可以重新写入内存块,避免内存浪费。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于机器人操作系统的共享内存管理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所述的用于机器人操作系统的共享内存管理装置400包括:注册单元401、申请单元402、分配单元403和回收单元404。其中,注册单元401配置用于获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;申请单元402配置用于根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;分配单元403配置用于根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;回收单元404配置用于当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称。
在本实施例中,用于机器人操作系统的共享内存管理装置400的注册单元401接收共享内存服务请求,其中,该注册共享内存服务请求包括:话题名称和所需内存段大小。
在本实施例中,基于注册单元接收的共享内存服务请求,申请单元402向共享内存区申请共享内存段。
在本实施例中,分配单元403根据消息发送节点所发送的消息的大小将申请单元402申请的共享内存段划分成多个内存块。
在本实施例中,当满足内存回收条件时,回收单元404将所申请的内存段回收。
在本实施例的一些可选的实现方式中,用于机器人操作系统的共享内存管理装置400还包括映射单元,配置用于将内存段申请成功后返回的内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
在本实施例的一些可选的实现方式中,每个内存块包括用于指示内存块读写状态的内存块标志量。
在本实施例的一些可选的实现方式中,用于机器人操作系统的共享内存管理装置400还包括:检测单元,配置用于检测消息发送节点对内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间,在超过预设的阈值时间的情况下,将内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
在本实施例的一些可选的实现方式中,内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。
下面参考图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;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括注册单元、申请单元、分配单元和回收单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,注册单元还可以被描述为“获取消息接收节点发送的注册共享内存服务请求的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种用于机器人操作系统的共享内存管理方法,其特征在于,所述方法包括:
获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;
根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;
根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;
当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称,每个节点是一个独立的进程,消息发送节点和消息接收节点同时使用同一段共享内存区。
2.根据权利要求1所述的用于机器人操作系统的共享内存管理方法,其特征在于,所述根据所述所需内存段大小向共享内存区申请内存段包括:
将内存段申请成功后返回的所述内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
3.根据权利要求1所述的用于机器人操作系统的共享内存管理方法,其特征在于,每个内存块包括用于指示内存块读写状态的内存块标志量。
4.根据权利要求3所述的用于机器人操作系统的共享内存管理方法,其特征在于,所述方法还包括:
检测消息发送节点对内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间;
在超过预设的阈值时间的情况下,将所述内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
5.根据权利要求3所述的用于机器人操作系统的共享内存管理方法,其特征在于,所述内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。
6.一种用于机器人操作系统的共享内存管理装置,其特征在于,所述装置包括:
注册单元,配置用于获取消息接收节点发送的注册共享内存服务请求,所述注册共享内存服务请求包括:话题名称和所需内存段大小;
申请单元,配置用于根据所述所需内存段大小向共享内存区申请内存段,并将所述话题名称与所申请的内存段进行关联,将所述话题名称保存到配置文件中;
分配单元,配置用于根据消息发送节点所发送的消息的大小将所申请的内存段划分成多个内存块,其中,每个内存块的大小大于所发送的消息的大小;
回收单元,配置用于当满足以下条件中的任一项时将所申请的内存段回收:主节点中的话题名称与所述配置文件中的话题名称不一致,消息发送节点和消息接收节点停止工作,消息接收节点不再订阅所述话题名称对应的话题;其中,所述主节点维护着消息发送节点和消息接收节点的话题名称,消息发送节点在发布消息前先通知主节点自身节点名称和发布的话题名称,消息接收节点在收到信息前通知主节点自身的节点名称和订阅的话题名称,每个节点是一个独立的进程,消息发送节点和消息接收节点同时使用同一段共享内存区。
7.根据权利要求6所述的用于机器人操作系统的共享内存管理装置,其特征在于,所述装置还包括:
映射单元,配置用于将内存段申请成功后返回的所述内存段的首地址映射到消息发送节点和消息接收节点各自进程的地址中。
8.根据权利要求6所述的用于机器人操作系统的共享内存管理装置,其特征在于,每个内存块包括用于指示内存块读写状态的内存块标志量。
9.根据权利要求8所述的用于机器人操作系统的共享内存管理装置,其特征在于,所述装置还包括:
检测单元,配置用于检测消息发送节点对内存块的写入操作的时间和消息接收节点对内存块的读取操作的时间是否超过预设的阈值时间,在超过预设的阈值时间的情况下,将所述内存块的内存块标志量设置为可写入以允许消息发送节点对其重新写入。
10.根据权利要求8所述的用于机器人操作系统的共享内存管理装置,其特征在于,所述内存段包括用于记录已经写入消息的内存块的序号的内存段标志量。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610390625.2A CN106021000B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的共享内存管理方法和装置 |
US15/279,138 US9967222B2 (en) | 2016-06-02 | 2016-09-28 | Method and device for managing shared memory in robot operating system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610390625.2A CN106021000B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的共享内存管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021000A CN106021000A (zh) | 2016-10-12 |
CN106021000B true CN106021000B (zh) | 2018-06-01 |
Family
ID=57090552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610390625.2A Active CN106021000B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的共享内存管理方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9967222B2 (zh) |
CN (1) | CN106021000B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10419401B2 (en) * | 2016-01-08 | 2019-09-17 | Capital One Services, Llc | Methods and systems for securing data in the public cloud |
CN106021000B (zh) * | 2016-06-02 | 2018-06-01 | 北京百度网讯科技有限公司 | 用于机器人操作系统的共享内存管理方法和装置 |
CN107798016B (zh) * | 2016-09-06 | 2019-06-07 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据传输方法和装置 |
CN108563221B (zh) * | 2018-03-05 | 2023-10-31 | 华南理工大学 | 一种基于可见光通信和ros的自动驾驶方法及其驾驶系统 |
CN108436909A (zh) * | 2018-03-13 | 2018-08-24 | 南京理工大学 | 一种基于ros的相机和机器人的手眼标定方法 |
CN108566316B (zh) * | 2018-04-18 | 2019-10-22 | 百度在线网络技术(北京)有限公司 | 无人车时延统计方法、装置、设备及计算机可读介质 |
US11132404B2 (en) | 2018-05-30 | 2021-09-28 | Apple Inc. | Techniques for facilitating communications between isolated processes executing within a web browser |
CN108984422B (zh) * | 2018-07-31 | 2023-04-14 | 成都傲梅科技有限公司 | 一种基于ntfs和fat32文件系统簇管理节省内存的方法 |
CN109254857B (zh) * | 2018-08-30 | 2021-03-19 | 百度在线网络技术(北京)有限公司 | 一种共享内存的调整方法、装置、设备和介质 |
US10932105B2 (en) * | 2018-09-26 | 2021-02-23 | Micron Technology, Inc. | Memory pooling between selected memory resources on vehicles or base stations |
CN111124700B (zh) * | 2018-10-31 | 2023-07-18 | 百度在线网络技术(北京)有限公司 | 仿真软件模型的接入方法和装置 |
WO2020139389A1 (en) * | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Shared memory architecture for a vehicle |
US11327489B2 (en) | 2018-12-28 | 2022-05-10 | Beijing Voyager Technology Co., Ltd. | Shared memory architecture for a vehicle |
US10572405B1 (en) | 2018-12-28 | 2020-02-25 | Didi Research America, Llc | Writing messages in a shared memory architecture for a vehicle |
CN113767376A (zh) * | 2018-12-28 | 2021-12-07 | 北京航迹科技有限公司 | 用于在车辆部件之间传送信息的消息缓存器 |
US10785170B2 (en) | 2018-12-28 | 2020-09-22 | Beijing Voyager Technology Co., Ltd. | Reading messages in a shared memory architecture for a vehicle |
US10747597B2 (en) * | 2018-12-28 | 2020-08-18 | Beijing Voyager Technology Co., Ltd. | Message buffer for communicating information between vehicle components |
CN109766199B (zh) * | 2018-12-29 | 2024-01-30 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN112785432B (zh) * | 2021-01-22 | 2022-02-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的设备控制方法、装置、设备和存储介质 |
CN114253733B (zh) * | 2021-12-24 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 一种内存管理方法、装置、计算机设备和存储介质 |
CN114610506B (zh) * | 2022-03-09 | 2023-03-24 | 奥特酷智能科技(南京)有限公司 | 基于分离式数据分发服务的域内共享内存传输架构及机制 |
EP4290822A1 (en) | 2022-06-10 | 2023-12-13 | Sorin Mihai Grigorescu | Method and ai operating system for robotics and complex automation |
CN115242461B (zh) * | 2022-06-30 | 2023-08-25 | 中国人民解放军63891部队 | 一种机器人操作系统ros安全测试系统及方法 |
CN115297144B (zh) * | 2022-07-29 | 2024-03-08 | 中汽创智科技有限公司 | 节点数据交互方法和装置 |
CN116302617B (zh) * | 2023-05-12 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 共享内存的方法、通信方法、嵌入式系统以及电子设备 |
CN116401081B (zh) * | 2023-06-09 | 2023-09-01 | 中汽智联技术有限公司 | 数据共享方法 |
CN116954952B (zh) * | 2023-09-18 | 2024-01-09 | 之江实验室 | 一种机器人的自适应混合通信方法、装置、介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1378143A (zh) * | 2001-03-30 | 2002-11-06 | 深圳市中兴通讯股份有限公司 | 一种实现快速数据传递的方法 |
CN1787588A (zh) * | 2005-12-01 | 2006-06-14 | 大唐软件技术有限责任公司 | 多进程消息处理方法以及多进程话单处理的方法 |
CN102662775A (zh) * | 2012-03-29 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种进程通信方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08212086A (ja) * | 1994-09-30 | 1996-08-20 | Microsoft Corp | オフィスマシンのオペレーティングシステム及び方法 |
US6314501B1 (en) * | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
JP2002016650A (ja) * | 2000-04-17 | 2002-01-18 | Matsushita Electric Ind Co Ltd | 情報伝送サービス提供方法 |
US8863091B2 (en) * | 2007-10-19 | 2014-10-14 | Oracle International Corporation | Unified tracing service |
CN101470632B (zh) * | 2007-12-24 | 2014-10-08 | 华为软件技术有限公司 | 共享内存管理方法及装置 |
WO2014138446A1 (en) * | 2013-03-06 | 2014-09-12 | Hospira,Inc. | Medical device communication method |
CN106021000B (zh) * | 2016-06-02 | 2018-06-01 | 北京百度网讯科技有限公司 | 用于机器人操作系统的共享内存管理方法和装置 |
-
2016
- 2016-06-02 CN CN201610390625.2A patent/CN106021000B/zh active Active
- 2016-09-28 US US15/279,138 patent/US9967222B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1378143A (zh) * | 2001-03-30 | 2002-11-06 | 深圳市中兴通讯股份有限公司 | 一种实现快速数据传递的方法 |
CN1787588A (zh) * | 2005-12-01 | 2006-06-14 | 大唐软件技术有限责任公司 | 多进程消息处理方法以及多进程话单处理的方法 |
CN102662775A (zh) * | 2012-03-29 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种进程通信方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US9967222B2 (en) | 2018-05-08 |
CN106021000A (zh) | 2016-10-12 |
US20170353418A1 (en) | 2017-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021000B (zh) | 用于机器人操作系统的共享内存管理方法和装置 | |
CN106131698A (zh) | 一种信息显示方法、装置及电子设备 | |
CN105978997A (zh) | 数据传输方法和系统 | |
CN102611745B (zh) | 文件在线迁移方法、装置和系统 | |
CN110278264B (zh) | 一种基于区块链的跨链通信的方法、装置及交易系统 | |
CN109284180B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN106126374A (zh) | 数据写入方法、数据读取方法及装置 | |
CN108237994A (zh) | 日志信息处理方法、日志信息处理单元及微控制单元mcu | |
CN106055417A (zh) | 用于机器人操作系统的消息传输方法和装置 | |
CN105912425A (zh) | 快照映像建立、回滚方法以及装置 | |
CN108256800A (zh) | 一种数据处理方法及油罐车运行轨迹系统 | |
CN108667903B (zh) | 数据发送方法、装置和存储介质 | |
CN107947950A (zh) | 一种硬件组播出接口表项的下发方法和np线卡板 | |
CN110457114A (zh) | 应用集群部署方法及装置 | |
CN107797872A (zh) | 用于传输信息的方法和装置 | |
CN106570029A (zh) | 分布式关系型数据库的数据处理方法及系统 | |
CN104956346B (zh) | 控制由于分布式计算系统的计算节点中的故障而导致的错误传播 | |
CN112131196A (zh) | 一种分布式日志处理方法、装置、终端设备及存储介质 | |
CN106708445A (zh) | 链路选择方法及装置 | |
CN102136957A (zh) | 一种标签交换路径监控的实现方法、装置和系统 | |
CN107086960A (zh) | 一种报文传输方法和装置 | |
CN105868053A (zh) | 一种基于数据块备份数据的方法与设备 | |
CN104657082A (zh) | 电脑装置及其存储器管理方法 | |
KR20210102404A (ko) | 조정 가능한 수의 트랜잭션 블록 및 복수의 중간 블록을 포함하는 블록을 가진 블록체인의 생성 | |
CN109039782A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |