CN111316244A - 多进程间的通信方法和系统 - Google Patents

多进程间的通信方法和系统 Download PDF

Info

Publication number
CN111316244A
CN111316244A CN201880069530.8A CN201880069530A CN111316244A CN 111316244 A CN111316244 A CN 111316244A CN 201880069530 A CN201880069530 A CN 201880069530A CN 111316244 A CN111316244 A CN 111316244A
Authority
CN
China
Prior art keywords
memory
memory block
blocks
data
block
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
CN201880069530.8A
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.)
SZ DJI Technology Co Ltd
Original Assignee
SZ DJI 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 SZ DJI Technology Co Ltd filed Critical SZ DJI Technology Co Ltd
Publication of CN111316244A publication Critical patent/CN111316244A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明实施例提供一种多进程间的通信方法和系统,此方法包括:在进程的链接阶段,为多个进程预留同一块虚拟地址空间,同一虚拟地址空间映射到相同的物理内存,并从物理内存中为第一进程分配至少一个第一内存块,第一进程为多个进程中的任一进程;然后将第一进程需要与至少一个第二进程共享的数据存储在第一内存块中,第一进程和至少一个第二进程为多个进程中的进程;向至少一个第二进程分别发送通知消息,以指示数据存储在第一内存块中的地址,以便各第二进程根据该地址获取数据。避免影响到进程运行时的资源,提高了进程运行效率,还实现数据在多进程间的零拷贝传输,提高了进程间的通信效率。

Description

多进程间的通信方法和系统
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种多进程间的通信方法和系统。
背景技术
软件系统(例如:无人驾驶系统、机器人系统等)在工作时,是需要多个进程相互协作运行。多个进程在相互协作运行的过程中,会涉及数据在多进程间传输的情况。以无人驾驶系统为例,无人驾驶系统运行在无人机上,无人机上安装有多个摄像头、雷达等传感器,摄像头采集的图像数据或者雷达采集的传感数据需要无人驾驶系统中的不同进程间进行传输,以便各个不同的进程进行处理。
现有技术中,数据在不同进程间传输的过程为:在进程运行过程中,进程A申请一块共享内存,并将该共享内存通知给进程B,这样进程A与进程B可以共享存储在同一块共享内存中的数据。但是,现有技术中的上述方案是在进程运行时申请共享内存,会影响进程运行效率。
发明内容
本发明实施例提供一种多进程间的通信方法和系统,用于提高进程运行效率。
第一方面,本发明实施例提供一种多进程间的通信方法,包括:
在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到相同的物理内存;
从所述物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;
当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;
向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
第二方面,本发明实施例提供一种多进程间的通信系统,包括:物理内存、存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于当所述程序代码被调用时,以执行:
在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到所述物理内存中相同的物理内存;
从所述同一虚拟地址空间映射到的物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;
当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;
向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行第一方面本发明实施例所述的多进程间的通信方法。
第四方面,本发明实施例提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现第一方面本发明实施例所述的多进程间的通信方法。
本发明实施例提供的多进程间的通信方法和系统,在进程的链接阶段,为多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到相同的物理内存,并从所述物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。由于本实施例在进程的链接阶段为各进程分配内存块,避免了影响到进程运行时的资源,提高了进程运行效率。而且分配的所有内存块属于相同的物理内存并且同一块虚拟地址空间,需要共享同一数据的进程可以通过数据存储在内存块中的地址获取共享的数据,从而实现数据在多进程(例如是3个以上的进程)间的零拷贝传输,提高了进程间的通信效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明的实施例的无人飞行系统的示意性架构图;
图2为本发明一实施例提供的多进程间的通信方法的流程图;
图3为本发明一实施例提供的多进程间的通信系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本发明的实施例提供了多进程间的通信方法和系统。其中多进程间的通信系统可以应用于可移动平台。该可移动平台例如可以是无人机、无人船、无人驾驶车辆、机器人等。
下面以可移动平台平是无人驾驶车辆为例进行说明。图1是根据本发明的实施例的无人驾驶车辆100的示意性架构图。
无人驾驶车辆100可以包括感知系统110、控制系统120和机械系统130。
其中,感知系统110用于测量无人驾驶车辆的状态信息,即无人驾驶车辆100的感知数据,感知数据可以表示无人驾驶车辆100的位置信息和/或状态信息,例如,位置、角度、速度、加速度和角速度等。感知系统110例如可以包括视觉传感器(例如包括多个单目或双目视觉装置)、激光雷达、毫米波雷达、惯性测量单元(Inertial Measurement Unit,IMU)、全球导航卫星系统、陀螺仪、超声传感器、电子罗盘、和气压计等传感器中的至少一种。例如,全球导航卫星系统可以是全球定位系统(Global Positioning System,GPS)。
感知系统110获取到感知数据后,可以将感知数据传输给控制系统120。其中,控制系统120用于根据感知数据做出用于控制无人驾驶车辆100如何行驶的决策,例如:以多少的速度行驶,或者,以多少的刹车加速度刹车,或者,是否变道行驶,或者,左/右转行驶等。控制系统120例如可以包括:计算平台,例如车载超算平台,或者中央处理器、分布式处理单元等具有处理功能器件的至少一种。控制系统120还可以包括车辆上各种数据传输的通信链路。
控制系统120可以根据确定的决策向机械系统130输出一个或多个控制指令。其中,机械系统130用于响应来自控制系统120的一个或多个控制指令对无人驾驶车辆100进行控制,以完成上述决策,例如:机械系统130可以驱动无人驾驶车辆100的车轮转动,从而为无人驾驶车辆100的行驶提供动力,其中,车轮的转动速度可以影响到无人驾驶车辆的速度。其中,机械系统130例如可以包括:机械的车身发动机/电动机、控制的线控系统等等中的至少一种。
应理解,上述对于无人驾驶车辆各组成部分的命名仅是出于标识的目的,并不应理解为对本发明的实施例的限制。
在无人驾驶车辆100上的感知系统,会产生大量的感知数据需要传输处理,而这些数据在不同进程间进行传输可以采用本发明下述各实施例的方案来实现。
图2为本发明一实施例提供的多进程间的通信方法的流程图,如图2所示,本实施例的方法可以包括:
S201、在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到相同的物理内存。
本实施例中,在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,同一块虚拟地址空间例如可以是指虚拟地址是连续的地址空间。并且预留的同一块虚拟地址空间映射到相同的物理内存,该相同的物理内存例如可以是一块物理内存,或者,一块物理内存中的一段物理内存。
S202、从所述物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程。
本实施例中,从上述相同的物理内存中为上述多个进程中的每一个进程分配至少一个内存块。本实施例以多个进程中的任意一个进程为例进行说明,其它各进程类似,该任意一个进程称为第一进程,本实施例可以从该物理内存中为该第一进程分配至少一个第一内存块。
S203、当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程。
本实施例中,该至少一个第一内存块可以用于第一进程与其它进程进行共享数据,其它进程可以称为第二进程,所述第二进程为所述多个进程中除所述第一进程外的任一进程,该第二进程的数量可以为至少一个。
可选地,该数据可以包括以下任一项:所述可移动平台中成像装置采集的数据、所述可移动平台中雷达采集的数据;但本实施例并不限于此。
当第一进程与至少一个第二进程需要共享数据时,将第一进程需要与该至少一个第二进程共享的数据存储在第一内存块中。当第一进程与其它的一个或多个第二进程需要共享另一数据时,将共享的另一数据存储的另一第一内存块中。第一进程可以同时与一些第二进程共享数据,也可以与另一些第二进程共享另一些数据;一些第二进程与另一些第二进程中可以存在相同的第二进程,也可以不存在相同的第二进程。
此处将第一进程共享一数据为例进行说明,共享其它数据类似,此处不再赘述。
S204、向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
本实施例中,将第一进程需要与该至少一个第二进程共享的数据存储在第一内存块中之后,向该至少一个第二进程分别发送通知消息,该通知消息用于指示该共享的数据存储在第一内存块中的地址,相应地,该至少一个第二进程中的各第二进程接收到通知消息后,根据该共享的数据存储在第一内存块中的地址获取到该共享的数据,然后对数据执行相应的处理。
可选地,数据存储在第一内存块中的地址为数据存储在第一内存块中的虚拟地址,该虚拟地址属于上述同一块虚拟地址空间。
本实施例提供的多进程间的通信方法,在进程的链接阶段,为多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到相同的物理内存,并从所述物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。由于本实施例在进程的链接阶段为各进程分配内存块,避免了影响到进程运行时的资源,提高了进程运行效率。而且分配的所有内存块属于相同的物理内存并且同一块虚拟地址空间,需要共享同一数据的进程可以通过数据存储在内存块中的地址获取共享的数据,从而实现数据在多进程(例如是3个以上的进程)间的零拷贝传输,提高了进程间的通信效率。
在一些实施例中,在所述至少一个第二进程都从所述第一内存块中获取数据之后,还将所述数据从所述第一内存块中删除。在上述需要与第一进程共享该数据的所有第二进程均从第一内存块中获取数据之后,本实施例还将数据从第一内存块中删除,使得第一内存块从占用状态变更为空闲状态,以尽可能地保证为第一进程分配的第一内存块中具有足够的处于空闲状态的第一内存块,保证第一进程需要与其它进程共享数据时,数据可以及时存储至第一内存块中。
在一些实施例中,在第一进程与至少一个第二进程需要共享数据时,还可以确定该至少一个第二进程中第二进程的个数,例如第二进程的个数为N,N为大于等于1的整数。在向该N个第二进程发送通知消息后,每个第二进程从该第一内存块中获取数据时,累计计数数据获取次数,需要说明的是,在没有第二进程从第一内存块中获取数据时,该数据获取次数的初始化为0,每个第二进程从第一内存块中获取数据,将数据获取次数加1。当累计计数的数据获取次数等于上述N时,确定该N个第二进程都从所述第一内存块中获取数据。然后根据该N个第二进程都从所述第一内存块中获取数据,将所述数据从所述第一内存块中删除。
在一些实施例中,在执行上述S202之前,还从所述物理内存中划分出多种种类内存块,每种种类内存块的数量为至少一个,不同种的种类内存块的内存空间不同。本实施例中可以先从物理内存中划分出多种种类内存块,例如可以从物理内存中划分出3种种类内存块,一种种类内存块为2KB的内存块,一种种类内存块为4KB的内存块,一种种类内存块为8KB的内存块。可选地,本实施例是在进程初始化时,从所述物理内存中划分出多种种类内存块。可选地,在进程初始化时,还启动管理进程。
相应地,上述S202的一种可能的实现方式为:根据所述第一进程所需内存块的内存空间,从所述多种种类内存块中确定出内存空间与所述第一进程所需内存的内存空间相同的种类内存块;根据确定的种类内存块,为所述第一进程分配至少一个第一内存块。本实施例中,例如第一进程所需内存块的内存空间为4KB,则可以从划分出的多种种类内存块(例如2KB、4KB、8K B三种种类内存块)中确定出4KB的种类内存块,然后根据4KB的种类内存块,为该第一进程分配至少一个4KB的种类内存块。
在一些实施例中,上述从所述物理内存中划分出多种种类内存块的一种可能的实现方式为:根据多个进程中每个进程所需内存块的内存空间,确定需要划分的内存块的种类;根据需要划分的内存块的种类,从所述物理内存中划分出多种种类内存块。例如存在10个进程,进程1-3所需的每块内存块的内存空间为2KB,进程4-6所需的每块内存块的内存空间为4KB,进程7-10所需的每块内存块的内存空间为8KB,则本实施例可以从物理内存中划分出3种种类内存块,然后从物理内存中划分出至少一个2KB的内存块、至少一个4KB的内存块,至少一个8KB的内存块。
可选地,每种种类内存块的数量与相匹配的进程的个数有关,每种种类内存块的内存空间与所述相匹配的进程所需内存的内存空间相同。例如:需要为每个进程分配200个内存块,其中,与2KB的内存块相匹配的进程为进程1-3,即进程的个数为3个,则可以从物理内存中划分出2KB的内存块共600个,甚至可以分配大于600个数量的2KB的内存块。与4KB的内存块相匹配的进程为进程1-3,即进程的个数为3个,则可以从物理内存中划分出4KB的内存块共600个,甚至可以分配大于600个数量的4KB的内存块。与8KB的内存块相匹配的进程为进程7-10,即进程的个数为4个,则可以从物理内存中划分出8KB的内存块共800个,甚至可以分配大于800个数量的8KB的内存块。
在一些实施例中,所述物理内存可以包括:主选物理内存和备选物理内存;相应地,上述从所述物理内存中划分出多种种类内存块的一种可能的实现方式为:从所述主选物理内存中划出所述多种种类内存块。其中,备选物理内存用于在主选物理内存不够时为进程分配内存块,具体方案可以参见下述实施例所述。
在一些实施例中,根据所述第一进程所需内存块的内存空间,确定所述多种种类内存块中是否包括内存空间与所述第一进程所需内存的内存空间相同的种类内存块;例如:多种种类内存块包括:2KB的内存块、4KB的内存块、8KB的内存块,若第一进程所需内存块的内存空间为1M,则确定该多种种类内存块不包括内存空间与第一进程所需内存的内存空间相同的种类内存块,则从备选物理内存中为第一进程分配至少一个第一内存块。若第一进程所需内存块的内存空间为4KB,则确定该多种种类内存块包括内存空间与第一进程所需内存的内存空间相同的种类内存块,则根据内存空间与第一进程所需内存的内存空间相同的种类内存块,为所述第一进程分配至少一个第一内存块,具体实现过程可以参见上述实施例中的相关描述,此处不再赘述。
可选地,上述从备选物理内存中为第一进程分配至少一个第一内存块可以由上述的管理进程为执行。
在一些实施例中,上述根据确定的种类内存块,为所述第一进程分配至少一个第一内存块的一种可能的实现方式为:
若所述确定的种类内存块中未分配给进程的内存块的数量大于第一预设数量,则从所述确定的种类内存块中所述未分配给进程的内存块中为所述第一进程分配至少一个第一内存块;或者,
在所述确定的种类内存块中未分配给进程的内存块的数量小于或等于第一预设数量,但所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量大于第二预设数量,则从所述确定的种类内存块中已分配其它进程的未被占用的内存块中为所述第一进程分配至少一个第一内存块。
其中,该确定的种类内存块为内存空间与第一进程所需内存的内存空间相同的种类内存块。本实施例判断确定的种类内存块中未分配给进程的内存块的数量是否小于第一预设数量。如果确定的种类内存块中未分配给进程的内存块的数量大于等于第一预设数量,从所述确定的种类内存块中所述未分配给进程的内存块中为所述第一进程分配至少一个第一内存块。例如:第一预设数量为200,假设第一进程所需内存的内存空间为4KB,之前从主选物理内存中划分出1000个4KB的内存块,其中600个4KB的内存块已分配给其它进程,剩下400个4KB的内存块还未分配给进程,未分配给进程式的4KB的内存块为400个,大于第一预设数量200,因此本实施例可以从剩下的未分配给进程的400个4KB的内存块中为第一进程分配至少一个内存块。
如果确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,在一种可能的实现方式中,可以从上述的备选内存块中为该第一进程分配至少一个第一内存块;在另一种可能的实现方式中,还判断所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量是否小于第二预设数量,如果该确定的种类内存块中已分配其它进程的未被占用的内存块的数量大于等于第二预设数量,例如:第二预设数量为200,假设第一进程所需内存的内存空间为4KB,该4KB的内存块中已分配其它进程的未被占用的内存块的数量为300个,则本实施例可以从这300个分配其它进程的未被占用的内存块中为第一进程分配至少一个第一内存块。
如果该确定的种类内存块中已分配其它进程的未被占用的内存块的数量小于第二预设数量,则从备选物理内存中为第一进程分配至少一个第一内存块。
可选地,上述为所述第一进程分配至少一个第一内存块是由上述的管理进程执行。
在一些实施例中,在从所述物理内存中为第一进程分配至少一个第一内存块之后,还监测所述第一进程的未被占用的第一内存块的数量;在所述未被占用的第一内存块的数量小于第三预设数量时,从所述物理内存中为所述第一进程再次分配至少一个第一内存块,使得所述第一进程的未被占用的第一内存块的数量大于等于所述第三预设数量。
本实施例中,在通过上述各实施例中的方案为第一进程分配至少一个第一内存块之后,监测第一进程的未被占用的第一内存块的数量,其中,未被占用的第一内存块是指未存储有数据的第一内存块。并判断未被占用的第一内存块的数量是否小于第三预设数量,如果该未被占用的第一内存块的数量小于第三预设数量,例如第三预设数量为50,则从物理内存中为该第一进程再次分配至少一个第一内存块,使得第一进程的未被占用的第一内存块的数量大于等于50,其中,本实施例可以从物理内存的主选物理内存中为第一进程再次分配至少一个第一内存块,也可以从物理内存的备选物理内存中为第一进程再次分配至少一个第一内存块,具体实现方案可以参见上述各实施例的相关描述,此处不再赘述。
可选地,上述监测所述未被占用的第一内存块的数量由上述管理进程执行。
综上所述,本实施例从物理内存的主选物理内存中划分多种种类内存块,并根据多种种类内存块为进程分配至少一个内存块。如果划分多种种类内存块中与进程相匹配的种类内存块未分配给其它进程的内存块足够用于分配给该进程,则从该相匹配的种类内存块未分配给其它进程的内存块中为该进程分配内存块;如果划分多种种类内存块中与进程相匹配的种类内存块未分配给其它进程的内存块不足够用于分配给该进程,但与进程相匹配的种类内存块中已分配给其它进程的未被占用的内存块的数量足够用于分配给该进程,则从与进程相匹配的种类内存块中已分配给其它进程的未被占用的内存块中为该进程分配内存块;否则从物理内存的备选物理内存中为该进程分配内存块。同时还监测该进程的未被占用的内存块的数量,当该数量小于一定数量时,则再次从物理内存的主选物理内存或备选物理内存中为该进程再次分配内存块。因此,可以保证每个进程中未被占用的内存块大于一定数量,保证在进程需要与其它进程共享数据时,数量可以及时保存至该进程的内存块中,提高了进程间的通信效率。
本发明实施例中还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图2及其对应实施例中的多进程间的通信方法的部分或全部步骤。
图3为本发明一实施例提供的多进程间的通信系统的结构示意图,如图3所示,本实施例的多进程间的通信系统300可以包括:物理内存301、存储器302和处理器303。其中,物理内存301、存储器302、处理器303可以通信连接。
所述存储器302,用于存储程序代码。
所述处理器303,用于当所述程序代码被调用时,以执行:
在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到所述物理内存301中相同的物理内存3011;
从所述同一虚拟地址空间映射到的物理内存3011中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;
当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;
向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
在一些实施例中,所述处理器303,还用于:
在所述至少一个第二进程都从所述第一内存块中获取数据之后,将所述数据从所述第一内存块中删除。
在一些实施例中,所述处理器303,还用于:
确定所述至少一个第二进程的个数;
在每个第二进程从所述第一内存块中获取数据时,累计计数数据获取次数;
在所述数据获取次数等于所述个数时,确定所述至少一个第二进程都从所述第一内存块中获取数据。
在一些实施例中,所述处理器303,还用于从所述物理内存3011中为第一进程分配至少一个第一内存块之前,从所述物理内存3011中划分出多种种类内存块,每种种类内存块的数量为至少一个,不同种的种类内存块的内存空间不同;
所述处理器303,在从所述物理内存3011中为第一进程分配至少一个第一内存块时,具体用于:根据所述第一进程所需内存块的内存空间,从所述多种种类内存块中确定出内存空间与所述第一进程所需内存的内存空间相同的种类内存块;根据确定的种类内存块,为所述第一进程分配至少一个第一内存块。
在一些实施例中,所述处理器303在从所述物理内存3011中划分出多种种类内存块时,具体用于:
在进程初始化时,从所述物理内存3011中划分出多种种类内存块。
在一些实施例中,所述处理器303,还用于:在进程初始化时,启动管理进程。
在一些实施例中,所述处理器303,在从所述物理内存3011中划分出多种种类内存块时,具体用于:
根据多个进程中每个进程所需内存块的内存空间,确定需要划分的内存块的种类;
根据需要划分的内存块的种类,从所述物理内存3011中划分出多种种类内存块。
在一些实施例中,每种种类内存块的数量与相匹配的进程的个数有关,每种种类内存块的内存空间与所述相匹配的进程所需内存的内存空间相同。
在一些实施例中,所述物理内存3011包括:主选物理内存3011a和备选物理内存3011b;
所述处理器303在从所述物理内存3011中划分出多种种类内存块时,具体用于:从所述主选物理内存3011a中划出所述多种种类内存块。
在一些实施例中,所述处理器303,还用于:
若从所述多种种类内存块中不包括内存空间与所述第一进程所需内存的内存空间相同的种类内存块,则从所述备选物理内存3011b中为所述第一进程分配至少一个第一内存块。
在一些实施例中,所述处理器303在根据确定的种类内存块,为所述第一进程分配至少一个第一内存块时,具体用于:
若所述确定的种类内存块中未分配给进程的内存块的数量大于等于第一预设数量,则从所述确定的种类内存块中所述未分配给进程的内存块中为所述第一进程分配至少一个第一内存块;或者,
在所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,但所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量大于等于第二预设数量,则从所述确定的种类内存块中已分配其它进程的未被占用的内存块中为所述第一进程分配至少一个第一内存块。
在一些实施例中,所述处理器303,还用于:
若所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,或者,所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量小于或等于第二预设数量,则从所述备选物理内存3011b中为所述第一进程分配至少一个第一内存块。
在一些实施例中,所述至少一个第一内存块由所述管理进程为所述第一进程分配。
在一些实施例中,所述处理器303在从所述物理内存3011中为第一进程分配至少一个第一内存块之后,还用于:
监测所述第一进程的未被占用的第一内存块的数量;
在所述未被占用的第一内存块的数量小于等于第三预设数量时,从所述同一虚拟地址空间映射到的物理内存3011中为所述第一进程再次分配至少一个第一内存块,使得所述第一进程的未被占用的第一内存块的数量大于所述第三预设数量。
在一些实施例中,所述未被占用的第一内存块的数量由所述管理进程监测。
在一些实施例中,所述数据包括以下任一项:所述可移动平台中成像装置采集的数据、所述可移动平台中雷达采集的数据。
在一些实施例中,所述数据存储在第一内存块中的地址为所述数据存储在所述第一内存块中的虚拟地址。
本实施例的多进程间的通信系统,可以用于执行本发明上述各方法实施例中多进程间的通信方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读内存(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (34)

1.一种多进程间的通信方法,其特征在于,包括:
在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到相同的物理内存;
从所述物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;
当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;
向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述至少一个第二进程都从所述第一内存块中获取数据之后,将所述数据从所述第一内存块中删除。
3.根据权利要求2所述的方法,其特征在于,还包括:
确定所述至少一个第二进程的个数;
在每个第二进程从所述第一内存块中获取数据时,累计计数数据获取次数;
在所述数据获取次数等于所述个数时,确定所述至少一个第二进程都从所述第一内存块中获取数据。
4.根据权利要求1所述的方法,其特征在于,所述从所述物理内存中为第一进程分配至少一个第一内存块之前,还包括:
从所述物理内存中划分出多种种类内存块,每种种类内存块的数量为至少一个,不同种的种类内存块的内存空间不同;
所述从所述物理内存中为第一进程分配至少一个第一内存块,包括:
根据所述第一进程所需内存块的内存空间,从所述多种种类内存块中确定出内存空间与所述第一进程所需内存的内存空间相同的种类内存块;
根据确定的种类内存块,为所述第一进程分配至少一个第一内存块。
5.根据权利要求4所述的方法,其特征在于,所述从所述物理内存中划分出多种种类内存块,包括:
在进程初始化时,从所述物理内存中划分出多种种类内存块。
6.根据权利要求4或5所述的方法,其特征在于,还包括:
在进程初始化时,启动管理进程。
7.根据权利要求6所述的方法,其特征在于,从所述物理内存中划分出多种种类内存块,包括:
根据多个进程中每个进程所需内存块的内存空间,确定需要划分的内存块的种类;
根据需要划分的内存块的种类,从所述物理内存中划分出多种种类内存块。
8.根据权利要求7所述的方法,其特征在于,每种种类内存块的数量与相匹配的进程的个数有关,每种种类内存块的内存空间与所述相匹配的进程所需内存的内存空间相同。
9.根据权利要求6所述的方法,其特征在于,所述物理内存包括:主选物理内存和备选物理内存;
从所述物理内存中划分出多种种类内存块,包括:
从所述主选物理内存中划出所述多种种类内存块。
10.根据权利要求9所述的方法,其特征在于,还包括:
若从所述多种种类内存块中不包括内存空间与所述第一进程所需内存的内存空间相同的种类内存块,则从所述备选物理内存中为所述第一进程分配至少一个第一内存块。
11.根据权利要求9所述的方法,其特征在于,所述根据确定的种类内存块,为所述第一进程分配至少一个第一内存块,包括:
若所述确定的种类内存块中未分配给进程的内存块的数量大于等于第一预设数量,则从所述确定的种类内存块中所述未分配给进程的内存块中为所述第一进程分配至少一个第一内存块;或者,
在所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,但所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量大于等于第二预设数量,则从所述确定的种类内存块中已分配其它进程的未被占用的内存块中为所述第一进程分配至少一个第一内存块。
12.根据权利要求11所述的方法,其特征在于,还包括:
若所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,或者,所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量小于或等于第二预设数量,则从所述备选物理内存中为所述第一进程分配至少一个第一内存块。
13.根据权利要求10-12任一项所述的方法,其特征在于,所述至少一个第一内存块由所述管理进程为所述第一进程分配。
14.根据权利要求6-13任一项所述的方法,其特征在于,所述从所述物理内存中为第一进程分配至少一个第一内存块之后,还包括:
监测所述第一进程的未被占用的第一内存块的数量;
在所述未被占用的第一内存块的数量小于等于第三预设数量时,从所述物理内存中为所述第一进程再次分配至少一个第一内存块,使得所述第一进程的未被占用的第一内存块的数量大于所述第三预设数量。
15.根据权利要求14所述的方法,其特征在于,所述未被占用的第一内存块的数量由所述管理进程监测。
16.根据权利要求1-15任一项所述的方法,其特征在于,所述数据包括以下任一项:所述可移动平台中成像装置采集的数据、所述可移动平台中雷达采集的数据。
17.根据权利要求1-16任一项所述的方法,其特征在于,所述数据存储在第一内存块中的地址为所述数据存储在所述第一内存块中的虚拟地址。
18.一种多进程间的通信系统,其特征在于,包括:物理内存、存储器和处理器;
所述存储器,用于存储程序代码;
所述处理器,用于当所述程序代码被调用时,以执行:
在进程的链接阶段,为可移动平台的多个进程预留同一块虚拟地址空间,所述同一虚拟地址空间映射到所述物理内存中相同的物理内存;
从所述同一虚拟地址空间映射到的物理内存中为第一进程分配至少一个第一内存块,所述第一进程为所述多个进程中的任一进程;
当第一进程与至少一个第二进程需要共享数据时,将所述第一进程需要与所述至少一个第二进程共享的数据存储在所述第一内存块中,所述第二进程为所述多个进程中除所述第一进程外的任一进程;
向所述至少一个第二进程分别发送通知消息,所述通知消息用于指示所述数据存储在第一内存块中的地址,以便各所述第二进程根据所述地址从所述第一内存块中获取所述数据。
19.根据权利要求18所述的系统,其特征在于,所述处理器,还用于:
在所述至少一个第二进程都从所述第一内存块中获取数据之后,将所述数据从所述第一内存块中删除。
20.根据权利要求19所述的系统,其特征在于,所述处理器,还用于:
确定所述至少一个第二进程的个数;
在每个第二进程从所述第一内存块中获取数据时,累计计数数据获取次数;
在所述数据获取次数等于所述个数时,确定所述至少一个第二进程都从所述第一内存块中获取数据。
21.根据权利要求18所述的系统,其特征在于,所述处理器,还用于从所述物理内存中为第一进程分配至少一个第一内存块之前,从所述物理内存中划分出多种种类内存块,每种种类内存块的数量为至少一个,不同种的种类内存块的内存空间不同;
所述处理器,在从所述物理内存中为第一进程分配至少一个第一内存块时,具体用于:根据所述第一进程所需内存块的内存空间,从所述多种种类内存块中确定出内存空间与所述第一进程所需内存的内存空间相同的种类内存块;根据确定的种类内存块,为所述第一进程分配至少一个第一内存块。
22.根据权利要求21所述的系统,其特征在于,所述处理器在从所述物理内存中划分出多种种类内存块时,具体用于:
在进程初始化时,从所述物理内存中划分出多种种类内存块。
23.根据权利要求21或22所述的系统,其特征在于,所述处理器,还用于:在进程初始化时,启动管理进程。
24.根据权利要求23所述的系统,其特征在于,所述处理器,在从所述物理内存中划分出多种种类内存块时,具体用于:
根据多个进程中每个进程所需内存块的内存空间,确定需要划分的内存块的种类;
根据需要划分的内存块的种类,从所述物理内存中划分出多种种类内存块。
25.根据权利要求24所述的系统,其特征在于,每种种类内存块的数量与相匹配的进程的个数有关,每种种类内存块的内存空间与所述相匹配的进程所需内存的内存空间相同。
26.根据权利要求23所述的系统,其特征在于,所述物理内存包括:主选物理内存和备选物理内存;
所述处理器在从所述物理内存中划分出多种种类内存块时,具体用于:从所述主选物理内存中划出所述多种种类内存块。
27.根据权利要求26所述的系统,其特征在于,所述处理器,还用于:
若从所述多种种类内存块中不包括内存空间与所述第一进程所需内存的内存空间相同的种类内存块,则从所述备选物理内存中为所述第一进程分配至少一个第一内存块。
28.根据权利要求27所述的系统,其特征在于,所述处理器在根据确定的种类内存块,为所述第一进程分配至少一个第一内存块时,具体用于:
若所述确定的种类内存块中未分配给进程的内存块的数量大于等于第一预设数量,则从所述确定的种类内存块中所述未分配给进程的内存块中为所述第一进程分配至少一个第一内存块;或者,
在所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,但所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量大于等于第二预设数量,则从所述确定的种类内存块中已分配其它进程的未被占用的内存块中为所述第一进程分配至少一个第一内存块。
29.根据权利要求28所述的系统,其特征在于,所述处理器,还用于:
若所述确定的种类内存块中未分配给进程的内存块的数量小于第一预设数量,或者,所述确定的种类内存块中已分配其它进程的未被占用的内存块的数量小于或等于第二预设数量,则从所述备选物理内存中为所述第一进程分配至少一个第一内存块。
30.根据权利要求27-29任一项所述的系统,其特征在于,所述至少一个第一内存块由所述管理进程为所述第一进程分配。
31.根据权利要求23-30任一项所述的系统,其特征在于,所述处理器在从所述物理内存中为第一进程分配至少一个第一内存块之后,还用于:
监测所述第一进程的未被占用的第一内存块的数量;
在所述未被占用的第一内存块的数量小于等于第三预设数量时,从所述同一虚拟地址空间映射到的物理内存中为所述第一进程再次分配至少一个第一内存块,使得所述第一进程的未被占用的第一内存块的数量大于所述第三预设数量。
32.根据权利要求31所述的系统,其特征在于,所述未被占用的第一内存块的数量由所述管理进程监测。
33.根据权利要求18-32任一项所述的系统,其特征在于,所述数据包括以下任一项:所述可移动平台中成像装置采集的数据、所述可移动平台中雷达采集的数据。
34.根据权利要求18-33任一项所述的系统,其特征在于,所述数据存储在第一内存块中的地址为所述数据存储在所述第一内存块中的虚拟地址。
CN201880069530.8A 2018-12-28 2018-12-28 多进程间的通信方法和系统 Pending CN111316244A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/124805 WO2020133197A1 (zh) 2018-12-28 2018-12-28 多进程间的通信方法和系统

Publications (1)

Publication Number Publication Date
CN111316244A true CN111316244A (zh) 2020-06-19

Family

ID=71129491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880069530.8A Pending CN111316244A (zh) 2018-12-28 2018-12-28 多进程间的通信方法和系统

Country Status (2)

Country Link
CN (1) CN111316244A (zh)
WO (1) WO2020133197A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650603A (zh) * 2020-12-28 2021-04-13 北京天融信网络安全技术有限公司 内存管理方法、装置、电子设备及存储介质
CN112769640A (zh) * 2020-12-23 2021-05-07 中移(杭州)信息技术有限公司 进程通信方法、系统、服务器及存储介质
WO2022199560A1 (zh) * 2021-03-24 2022-09-29 华为技术有限公司 一种内存管理的方法及设备
WO2024077999A1 (zh) * 2022-10-12 2024-04-18 华为技术有限公司 集合通信方法及计算集群

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216862A (zh) * 2013-05-29 2014-12-17 华为技术有限公司 一种用户进程与系统服务之间的通信方法、装置
CN104572313A (zh) * 2013-10-22 2015-04-29 华为技术有限公司 一种进程间的通信方法及装置
US20160041923A1 (en) * 2013-04-26 2016-02-11 Huawei Technologies Co., Ltd. Inter-Manycore Communications Method and System
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461706B (zh) * 2014-11-24 2019-03-26 上海华为技术有限公司 一种将共享全局变量共享的方法和多处理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160041923A1 (en) * 2013-04-26 2016-02-11 Huawei Technologies Co., Ltd. Inter-Manycore Communications Method and System
CN104216862A (zh) * 2013-05-29 2014-12-17 华为技术有限公司 一种用户进程与系统服务之间的通信方法、装置
CN104572313A (zh) * 2013-10-22 2015-04-29 华为技术有限公司 一种进程间的通信方法及装置
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769640A (zh) * 2020-12-23 2021-05-07 中移(杭州)信息技术有限公司 进程通信方法、系统、服务器及存储介质
CN112769640B (zh) * 2020-12-23 2022-09-16 中移(杭州)信息技术有限公司 进程通信方法、系统、服务器及存储介质
CN112650603A (zh) * 2020-12-28 2021-04-13 北京天融信网络安全技术有限公司 内存管理方法、装置、电子设备及存储介质
CN112650603B (zh) * 2020-12-28 2024-02-06 北京天融信网络安全技术有限公司 内存管理方法、装置、电子设备及存储介质
WO2022199560A1 (zh) * 2021-03-24 2022-09-29 华为技术有限公司 一种内存管理的方法及设备
WO2024077999A1 (zh) * 2022-10-12 2024-04-18 华为技术有限公司 集合通信方法及计算集群

Also Published As

Publication number Publication date
WO2020133197A1 (zh) 2020-07-02

Similar Documents

Publication Publication Date Title
CN111316244A (zh) 多进程间的通信方法和系统
CN110719314B (zh) 用于管理计算任务的方法和系统
US11044318B2 (en) Efficient communications amongst computing nodes for operating autonomous vehicles
US11095741B2 (en) Value-based transmission in an autonomous vehicle
US20170039084A1 (en) Enhanced advanced driver assistance system (adas) system on chip
US10387204B2 (en) Resource pooling in a virtualized cloud container environment
US10254768B2 (en) Space partitioning for motion planning
CN113085842B (zh) 车辆控制方法、装置及车辆
US10749959B2 (en) Distributed storage management in a spaceborne or airborne environment
US11640268B2 (en) Timed memory access
CN110278714B (zh) 障碍物检测方法、移动平台及计算机可读存储介质
CN112330229B (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
CN112005275B (zh) 使用视频内存池进行点云渲染的系统和方法
CN112802177A (zh) 航测数据的处理方法、装置、电子设备及存储介质
CN114826817A (zh) 一种通信控制方法、电子设备及存储介质
US11474518B2 (en) Event validation using multiple sources
CN113781838A (zh) 用于合并对象信息的车辆、方法、计算机程序和设备
CN113610135B (zh) 一种图像处理方法、装置、计算机设备和存储介质
CN113805845A (zh) 随机数序列生成方法和随机数引擎
EP4296965A1 (en) Real time light-detection and ranging point decimation
US11947469B2 (en) Flexible queue provisioning for partitioned acceleration device
US11845452B2 (en) Electronic control device and parallel processing method
US11909822B2 (en) Streaming algorithm for deficit round robin arbitration
US20240144174A1 (en) Far-edge intensive processing for so-maps
US20240036941A1 (en) Vehicle-mounted computer, computer execution method, and computer program

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200619

WD01 Invention patent application deemed withdrawn after publication