CN114327946A - 共享内存访问控制方法、装置、电子设备及自动驾驶车辆 - Google Patents
共享内存访问控制方法、装置、电子设备及自动驾驶车辆 Download PDFInfo
- Publication number
- CN114327946A CN114327946A CN202111605154.XA CN202111605154A CN114327946A CN 114327946 A CN114327946 A CN 114327946A CN 202111605154 A CN202111605154 A CN 202111605154A CN 114327946 A CN114327946 A CN 114327946A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- shared memory
- block
- area
- 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
Links
Images
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0669—Configuration or reconfiguration with decentralised address assignment
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
-
- 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
- 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
-
- 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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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
-
- 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
-
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/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]
Abstract
本公开提供了一种共享内存访问控制方法、装置、电子设备及自动驾驶车辆,涉及人工智能技术领域,尤其涉及无人驾驶、操作系统技术。该方法包括:创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;通过第一进程对应的待写入数据的数据量,确定至少一个目标块;通过第一进程将待写入数据写入与至少一个目标块对应的目标数据缓冲区,并将至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将目标数据缓冲区的配置信息存储到至少一个目标块对应的块配置对象中。该方法实现了自适应长度的数据写入。
Description
技术领域
本公开涉及人工智能技术领域中的无人驾驶、操作系统技术,尤其涉及一种共享内存访问控制方法、装置、电子设备及自动驾驶车辆。
背景技术
在同一主机中不同模块可能处于不同进程空间,为了加快程序执行效率,提高系统性能,同主机多进程的通信选择共享内存来实现。
在有多个进程需要通过共享内存通信时,通常是预先约定好由其中一个进程先启动并创建一块指定大小的共享内存,在内存初始化完成后,再启动其他进程,由其他进程将共享内存映射至自身的进程空间。之后,该多个进程即可通过共享内存通信,通常是一个进程向共享内存写数据,其他进程查询或读取数据。目前的方案中存在的问题是,共享内存的配置固定,不支持自适应长度的数据写入。
发明内容
本公开提供了一种实现了自适应长度的数据写入的共享内存访问控制方法、装置、电子设备及自动驾驶车辆。
根据本公开的第一方面,提供了一种共享内存访问控制方法,包括:
创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;
通过第一进程对应的待写入数据的数据量,确定至少一个目标块;
通过所述第一进程将所述待写入数据写入与所述至少一个目标块对应的目标数据缓冲区,并将所述至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中。
根据本公开的第二方面,提供了一种共享内存访问控制装置,包括:
创建模块,用于创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;
确定模块,用于通过第一进程对应的待写入数据的数据量,确定至少一个目标块;
写入模块,用于通过所述第一进程将所述待写入数据写入与所述至少一个目标块对应的目标数据缓冲区,并将所述至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行上述第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,所述程序产品包括:计算机程序,所述计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得电子设备执行第一方面所述的方法。
根据本公开的第六方面,提供了一种自动驾驶车辆,包括如第三方面所述的电子设备。
根据本公开的技术方案,实现了向共享内存中写入自适应长度的数据。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例提供的共享内存访问控制方法的流程示意图;
图2是根据本公开实施例提供的共享内存的结构示意图;
图3是根据本公开实施例提供的共享内存的头部对象的结构示意图;
图4是根据本公开实施例提供的进程访问共享内存的示意图;
图5是根据本公开实施例提供的共享内存访问控制装置的结构示意图;
图6是用来实现本公开实施例的共享内存访问控制方法的电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开实施例的方案中,对共享内存的结构进行优化,共享内存在逻辑上划分为区域(Region)、块(Block)以及数据缓冲区(Buffer),其中,区域可以包括一个或多个块,每个块与一个数据缓冲区对应,通过区域配置对象来存储区域中包括的块的配置信息,通过块配置对象来存储块对应的数据缓冲区的配置信息,在写入数据时,根据待写入数据的长度确定一个或多个块,并将待写入数据写入该一个或多个块对应的一个或多个数据缓冲区,同时,将该一个或多个数据缓冲区的配置信息写入该一个或多个块对应的块配置对象中,将该一个或多个块的配置信息写入对应区域的区域配置对象中,这样,区域中包括的块的数量是由待写入数据的长度决定的,从而实现了自适应长度的数据写入。
本公开提供一种共享内存访问控制方法、装置、电子设备、存储介质、程序产品及自动驾驶车辆,应用于人工智能技术领域的无人驾驶、操作系统领域,具体可以应用于车载系统的操作系统中,以实现向共享内存中写入自适应长度的数据。
下面,将通过具体的实施例对本公开提供的共享内存访问控制方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是根据本公开实施例提供的一种共享内存访问控制方法的流程示意图。该方法的执行主体为共享内存访问控制装置,该装置可以通过软件和/或硬件的方式实现。如图1所示,该方法包括:
S101、创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区。
本步骤中,创建并初始化共享内存的进程可以是需要通过共享内存通信的多个进程中的任一进程,例如可以由多个进程中第一个启动运行的进程创建并初始化共享内存,其他后启动运行的进程将初始化后的共享内存的配置信息更新到自身进程,而第一个启动运行的进程并不限定是某个特定的进程。
共享内存在逻辑上划分为区域、块以及数据缓冲区,其中,区域可以包括一个或多个块,每个块指向一个数据缓冲区,每个数据缓冲区指向一段连续内存,块是分配共享内存的最小单位。为了实现对区域、块以及数据缓冲区的管理,共享内存的结构中包括了多个区域配置对象、多个块配置对象和多个数据缓冲区。其中,每个区域配置对象用于存储该区域中包括的块的配置信息,例如区域配置对象中包括了该区域对应的块的标识或索引、数据长度或读写状态等;每个块配置对象用于存储该块对应的数据缓冲区的配置信息,例如块配置对象中包括了该块对应的数据缓冲区的地址、数据长度或读写状态等。
S102、通过第一进程对应的待写入数据的数据量,确定至少一个目标块。
第一进程可以是多个进程中的任一进程,第一进程需要向共享内存写入数据时,根据待写入数据的数据量,也就是待写入数据的长度,确定需要的块的数量,也就是需要的数据缓冲区的数量。
示例的,待写入数据的长度为20,每个块指向的数据缓冲区的大小为10,则可以确定需要的块的个数为2,即确定了2个目标块。示例的,待写入数据的长度为25,每个块指向的数据缓冲区的大小为10,则可以确定需要的块的个数为3,即确定了3个目标块。
S103、通过第一进程将待写入数据写入与至少一个目标块对应的目标数据缓冲区,并将至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将目标数据缓冲区的配置信息存储到至少一个目标块对应的块配置对象中。
第一进程将待写入数据写入至少一个目标块指向的至少一个目标数据缓冲区,实现数据的写入,同时,将每个目标数据缓冲区的配置信息存储至对应的目标块的块配置对象中,例如在每个目标块对应的块配置对象中写入该目标块所指向的目标数据缓冲区的有效数据长度;还将目标块的配置信息存储至对应的目标区域的区域配置对象中,例如在区域配置对象中写入该区域包含的至少一个目标块的标识或索引号、有效数据长度等。这样,一个区域中包括的块的数量由待写入数据决定,也就是区域对应的可用内存长度是可变化的,进程不需要按照固定长度写入数据,从而实现自适应长度的数据写入。
本公开实施例的方法中,共享内存中每个区域可以包括一个或多个块,每个块与一个数据缓冲区对应,根据待写入数据的长度确定一个或多个目标块,并将待写入数据写入该一个或多个目标块对应的数据缓冲区,这样,一个区域对应的可用内存长度是根据待写入数据变化的,实现了自适应长度的数据写入。
在上述实施例的基础上,首先对共享内存的结构以及如何创建并初始化共享内存进行说明。
可选的,共享内存的结构参照图2所示,共享内存中包括头部(Header)对象、状态(State)对象、区域配置对象、块配置对象和数据缓冲区,示例的,区域配置对象的数量为M,块配置对象和数据缓冲区的数量均为N。
可选的,头部对象的结构参照图3所示,头部对象中包括初始化标识(Flag)、版本(Version)、校验参数(Check Sum)、状态对象的大小(State Size)、区域配置对象的大小(Region Size)、区域配置对象的数量(Region Num)、块配置对象的大小(Block Size)、块配置对象的数量(Block Num)、数据缓冲区长度(Buffer Len)、保留字段(Reserve)。
可选的,初始化标识用于表示共享内存初始化是否完成,即共享内存的有效性标识;版本表示共享内存的配置版本,用以进行后续兼容性支持;检验参数表示头部对象中部分或全部数据的校验值(例如校验和);状态对象的大小表示状态对象占用的内存大小;区域配置对象的大小表示每个区域配置对象占用的内存大小;区域配置对象的数量即如图2中连续配置的区域配置对象的数量,例如M;块配置对象的大小表示每个块配置对象占用的内存大小;块配置对象的数量即如图2中连续配置的块配置对象的数量,例如N,块配置对象的数量与数据缓冲区的数量一致;数据缓冲区长度表示每个数据缓冲区的长度,为内存分配的最小长度单位;保留字段为扩展保留字段。
可选的,状态对象用于存储共享内存当前的写保护状态、区域索引、块索引、内存更新时间等。其中,区域索引为下次写索引,即下次要写入的区域的标识;块索引为下次写索引,即下次要写入的块的标识。共享内存中每次写入新数据时,区域索引和块索引均会更新。内存更新时间在共享内存被读取或写入时更新。
可选的,区域配置对象用于存储该区域中包括的块的配置信息,例如该区域对应的至少一个块的起始索引、有效数据长度、读写状态等。
可选的,块配置对象用于存储该块对应的数据缓冲区的配置信息,例如该块对应的数据缓冲区的偏移地址、有效数据长度、读写状态等。
参照上述示例的共享内存的结构,对创建并初始化共享内存进行说明如下:通过第一个运行的进程创建共享内存;基于共享内存的首地址创建头部对象;根据第一个运行的进程的参数在头部对象中分别添加区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数,并创建区域配置对象、多个块配置对象和多个数据缓冲区。
第一个运行的进程通过标准系统调用接口(例如shm_open)来创建共享内存,该接口具备进程安全属性,对于传入相同内存名称(身份标识)的多个进程,仅有一个进程能创建共享内存,因此,在第一个运行的进程创建共享内存后,之后启动运行的其他进程再创建共享内存则会创建失败,这样可以避免共享内存创建多份。
第一个运行的进程基于共享内存的首地址创建头部对象,将头部对象中的初始化标识设置为无效状态,并将校验参数设置为无效数据,以表示初始化未完成;然后,第一个运行的进程根据自身的参数设置头部对象中区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数,包括设置版本、状态对象的大小、区域配置对象的大小、区域配置对象的数量、块配置对象的大小、块配置对象的数量和数据缓冲区长度。
之后,第一个运行的进程紧邻头部对象创建状态对象,并初始化状态对象,再按照区域配置对象的数量,紧邻状态对象连续创建对应数量的区域配置对象,并初始化区域配置对象,再按照块配置对象的数量,紧邻最后一个区域配置对象连续创建对应数量的块配置对象,并初始化块配置对象,每个块指向一个数据缓冲区,每个数据缓冲区指向一段连续内存。通过这样的设置,使得共享内存支持变长数据读取。
最后,第一个运行的进程确定头部对象的校验值,并将校验值写入到校验参数中,并将初始化标识更新为有效状态。例如第一个运行的进程计算头部对象中部分数据的校验和,将校验和写入到校验参数中。从而,完成了共享内存的初始化。
对于第一个运行的进程之外的其他进程,也就是在第一个运行的进程之后启动运行的其他进程,其需要在第一个运行的进程创建并初始化共享内存之后,需要根据初始化后的共享内存更新自身的参数,以实现共享内存的读写。
可选的,通过其他进程对初始化标识和校验参数进行校验;若初始化标识为有效状态、且校验参数和其他进程的校验值一致,则根据区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数更新其他进程的配置参数;之后,在其他进程向共享内存写入数据时,根据配置参数和其他进程对应的待写入数据的数据量,确定至少一个目标块。
其他进程运行后,尝试创建共享内存,由于第一个运行的进程已经创建共享内存,因此其他进程创建共享内存失败,则其他进程进入延时等待,再根据第一个运行的进程创建的共享内存中的初始化标识和校验参数来判断共享内存初始化是否完成,其中,对于校验参数,其他进程计算头部对象的校验值,将计算得到的校验值与共享内存中的校验参数进行比较,若一致,则校验成功。在确定共享内存初始化完成之后,其他进程读取头部对象中的状态对象的大小,若同该其他进程自身的参数中的状态对象的大小不一致,则报错退出,若一致,则继续读取头部对象中的区域配置对象的大小,若同该其他进程自身的参数中的区域配置对象的大小不一致,则报错退出,若一致,则继续读取头部对象中的块配置对象的大小,若同该其他进程的块配置对象的大小不一致,则报错退出,若一致,则读取头部对象中的区域配置对象的数量、块配置对象的数量和数据缓冲区长度,并将其更新为该其他进程的配置参数,从而实现参数自适应配置。通过对共享内存的校验以及报错退出,避免共享内存配置异常。
通过上述流程,第一个运行的进程完成共享内存的创建和初始化,其他进程等待初始化完成后,将共享内存的配置信息更新到自身进程以支持自适应配置参数,该过程对于多个进程之间的启动顺序无强制要求。
此外,在多个进程正常启动完成上述过程后,若任一个进程重启,则该重启的进程所执行的过程与前述的其他进程类似,即进程重启后,尝试创建共享内存,由于共享内存已经创建,因此重启的进程创建共享内存失败,重启的进程对已创建的共享内存的初始化标识和校验参数进行校验;并在校验成功后,更新重启的进程的配置参数,之后,在该重启的进程向共享内存写入数据时,根据配置参数和该重启的进程对应的待写入数据的数据量,确定至少一个目标块。可见,通过本公开实施例的方法,在一个进程异常重启后,其他进程无需重启,该重启的进程可自动恢复与其他进程的通信关系。
以下对共享内存的写入过程进行说明。
第一进程根据待写入数据的数据量,确定目标块的第一数量;从状态对象中获取块索引;从块索引开始的第一数量个块确定为至少一个目标块。第一进程将待写入数据写入与至少一个目标块对应的目标数据缓冲区,并将至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将目标数据缓冲区的配置信息存储到至少一个目标块对应的块配置对象中。
示例的,待写入数据的长度为25,每个块指向的数据缓冲区的大小为10,则可以确定目标块的第一数量为3。之后,第一进程将共享内存的状态对象中的写保护状态置为有效(每次只允许一个进程写入数据),以获得写保护,再从状态对象中读取区域索引,该区域索引对应的区域即为目标区域,也就是待写入的区域,可以理解的是,若区域索引对应的区域正在被读取,则将区域索引下移,直至有可写入的区域,将目标区域的区域配置对象中的写保护状态置为有效(即不允许读),然后从状态对象中读取块索引,从该块索引开始连续分配3个块(若分配到最后一个块索引还不够,则循环回到起始块索引),即确定3个目标块,并将目标块的块配置对象中的写保护状态置为有效(即不允许读),将目标块的起始和结束索引保存到目标区域的区域配置对象中,将待写入数据写入目标块对应的数据缓冲区中。之后,更新块索引和区域索引,即将块索引更新为最后一个目标块之后的一个块的索引,将区域索引更新为目标区域之后的一个区域的索引,并将前述的写保护状态恢复,从而完成数据的写入。由于一个区域可以由一个或多个块组成,那么区域对应的可用内存长度是可变的,可以根据待写入数据的长度确定,从而能够支持变长数据读写。
可选的,在读写共享内存之后,还可以将状态对象中的内存更新时间修改为当前时间,以表示共享内存最近一次被使用的时间。若内存更新时间在预设时间段内未发生变化,则释放共享内存。从而保证了未被使用的共享内存能够及时被清除,以便于该部分共享内存可被重新分配,实现了共享内存的自动清除。
以下对共享内存的读取过程进行说明。
通过第二进程确定共享内存中是否存在待读取数据;若存在,则读取待读取数据。
参照图4,每个进程自身的参数中包括了一个读索引和一个写索引,其中,写索引是从共享内存的状态对象中拷贝的区域索引,表示共享内存内存中下一个待写入的区域,读索引和写索引一致,表示待读取的区域。
判断第二进程的写索引和共享内存的状态对象中的区域索引是否一致;若第二进程的写索引和区域索引不一致,则表示共享内存中有新数据写入,导致区域索引发生了变化,因此需要将第二进程的写索引更新为区域索引;再判断更新后的写索引与第二进程的读索引是否一致;若更新后的写索引与第二进程的读索引不一致,则确定共享内存中存在待读取数据;根据第二进程的读索引,读取待读取数据,并在读取完成后,更新读索引。
示例的,假设第二进程的读索引和写索引均为2,而共享内存的区域索引在写入数据后由2变为3,此时,第二进程的写索引和区域索引不一致,将第二进程的写索引更新为3,以表示共享内存中下一个待写入的是区域3,此时第二进程更新后的写索引3和其读索引2不一致,确定共享内存中区域2存在待读取数据,将区域2的读保护状态置为有效,以表示区域2正在被读取,以防止写入,获取区域2的区域配置对象中的块的起始、结束索引和有效数据长度,将块对应的数据缓冲区的数据拷贝到第二进程,最后将读保护状态恢复,将第二进程的读索引下移,将其更新为3,从而完成数据读取。该方法可以支持多个进程同时从共享内存读取数据,提高数据读取效率。
图5是根据本公开实施例提供的一种共享内存访问控制装置的结构示意图。如图5所示,共享内存访问控制装置500包括:
创建模块501,用于创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;
确定模块502,用于通过第一进程对应的待写入数据的数据量,确定至少一个目标块;
写入模块503,用于通过第一进程将待写入数据写入与至少一个目标块对应的目标数据缓冲区,并将至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将目标数据缓冲区的配置信息存储到至少一个目标块对应的块配置对象中。
在一种实施方式中,创建模块501包括:
第一创建单元,用于通过第一个运行的进程创建共享内存;
第二创建单元,用于基于共享内存的首地址创建头部对象;
第三创建单元,用于根据第一个运行的进程的参数在头部对象中分别添加区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数,并创建区域配置对象、多个块配置对象和多个数据缓冲区。
在一种实施方式中,第一进程为除第一个运行的进程之外的其他进程或重启的进程,头部对象中还包括初始化标识和校验参数;
写入模块503包括:
校验单元,用于通过其他进程对初始化标识和校验参数进行校验;
第一更新单元,用于若初始化标识为有效状态、且校验参数和其他进程的校验值一致,则根据区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数更新其他进程的配置参数;
第一确定单元,用于根据配置参数和其他进程对应的待写入数据的数据量,确定至少一个目标块。
在一种实施方式中,共享内存访问控制装置500还包括:
第一设置单元,用于将初始化标识设置为无效状态,并将校验参数设置为无效数据;
第二设置单元,用于确定头部对象的校验值,并将校验值写入到校验参数中,并将初始化标识更新为有效状态。
在一种实施方式中,初始化后的共享内存中还包括状态对象,状态对象中包括块索引;
确定模块502包括:
第二确定单元,用于根据待写入数据的数据量,确定目标块的第一数量;
获取单元,用于从状态对象中获取块索引;
第三确定单元,用于将从块索引开始的第一数量个块确定为至少一个目标块。
在一种实施方式中,状态对象中还包括区域索引,区域索引对应的区域为目标区域。
在一种实施方式中,共享内存访问控制装置500还包括:
第二更新单元,用于更新块索引和区域索引。
在一种实施方式中,状态对象中还包括内存更新时间;
共享内存访问控制装置500还包括:
第三更新单元,用于将内存更新时间修改为当前时间。
在一种实施方式中,共享内存访问控制装置500还包括:
释放模块,用于若内存更新时间在预设时间段内未发生变化,则释放共享内存。
在一种实施方式中,共享内存访问控制装置500还包括:
第四确定单元,用于通过第二进程确定共享内存中是否存在待读取数据;
读取单元,用于若存在,则读取待读取数据。
在一种实施方式中,第四确定单元:
第一判断单元,用于判断第二进程的写索引和区域索引是否一致;
第四更新单元,用于若第二进程的写索引和区域索引不一致,则将写索引更新为区域索引;
第二判断单元,用于判断更新后的写索引与第二进程的读索引是否一致;
第五确定单元,用于若更新后的写索引与第二进程的读索引不一致,则确定共享内存中存在待读取数据。
在一种实施方式中,读取单元用于:
根据第二进程的读索引,读取待读取数据,并在读取完成后,更新读索引。
本公开实施例的装置可用于执行上述方法实施例中的共享内存访问控制方法,其实现原理和技术效果类似,此处不再赘述。
根据本公开的实施例,本公开还提供了一种电子设备和存储有计算机指令的非瞬时计算机可读存储介质。
根据本公开的实施例,本公开还提供了一种计算机程序产品,程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
图6是用来实现本公开实施例的共享内存访问控制方法的电子设备的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,电子设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
电子设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如共享内存访问控制方法。例如,在一些实施例中,共享内存访问控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的共享内存访问控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行共享内存访问控制方法。
根据本公开的实施例,本公开还提供了一种自动驾驶车辆,包括前述实施例中的电子设备。示例的,该电子设备为无人驾驶车辆中的控制设备。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (28)
1.一种共享内存访问控制方法,包括:
创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;
通过第一进程对应的待写入数据的数据量,确定至少一个目标块;
通过所述第一进程将所述待写入数据写入与所述至少一个目标块对应的目标数据缓冲区,并将所述至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中。
2.根据权利要求1所述的方法,其中,所述创建并初始化共享内存,包括:
通过第一个运行的进程创建所述共享内存;
基于所述共享内存的首地址创建头部对象;
根据所述第一个运行的进程的参数在所述头部对象中分别添加区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数,并创建所述区域配置对象、所述多个块配置对象和所述多个数据缓冲区。
3.根据权利要求2所述的方法,所述第一进程为除所述第一个运行的进程之外的其他进程或重启的进程,所述头部对象中还包括初始化标识和校验参数;
所述通过第一进程对应的待写入数据的数据量,确定至少一个目标块,包括:
通过所述其他进程对所述初始化标识和所述校验参数进行校验;
若所述初始化标识为有效状态、且所述校验参数和所述其他进程的校验值一致,则根据所述区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数更新所述其他进程的配置参数;
根据所述配置参数和其他进程对应的待写入数据的数据量,确定所述至少一个目标块。
4.根据权利要求3所述的方法,在所述头部对象中分别添加区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数之前,还包括:
将所述初始化标识设置为无效状态,并将所述校验参数设置为无效数据;
所述创建所述区域配置对象、所述多个块配置对象和所述多个数据缓冲区之后,还包括:
确定所述头部对象的校验值,并将所述校验值写入到所述校验参数中,并将所述初始化标识更新为有效状态。
5.根据权利要求1-4任一项所述的方法,其中,所述初始化后的共享内存中还包括状态对象,所述状态对象中包括块索引;
所述通过第一进程对应的待写入数据的数据量,确定至少一个目标块,包括:
根据所述待写入数据的数据量,确定所述目标块的第一数量;
从所述状态对象中获取所述块索引;
将从所述块索引开始的第一数量个块确定为所述至少一个目标块。
6.根据权利要求5所述的方法,其中,所述状态对象中还包括区域索引,所述区域索引对应的区域为所述目标区域。
7.根据权利要求6所述的方法,所述将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中之后,还包括:
更新所述块索引和所述区域索引。
8.根据权利要求5-7任一项所述的方法,其中,所述状态对象中还包括内存更新时间;
所述将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中之后,还包括:
将所述内存更新时间修改为当前时间。
9.根据权利要求8所述的方法,还包括:
若所述内存更新时间在预设时间段内未发生变化,则释放所述共享内存。
10.根据权利要求6所述的方法,还包括:
通过第二进程确定所述共享内存中是否存在待读取数据;
若存在,则读取所述待读取数据。
11.根据权利要求10所述的方法,其中,所述通过第二进程确定所述共享内存中是否存在待读取数据,包括:
判断所述第二进程的写索引和所述区域索引是否一致;
若所述第二进程的写索引和所述区域索引不一致,则将所述写索引更新为所述区域索引;
判断更新后的写索引与所述第二进程的读索引是否一致;
若所述更新后的写索引与所述第二进程的读索引不一致,则确定所述共享内存中存在所述待读取数据。
12.根据权利要求11所述的方法,其中,所述读取所述待读取数据,包括:
根据所述第二进程的读索引,读取所述待读取数据,并在读取完成后,更新所述读索引。
13.一种共享内存访问控制装置,包括:
创建模块,用于创建并初始化共享内存,初始化后的共享内存包括多个区域配置对象、多个块配置对象和多个数据缓冲区;
确定模块,用于通过第一进程对应的待写入数据的数据量,确定至少一个目标块;
写入模块,用于通过所述第一进程将所述待写入数据写入与所述至少一个目标块对应的目标数据缓冲区,并将所述至少一个目标块的配置信息存储至目标区域对应的区域配置对象中,并将所述目标数据缓冲区的配置信息存储到所述至少一个目标块对应的块配置对象中。
14.根据权利要求13所述的装置,其中,所述创建模块包括:
第一创建单元,用于通过第一个运行的进程创建所述共享内存;
第二创建单元,用于基于所述共享内存的首地址创建头部对象;
第三创建单元,用于根据所述第一个运行的进程的参数在所述头部对象中分别添加区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数,并创建所述区域配置对象、所述多个块配置对象和所述多个数据缓冲区。
15.根据权利要求14所述的装置,所述第一进程为除所述第一个运行的进程之外的其他进程或重启的进程,所述头部对象中还包括初始化标识和校验参数;
所述写入模块包括:
校验单元,用于通过所述其他进程对所述初始化标识和所述校验参数进行校验;
第一更新单元,用于若所述初始化标识为有效状态、且所述校验参数和所述其他进程的校验值一致,则根据所述区域配置对象的属性参数、多个块配置对象的属性参数和多个数据缓冲区的属性参数更新所述其他进程的配置参数;
第一确定单元,用于根据所述配置参数和其他进程对应的待写入数据的数据量,确定所述至少一个目标块。
16.根据权利要求15所述的装置,还包括:
第一设置单元,用于将所述初始化标识设置为无效状态,并将所述校验参数设置为无效数据;
第二设置单元,用于确定所述头部对象的校验值,并将所述校验值写入到所述校验参数中,并将所述初始化标识更新为有效状态。
17.根据权利要求13-16任一项所述的装置,其中,所述初始化后的共享内存中还包括状态对象,所述状态对象中包括块索引;
所述确定模块包括:
第二确定单元,用于根据所述待写入数据的数据量,确定所述目标块的第一数量;
获取单元,用于从所述状态对象中获取所述块索引;
第三确定单元,用于将从所述块索引开始的第一数量个块确定为所述至少一个目标块。
18.根据权利要求17所述的装置,其中,所述状态对象中还包括区域索引,所述区域索引对应的区域为所述目标区域。
19.根据权利要求18所述的装置,还包括:
第二更新单元,用于更新所述块索引和所述区域索引。
20.根据权利要求17-19任一项所述的装置,其中,所述状态对象中还包括内存更新时间;
所述装置还包括:
第三更新单元,用于将所述内存更新时间修改为当前时间。
21.根据权利要求20所述的装置,还包括:
释放模块,用于若所述内存更新时间在预设时间段内未发生变化,则释放所述共享内存。
22.根据权利要求18所述的装置,还包括:
第四确定单元,用于通过第二进程确定所述共享内存中是否存在待读取数据;
读取单元,用于若存在,则读取所述待读取数据。
23.根据权利要求22所述的装置,其中,所述第四确定单元:
第一判断单元,用于判断所述第二进程的写索引和所述区域索引是否一致;
第四更新单元,用于若所述第二进程的写索引和所述区域索引不一致,则将所述写索引更新为所述区域索引;
第二判断单元,用于判断更新后的写索引与所述第二进程的读索引是否一致;
第五确定单元,用于若所述更新后的写索引与所述第二进程的读索引不一致,则确定所述共享内存中存在所述待读取数据。
24.根据权利要求23所述的装置,其中,所述读取单元用于:
根据所述第二进程的读索引,读取所述待读取数据,并在读取完成后,更新所述读索引。
25.一种电子设备,包括:
至少一个处理器;以及与至少一个处理器通信连接的存储器;
其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行权利要求1-12中任一项所述的方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-12中任一项所述的方法。
27.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-12中任一项所述的方法。
28.一种自动驾驶车辆,包括如权利要求25所述的电子设备。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111605154.XA CN114327946A (zh) | 2021-12-24 | 2021-12-24 | 共享内存访问控制方法、装置、电子设备及自动驾驶车辆 |
EP22214119.4A EP4170497A1 (en) | 2021-12-24 | 2022-12-16 | Access control method and apparatus for shared memory, electronic device and autonomous vehicle |
US18/068,179 US20230120580A1 (en) | 2021-12-24 | 2022-12-19 | Access control method and apparatus for shared memory, electronic device and autonomous vehicle |
JP2022203473A JP2023036774A (ja) | 2021-12-24 | 2022-12-20 | 共有メモリのアクセス制御方法、共有メモリのアクセス制御装置、電子機器および自動運転車両 |
KR1020220179074A KR20230004394A (ko) | 2021-12-24 | 2022-12-20 | 공유 메모리 액세스 제어 방법, 장치, 전자 기기 및 자율 주행 차량 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111605154.XA CN114327946A (zh) | 2021-12-24 | 2021-12-24 | 共享内存访问控制方法、装置、电子设备及自动驾驶车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327946A true CN114327946A (zh) | 2022-04-12 |
Family
ID=81013769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111605154.XA Pending CN114327946A (zh) | 2021-12-24 | 2021-12-24 | 共享内存访问控制方法、装置、电子设备及自动驾驶车辆 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230120580A1 (zh) |
EP (1) | EP4170497A1 (zh) |
JP (1) | JP2023036774A (zh) |
KR (1) | KR20230004394A (zh) |
CN (1) | CN114327946A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115334159A (zh) * | 2022-08-11 | 2022-11-11 | 北京百度网讯科技有限公司 | 处理流式数据的方法、装置、设备和介质 |
WO2022267676A1 (zh) * | 2021-06-23 | 2022-12-29 | 北京车和家信息技术有限公司 | 共享内存的数据处理方法、装置、设备和介质 |
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
CN117520250A (zh) * | 2024-01-04 | 2024-02-06 | 珠海格力电器股份有限公司 | 双核设备的数据处理方法和双核设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632765A (zh) * | 2004-12-31 | 2005-06-29 | 大唐微电子技术有限公司 | 一种闪存文件系统管理方法 |
US20100070695A1 (en) * | 2008-09-15 | 2010-03-18 | Texas Instruments Incorporated | Power-efficient memory management for embedded systems |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN103425538A (zh) * | 2012-05-24 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 进程通讯方法及系统 |
US20140344530A1 (en) * | 2013-03-15 | 2014-11-20 | Sunil Sayyaparaju | Method and system of implementing a database index in shared memory |
CN106168916A (zh) * | 2016-06-24 | 2016-11-30 | 北京百度网讯科技有限公司 | 数据传输方法和系统 |
CN107632945A (zh) * | 2016-07-18 | 2018-01-26 | 大唐移动通信设备有限公司 | 一种共享内存的数据读写方法和装置 |
CN111182041A (zh) * | 2019-12-19 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络服务器共享缓存区的方法和设备 |
CN111382123A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | 文件存储方法、装置、设备及存储介质 |
CN113032162A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种基于共享内存备份机制的多进程通讯方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652885A (en) * | 1993-05-25 | 1997-07-29 | Storage Technology Corporation | Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control |
US11023299B2 (en) * | 2018-09-28 | 2021-06-01 | Arista Networks, Inc. | System and method of a shared memory allocator |
CN109933438B (zh) * | 2019-01-31 | 2022-12-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 高速共享内存数据收发系统 |
CN109739670B (zh) * | 2019-02-01 | 2021-04-23 | 中国人民解放军国防科技大学 | 节点内进程通信方法、装置、计算机设备和存储介质 |
CN110704214B (zh) * | 2019-10-14 | 2021-05-25 | 北京京东乾石科技有限公司 | 进程间通信方法和装置 |
CN111427707B (zh) * | 2020-03-25 | 2024-02-06 | 北京左江科技股份有限公司 | 一种基于共享内存池的ipc通信方法 |
-
2021
- 2021-12-24 CN CN202111605154.XA patent/CN114327946A/zh active Pending
-
2022
- 2022-12-16 EP EP22214119.4A patent/EP4170497A1/en not_active Withdrawn
- 2022-12-19 US US18/068,179 patent/US20230120580A1/en active Pending
- 2022-12-20 JP JP2022203473A patent/JP2023036774A/ja active Pending
- 2022-12-20 KR KR1020220179074A patent/KR20230004394A/ko unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632765A (zh) * | 2004-12-31 | 2005-06-29 | 大唐微电子技术有限公司 | 一种闪存文件系统管理方法 |
US20100070695A1 (en) * | 2008-09-15 | 2010-03-18 | Texas Instruments Incorporated | Power-efficient memory management for embedded systems |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN103425538A (zh) * | 2012-05-24 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 进程通讯方法及系统 |
US20140344530A1 (en) * | 2013-03-15 | 2014-11-20 | Sunil Sayyaparaju | Method and system of implementing a database index in shared memory |
CN106168916A (zh) * | 2016-06-24 | 2016-11-30 | 北京百度网讯科技有限公司 | 数据传输方法和系统 |
CN107632945A (zh) * | 2016-07-18 | 2018-01-26 | 大唐移动通信设备有限公司 | 一种共享内存的数据读写方法和装置 |
CN111382123A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | 文件存储方法、装置、设备及存储介质 |
CN111182041A (zh) * | 2019-12-19 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络服务器共享缓存区的方法和设备 |
CN113032162A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种基于共享内存备份机制的多进程通讯方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022267676A1 (zh) * | 2021-06-23 | 2022-12-29 | 北京车和家信息技术有限公司 | 共享内存的数据处理方法、装置、设备和介质 |
CN115334159A (zh) * | 2022-08-11 | 2022-11-11 | 北京百度网讯科技有限公司 | 处理流式数据的方法、装置、设备和介质 |
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN116107517B (zh) * | 2023-04-11 | 2023-06-09 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
CN116401081B (zh) * | 2023-06-09 | 2023-09-01 | 中汽智联技术有限公司 | 数据共享方法 |
CN117520250A (zh) * | 2024-01-04 | 2024-02-06 | 珠海格力电器股份有限公司 | 双核设备的数据处理方法和双核设备 |
Also Published As
Publication number | Publication date |
---|---|
US20230120580A1 (en) | 2023-04-20 |
JP2023036774A (ja) | 2023-03-14 |
EP4170497A1 (en) | 2023-04-26 |
KR20230004394A (ko) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114327946A (zh) | 共享内存访问控制方法、装置、电子设备及自动驾驶车辆 | |
CN110059037B (zh) | 用于管理输入/输出的方法、设备和计算机程序产品 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
CN111562969B (zh) | 一种区块链的智能合约实现方法、装置、设备和介质 | |
CN113961510B (zh) | 一种文件处理方法、装置、设备及存储介质 | |
CN111066005B (zh) | 响应于经由总线接口上的i/o操作产生的高速缓存命中对元数据道的异步更新 | |
CN113641677A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
US11237761B2 (en) | Management of multiple physical function nonvolatile memory devices | |
CN112905314A (zh) | 异步处理方法、装置、电子设备、存储介质、及路侧设备 | |
CN109213429B (zh) | 存储管理方法和设备 | |
US11403026B2 (en) | Method, device and computer program product for managing storage system | |
CN113590329A (zh) | 资源处理方法及装置 | |
CN113220650A (zh) | 数据存储方法、装置、设备、存储介质及程序 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
US11099740B2 (en) | Method, apparatus and computer program product for managing storage device | |
CN112565356A (zh) | 数据存储方法、装置以及电子设备 | |
US11379130B2 (en) | Predicting and preparing volume configurations | |
CN110659312B (zh) | 数据处理的方法、装置、设备和计算机存储介质 | |
US9703601B2 (en) | Assigning levels of pools of resources to a super process having sub-processes | |
CN113253938A (zh) | 数据处理方法、装置、设备、存储介质及计算机程序产品 | |
CN112925796A (zh) | 一种写一致性控制方法、装置、设备及存储介质 | |
CN108121580A (zh) | 应用程序通知服务的实现方法及装置 | |
CN114860350B (zh) | 基于云无盘树状镜像的数据处理的方法及装置 | |
CN109542588B (zh) | 一种用于在云环境下管理虚拟设备的方法和装置 | |
CN115878158A (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 |