CN106168916A - 数据传输方法和系统 - Google Patents

数据传输方法和系统 Download PDF

Info

Publication number
CN106168916A
CN106168916A CN201610473408.XA CN201610473408A CN106168916A CN 106168916 A CN106168916 A CN 106168916A CN 201610473408 A CN201610473408 A CN 201610473408A CN 106168916 A CN106168916 A CN 106168916A
Authority
CN
China
Prior art keywords
data
shared drive
drive block
data receiver
index
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.)
Granted
Application number
CN201610473408.XA
Other languages
English (en)
Other versions
CN106168916B (zh
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 CN201610473408.XA priority Critical patent/CN106168916B/zh
Priority to US15/281,261 priority patent/US10423542B2/en
Publication of CN106168916A publication Critical patent/CN106168916A/zh
Application granted granted Critical
Publication of CN106168916B publication Critical patent/CN106168916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • 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/1052Security improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Traffic Control Systems (AREA)

Abstract

本申请公开了数据传输方法和系统。该方法的一具体实施方式包括:数据接收方获取用于在数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引;判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。实现了当数据接收进程处理数据的频率低于数据发送进程发送数据的频率时,数据接收进程直接读取最新的数据,丢弃未及时处理的旧数据,同时并不影响其他处理数据较快的数据接收进程。从而满足诸如自动驾驶汽车控制系统中对进程处理数据的实时性的要求极高的需求,提升系统的安全性和稳定性。

Description

数据传输方法和系统
技术领域
本申请涉及计算机领域,具体涉及数据传输领域,尤其涉及数据传输方法和系统。
背景技术
在系统(例如自动驾驶汽车控制系统)运行过程中,确保系统中多个进程之间保持高效、安全的通信是确保系统稳定性、安全性的重中之重。目前,通常采用的多进程传输数据的方式为:数据接收进程按顺序从共享内存段中读取数据,在数据接收进程处理数据的频率低于数据发送进程发送数据的频率时,遵循最慢读取数据原则。数据发送进程则以读取数据最慢的接收程序节点速度为基准,向共享内存段中写入数据。
然而,当采用上述方式传输数据时,一方面,造成数据发送进程阻塞,大量新的数据无法及时写入到共享内存段中。另一方面,导致数据接收进程仅可以对旧数据进行处理,在诸如自动驾驶汽车控制系统中需要通过数据接收进程对数据的处理而做出行车决策时,导致自动驾驶汽车控制系统做出过时和错误的行车决策,无法满足诸如自动驾驶汽车控制系统对实时性要求极高的需求。
发明内容
本申请提供了数据传输方法和系统,用于解决上述背景技术部分存在的技术问题。
第一方面,本申请提供了数据传输方法,该方法包括:数据接收方获取用于在数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引,最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址;判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
第二方面,本申请提供了数据传输系统,该数据传输系统包括:数据接收方、数据发送方;其中,数据接收方用于获取用于在数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引,最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址;判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
本申请提供的数据传输方法和系统,通过数据接收方获取用于在数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引,最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址;判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。实现了当数据接收进程处理数据的频率低于数据发送进程发送数据的频率时,数据接收进程直接读取最新的数据,丢弃未及时处理的旧数据,同时并不影响其他处理数据较快的数据接收进程。从而满足诸如自动驾驶汽车控制系统中对进程处理数据的实时性的要求极高的需求,提升数据传输系统的安全性和稳定性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了可以应用于本申请的数据传输方法或系统的示例性系统架构;
图2示出了根据本申请的数据传输方法的一个实施例的流程图;
图3示出了根据本申请的数据传输方法的一个示例性原理图;
图4示出了根据本申请的数据传输系统的一个实施例的结构示意图;
图5示出了适于用来实现本申请实施例的数据传输系统的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用于本申请的数据传输方法或系统的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括:数据发送方101、多个数据接收方102、共享内存段103。数据发送方101、数据接收方102利用共享内存段103传输数据。数据发送方101、数据接收方102可以为运行于同一系统中的进程。以自动驾驶汽车控制系统为例,数据发送方101可以用于采集数据,例如数据发送方为传感器处理程序。数据接收方102可以用于处理数据,例如数据接收方为决策和控制程序。
请参考图2,其示出了根据本申请的数据传输方法的一个实施例的流程200。该方法包括以下步骤:
步骤201,数据接收方获取用于数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引。
在实施例中,最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址。
在本实施例中,数据接收方和数据发送方之间可以通过共享内存段传输数据。以数据发送方与数据接收方为自动驾驶汽车控制系统中的两个进程为例,其中一个进程为数据发送进程,用于通过摄像头采集自动驾驶汽车当前行驶在的道路上的路况图像。另外一个进程为数据接收进程,用于对路况图像进行分析识别障碍物。数据发送进程需要提供采集到的路况图像,数据接收进程需要接收数据发送进程采集到的路况图像进行分析识别障碍物。可以将数据发送进程与数据接收进程之间的待传输数据的类型即路况图像称之为话题名称。数据发送方可以创建话题名称共享内存段。用于数据发送方和数据接收方之间的数据传输。
数据发送方可以将待传输数据写入共享内存段,数据接收方可以从内存数据段中读取出由数据发送方写入到共享内存段中的待传输数据。共享内存段可以以共享内存块为单位,数据发送方与数据接收方可以以内存数据块为单位进行待传输数据的写入和读取。每一个共享内存块对应一个索引,可以通过共享内存块的索引查找出相应的共享内存块,进行数据的写入和读取。
在本实施例的一些可选的实现方式中,数据发送方为数据发送进程,数据接收方为数据接收进程。
在本实施例中,数据发送方可以为数据发送进程,数据接收方可以为数据接收进程。在本实施例中,多个数据发送进程与多个数据接收进程之间可以通过同一共享内存段传输数据。多个数据发送进程与多个数据接收进程之间可以通过共享内存块的索引查找出索引对应的共享内存块,在查找出的索引对应的共享内存块中进行数据的写入和读取。
在本实施例中,利用共享内段进行数据传输的数据发送方与数据接收方可以为多个。多个数据发送方和数据接收方可以对应一个话题名称。多个数据发送方可以将待传输数据写入话题名称对应的共享内存段,多个数据接收方可以从话题名称对应的共享内存段读取待传输数据。
在本实施例的一些可选的实现方式中,共享内存段包括:通用标志位变量、通用标志位锁变量,通用标志位变量用于存储最新共享内存块索引。
在本实施例中,可以在共享内存段中存储通用标志位变量,通用标志位变量可以用于存储最新共享内存块索引。当数据发送进程与数据接收进程需要修改通用标志位变量的数值时,需要首先获取通用标志位锁变量。然后,修改通用标志位变量的数值。
在本实施例的一些可选的实现方式中,还包括:数据发送进程获取通用标志位锁变量;确定内存数据段中用于存储待写入的数据的共享内存块的索引;将待写入的数据写入索引对应的共享内存块;当将待写入的数据写入索引对应的共享内存块成功时,获取通用标志位锁变量,将通用标志位变量的数值更新为存储待写入的数据的共享内存块的索引。
在本实施例中,在数据发送进程向共享内存段写入数据时,数据发送进程首先获取通用标志位锁变量。然后,数据发送进程确定共享内存段中用于存储待写入的数据的共享内存块的索引。数据发送进程将数据写入确定出的共享内存段中用于存储待写入的数据的共享内存块中。当将待写入的数据写入索引对应的共享内存块成功时,获取通用标志位变量,将通用标志位变量的数值更新为用于存储待写入的数据的共享内存块的索引。
在本实施例的一些可选的实现方式中,数据接收方获取共享内存段的最新共享内存块索引包括:数据接收进程获取通用标志位锁变量;读取通用标志位变量,以获取共享内存段的最新共享内存块索引。
在本实施例中,在数据接收进程需要从共享内存段中读取数据时,需要首先获取通用标志位锁变量。数据接收进程获取通用标志位锁变量之后,可以读取通用标志位变量,以获取共享内存段的最新共享内存块索引。
步骤202,判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致。
在本实施例中,在通过步骤201获取用于数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引即最新写入的数据所在的共享内存段中的共享内存块的索引之后,可以判断由数据发送方最新写入的数据所在的共享内存段中的共享内存块的索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致。
以数据发送方为数据发送进程,数据接收方为数据接收进程为例,多个数据发送进程与多个数据接收进程之间可以通过同一共享内存段传输数据。最新写入的数据可以由数据发送进程中任意一个进程写入到共享内存段中。当多个数据接收进程中任意一个数据接收进程从共享内存段中读取数据时,可以判断最新写入的数据所在的共享内存段中的共享内存块的索引与该数据接收进程上一次读取的数据对应的共享内存块索引是否一致。
步骤203,根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
在本实施例中,在通过步骤202判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致之后,可以根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
在本实施例的一些可选的实现方式中,根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据包括:当判断结果为最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引一致时,不读取最新共享内存块索引对应的共享内存块中的数据;当判断结果为最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引不一致时,读取最新共享内存块索引对应的共享内存块中的数据。
以数据发送方为数据发送进程,数据接收方为数据接收进程为例,多个数据发送进程与多个数据接收进程之间可以通过同一共享内存段传输数据。在多个数据接收进程中任意一个数据接收进程从共享内存段中读取数据时,当该数据接收进程判断出最新写入的数据所在的共享内存段中的共享内存块的索引与数据接收进程上一次读取的数据对应的共享内存块索引一致时,则可以确定该数据接收进程已获取共享内存块中最新的数据,则不从最新共享内存块索引中读取数据。当该数据接收进程判断出最新写入的数据所在的共享内存段中的共享内存块的索引与数据接收进程上一次读取的数据对应的共享内存块索引不一致时,则可以确定读取最新共享内存块索引对应的共享内存块中的数据。
以数据发送方与数据接收方为自动驾驶系统中的进程为例,数据发送进程可以用于通过摄像头采集自动驾驶汽车当前行驶在的道路上的路况图像,数据接收进程可以用于对路况图像进行分析识别障碍物。数据发送进程和数据接收进程之间的话题名称可以为传输的数据的类型即路况图像。利用共享内段进行数据传输的数据发送方与数据接收方可以为多个。多个数据发送方和数据接收方可以对应一个话题名称。多个数据发送方可以将待传输数据写入话题名称对应的共享内存段,多个数据接收方可以从话题名称对应的共享内存段读取待传输数据。
当数据接收进程处理数据的频率低于数据发送进程发送数据的频率时,数据接收进程可以直接读取最新的数据即最新的路况图像,丢弃未及时处理的旧数据即旧的路况图像,使得该数据接收进程依然可以根据最新的路况图像来识别障碍物。同时并不影响其他处理数据较快的数据接收进程路况图像对障碍物进行识别。从而满足自动驾驶汽车控制系统中对进程处理数据的实时性的要求极高的需求,数据接收进程获取足够量的数据进行分析,实时而有效地生成行车决策,提升自动驾驶汽车控制系统的安全性和稳定性。
请参考图3,其示出了根据本申请的数据传输方法的一个示例性原理图。
在图3中,示出了发送程序节点、共享内存段、多个接收程序节点即接收程序节点1、接收程序节点2、接收程序节点3。发送程序节点可以为数据发送进程,接收程序节点可以为数据接收进程。
发送程序节点可以发布一个话题名称,多个接收程序节点均可以订阅该话题名称。发送程序节点1与多个接收程序节点之间可以通过话题名称对应的共享内存段进行数据传输。
发送程序节点与多个接收程序节点利用话题对应的共享内存段写入或读取待传输数据时,可以以共享内存段中的共享内存块为单位进行写入或读取。存储在共享内存块中的数据可以称之为消息。
在该话题名称对应的共享内存段中,可以存储通用标志符,通用标志符用于发送程序节点按序写入数据以及接收程序节点按序读取数据。通用标志符可以包含通用标志位变量和通用标志位锁变量。其中,标志位变量用于标识当前由发送程序节点写入数据的最新共享内存块索引。订阅该话题名称的所有接收程序节点可以通过读取该标志位变量来决定下一个可被读取的共享内存块。通用标志位锁变量为一个互斥型变量。由于同一话题名称下的发送程序节点和接收程序节点可以为多个,通用标志位锁变量用于确保同一时刻仅有一个发送程序节点或接收程序节点修改或读取通用标志位变量。
下面说明发送程序节点向共享内存段写入数据的过程:
当发送程序节点需要将消息写入共享内存段中时,可以首先获取通用标志位锁变量后读取当前通用标志位变量数值,遍历计算出共享内存段中下一个可写入数据的共享内存块,即当前状态下一个未被写入数据或者读取数据的共享内存块。发送程序节点可以获取该共享内存块的排他锁,同时,记录目前有一个发送程序节点准备写入数据,将消息写入到该共享内存块。发送程序节点如果写入消息成功,可以再次拿到通用标志位锁变量后修改通用标志位变量。发送程序节点如果数据写入失败,则可以丢弃该消息,返回继续发送下一个消息。
下面说明多个接收程序节点从共享内存段读取数据的过程:
接收程序节点获取通用标志位锁变量后,可以读取当前通用标志位变量数值,根据通用标志位变量数值,查找出下一个可以读取数据的共享内存块。然后,可以检测该共享内存块的索引和上次读取的共享内存块索引是否一致。如果该共享内存块的索引和上次读取的共享内存块索引一致,说明接收程序节点读取数据的频率大于发送程序节点写入数据的频率,则不再读取该共享内存块对应的消息,可以直接发送一个条件信号量等待下一次新消息写入。如果该共享内存块的索引和上次读取的共享内存块索引不一致,则说明接收程序节点读取数据的频率不大于发送程序节点写入数据的频率,接收程序节点可以直接忽略从上次读取到本次读取之间的消息,直接读取该共享内存块对应的最新消息。接收程序节点此次读取消息无论成功还是失败,均可以返回开始读取下一个数据。
在本实施例中,发送程序节点可以不断地将数据写入共享内存段中,当接收程序节点处理数据的频率低于发送程序节点发送数据的频率的时,接收程序节点直接读取最新的数据,丢弃未及时处理的旧数据。一方面,避免了发送程序节点因考虑处理数据频率低的进程而造成阻塞的问题,提升数据传输系统的运行效率。另一方面,使得最新的数据可以及时地写入共享内存段中,接收程序节点可以对最新的数据进行处理,从而满足诸如自动驾驶汽车控制系统中对进程处理数据的实时性的要求极高的需求。
请参考图4,作为对上述各图所示方法的实现,本申请提供了一种数据传输系统的一个实施例,该实施例与图2所示的方法实施例相对应。
如图4所示,本实施例的数据传输系统400包括:数据接收方401、数据发送方402。其中,数据接收方401用于获取用于数据发送方402和数据接收方401传输数据的共享内存段的最新共享内存块索引,最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址;判断最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
在本实施例的一些可选的实现方式中,数据发送方为数据发送进程,数据接收方为数据接收进程。
在本实施例的一些可选的实现方式中,共享内存段包括:通用标志位变量、通用标志位锁变量,通用标志位变量用于存储最新共享内存块索引。
在本实施例的一些可选的实现方式中,数据接收进程用于:获取通用标志位锁变量;读取通用标志位变量,以获取共享内存段的最新共享内存块索引。
在本实施例的一些可选的实现方式中,数据发送进程用于:获取通用标志位锁变量;确定共享内存段中用于存储待写入的数据的共享内存块的索引;将待写入的数据写入索引对应的共享内存块;当将待写入的数据写入索引对应的共享内存块成功时,获取通用标志位锁变量;将通用标志位变量的数值更新为共享内存块的索引。
在本实施例的一些可选的实现方式中,数据接收进程用于:当判断结果为最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引一致时,不读取最新共享内存块索引对应的共享内存块中的数据;当判断结果为最新共享内存块索引与数据接收方上一次读取的数据对应的共享内存块索引不一致时,读取最新共享内存块索引对应的共享内存块中的数据。
图5示出了适于用来实现本申请实施例的数据传输系统的计算机系统的结构示意图。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有系统500操作所需的各种程序和数据。CPU501、ROM 502以及RAM503通过总线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.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述数据发送进程获取通用标志位锁变量;
确定共享内存段中用于存储待写入的数据的共享内存块的索引;
将待写入的数据写入所述索引对应的共享内存块;
当将待写入的数据写入所述索引对应的共享内存块成功时,获取通用标志位锁变量;
将通用标志位变量的数值更新为所述共享内存块的索引。
6.根据权利要求5所述的方法,其特征在于,根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据包括:
当判断结果为最新共享内存块索引与所述数据接收方上一次读取的数据对应的共享内存块索引一致时,不读取最新共享内存块索引对应的共享内存块中的数据;
当判断结果为最新共享内存块索引与所述数据接收方上一次读取的数据对应的共享内存块索引不一致时,读取最新共享内存块索引对应的共享内存块中的数据。
7.一种数据传输系统,其特征在于,所述数据传输系统包括:数据接收方、数据发送方;
其中,数据接收方用于获取用于数据发送方和数据接收方传输数据的共享内存段的最新共享内存块索引,所述最新共享内存块索引用于指示由数据发送方最新写入的数据所在的共享内存段中的共享内存块的地址;判断所述最新共享内存块索引与所述数据接收方上一次读取的数据对应的共享内存块索引是否一致;根据判断结果,确定是否读取最新共享内存块索引对应的共享内存块中的数据。
8.根据权利要求7所述的数据传输系统,其特征在于,数据发送方为数据发送进程,数据接收方为数据接收进程。
9.根据权利要求8所述的数据传输系统,其特征在于,所述共享内存段包括:通用标志位变量、通用标志位锁变量,所述通用标志位变量用于存储所述最新共享内存块索引。
10.根据权利要求9所述的数据传输系统,其特征在于,所述数据接收进程用于:获取通用标志位锁变量;读取所述通用标志位变量,以获取共享内存段的最新共享内存块索引。
11.根据权利要求10所述的数据传输系统,其特征在于,所述数据发送进程用于:获取通用标志位锁变量;确定共享内存段中用于存储待写入的数据的共享内存块的索引;将待写入的数据写入所述索引对应的共享内存块;当将待写入的数据写入所述索引对应的共享内存块成功时,获取通用标志位锁变量;将通用标志位变量的数值更新为所述共享内存块的索引。
12.根据权利要求11所述的数据传输系统,其特征在于,所述数据接收进程用于:当判断结果为最新共享内存块索引与所述数据接收方上一次读取的数据对应的共享内存块索引一致时,不读取最新共享内存块索引对应的共享内存块中的数据;当判断结果为最新共享内存块索引与所述数据接收方上一次读取的数据对应的共享内存块索引不一致时,读取最新共享内存块索引对应的共享内存块中的数据。
CN201610473408.XA 2016-06-24 2016-06-24 数据传输方法和系统 Active CN106168916B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610473408.XA CN106168916B (zh) 2016-06-24 2016-06-24 数据传输方法和系统
US15/281,261 US10423542B2 (en) 2016-06-24 2016-09-30 Data transmission method and system for transmitting data between processes using shared memory block indexes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610473408.XA CN106168916B (zh) 2016-06-24 2016-06-24 数据传输方法和系统

Publications (2)

Publication Number Publication Date
CN106168916A true CN106168916A (zh) 2016-11-30
CN106168916B CN106168916B (zh) 2018-06-26

Family

ID=58064802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610473408.XA Active CN106168916B (zh) 2016-06-24 2016-06-24 数据传输方法和系统

Country Status (2)

Country Link
US (1) US10423542B2 (zh)
CN (1) CN106168916B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109218365A (zh) * 2017-07-04 2019-01-15 百度在线网络技术(北京)有限公司 数据传输方法和系统
CN110399235A (zh) * 2019-07-16 2019-11-01 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
US10884830B1 (en) 2019-07-16 2021-01-05 Advanced New Technologies Co., Ltd. Method and apparatus for multithreaded data transmission in a tee system
US11042642B2 (en) 2019-07-16 2021-06-22 Advanced New Technologies Co., Ltd. Method and apparatus for data transmission in a TEE system
WO2021249106A1 (zh) * 2020-06-11 2021-12-16 中兴通讯股份有限公司 一种内存操作控制方法、设备及存储介质
CN114327946A (zh) * 2021-12-24 2022-04-12 北京百度网讯科技有限公司 共享内存访问控制方法、装置、电子设备及自动驾驶车辆
WO2022267676A1 (zh) * 2021-06-23 2022-12-29 北京车和家信息技术有限公司 共享内存的数据处理方法、装置、设备和介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042424B1 (en) * 2018-04-24 2021-06-22 F5 Networks, Inc. Pipelined request processing using shared memory
CN113453276B (zh) * 2021-05-18 2024-01-16 翱捷科技股份有限公司 一种提高lte终端上下行内存利用率的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法
EP2474919A1 (en) * 2009-09-02 2012-07-11 China Unionpay Co., Ltd. System and method for data replication between heterogeneous databases
CN104346227A (zh) * 2013-07-23 2015-02-11 比亚迪股份有限公司 用于can总线的数据分发方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070194A (en) * 1997-12-17 2000-05-30 Advanced Micro Devices, Inc. Using an index and count mechanism to coordinate access to a shared resource by interactive devices
US6665777B2 (en) * 2000-07-26 2003-12-16 Tns Holdings, Inc. Method, apparatus, network, and kit for multiple block sequential memory management
JP4561800B2 (ja) * 2007-09-25 2010-10-13 沖電気工業株式会社 データ同期システム及び方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2474919A1 (en) * 2009-09-02 2012-07-11 China Unionpay Co., Ltd. System and method for data replication between heterogeneous databases
CN101901250A (zh) * 2010-06-08 2010-12-01 中兴通讯股份有限公司 一种内存数据库及其数据处理方法
CN104346227A (zh) * 2013-07-23 2015-02-11 比亚迪股份有限公司 用于can总线的数据分发方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109218365A (zh) * 2017-07-04 2019-01-15 百度在线网络技术(北京)有限公司 数据传输方法和系统
CN109218365B (zh) * 2017-07-04 2021-12-10 百度在线网络技术(北京)有限公司 数据传输方法和系统
CN110399235A (zh) * 2019-07-16 2019-11-01 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
CN110399235B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置
US10884830B1 (en) 2019-07-16 2021-01-05 Advanced New Technologies Co., Ltd. Method and apparatus for multithreaded data transmission in a tee system
US10896075B1 (en) 2019-07-16 2021-01-19 Advanced New Technologies Co., Ltd. Method and apparatus for multithreaded data transmission in a TEE system
US10943006B2 (en) 2019-07-16 2021-03-09 Advanced New Technologies Co., Ltd. Method and apparatus for multithreaded data transmission in a TEE system
US11042642B2 (en) 2019-07-16 2021-06-22 Advanced New Technologies Co., Ltd. Method and apparatus for data transmission in a TEE system
WO2021249106A1 (zh) * 2020-06-11 2021-12-16 中兴通讯股份有限公司 一种内存操作控制方法、设备及存储介质
WO2022267676A1 (zh) * 2021-06-23 2022-12-29 北京车和家信息技术有限公司 共享内存的数据处理方法、装置、设备和介质
CN114327946A (zh) * 2021-12-24 2022-04-12 北京百度网讯科技有限公司 共享内存访问控制方法、装置、电子设备及自动驾驶车辆

Also Published As

Publication number Publication date
US10423542B2 (en) 2019-09-24
CN106168916B (zh) 2018-06-26
US20170371810A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
CN106168916A (zh) 数据传输方法和系统
CN105978997A (zh) 数据传输方法和系统
CN106021000A (zh) 用于机器人操作系统的共享内存管理方法和装置
CN106781669A (zh) 一种车位推荐方法以及装置
CN105224658B (zh) 一种大数据的实时查询方法和系统
CN112885099B (zh) 用于确定车辆轨迹关键点的方法、装置及设备
CN109214258A (zh) 失驾人员违规驾驶的检测方法及装置
DE19846256B4 (de) Datenwiederherstellungssystem und entsprechendes Verfahren sowie computerlesbarer Datenträger
CN107748882A (zh) 一种车道线检测方法及装置
DE112008000795T5 (de) In einem Fahrzeug verbaute Weiterleitungs-Verbindungseinheit
CN111737379A (zh) 道路采集任务的生成、装置、电子设备及可读存储介质
CN114610475A (zh) 一种智能资源编排模型的训练方法
CN105939364A (zh) 一种智能的消息推送方法和系统
CN110704620B (zh) 一种基于知识图谱的识别相同实体的方法及装置
CN108803658A (zh) 基于无人机的巡检系统
CN113743434A (zh) 一种目标检测网络的训练方法、图像增广方法及装置
CN115002196B (zh) 一种数据处理方法、装置、车端采集设备
CN104348712B (zh) 一种垃圾邮件过滤方法及装置
CN106407470A (zh) 指纹共享方法、终端和服务器
CN115422178A (zh) 一种车上数据清理方法、装置、电子设备及存储介质
CN107231284A (zh) 一种消息的发送方法和终端设备
CN112291249B (zh) 一种安全策略处理方法、装置、介质和设备
CN112362071B (zh) 多目的地路线规划方法、装置及存储介质
CN115049151A (zh) 导航路线推荐方法、装置、设备及存储介质
CN106385322A (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