CN105589754B - 用于访问共享存储器中的数据的机制和方法 - Google Patents

用于访问共享存储器中的数据的机制和方法 Download PDF

Info

Publication number
CN105589754B
CN105589754B CN201510917065.7A CN201510917065A CN105589754B CN 105589754 B CN105589754 B CN 105589754B CN 201510917065 A CN201510917065 A CN 201510917065A CN 105589754 B CN105589754 B CN 105589754B
Authority
CN
China
Prior art keywords
data
buffers
server
clients
shared memory
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
Application number
CN201510917065.7A
Other languages
English (en)
Other versions
CN105589754A (zh
Inventor
G·R·赛克斯
C·R·德克
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.)
GE Aviation Systems LLC
Original Assignee
GE Aviation Systems LLC
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 GE Aviation Systems LLC filed Critical GE Aviation Systems LLC
Publication of CN105589754A publication Critical patent/CN105589754A/zh
Application granted granted Critical
Publication of CN105589754B publication Critical patent/CN105589754B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明题为用于访问共享存储器中的数据的机制和方法。一种用于由至少一个客户端(40)访问共享存储器(22)中数据的机制和方法,包含所述共享存储器(22)中的数据的分配,存储器(22)配置在多个缓冲器(36),并且由客户端(40)或服务器(50)访问数据,而无需锁定或限制对数据的访问。

Description

用于访问共享存储器中的数据的机制和方法
技术领域
本发明涉及客户端访问共享存储器中的数据的机制和方法。
背景技术
线路可替换单元(LRU)是诸如车辆或航空器的更大单元的模块化组件,并且设计成用来保证它们能够在故障的情况下被交换和/或被替换的规范。航空器的LRU例如可包含完全被包含的系统、传感器、无线电或其他辅助设备以管理和/或操作航空器功能。在航空器环境中,LRU可设计成按照特定的操作、互操作性,和/或诸如由ARINC串联标准所限定的那些的形状因数标准来操作。
多个LRU可由用来访问或交换公共或共享的存储器中的数据的飞行控制计算机或其他计算机系统的数据网络来互连。飞行控制计算机或其他计算机系统可进一步管理和/或操作航空器功能。
发明内容
在一个实施例中,用于由至少一个客户端访问共享存储器中的数据的机制,该机制包含共享存储器中的数据到至少一个主题(topic)的分配,该分配通过预定固定地址是可访问的,该至少一个主题具有多个缓冲器,缓冲器的数量等于访问该至少一个主题的客户端的数量再针对访问该至少一个主题的每个服务器加二,每个客户端和每个服务器具有主动访问指针,并且主动访问指针导向器用来基于来自客户端或服务器的事务请求来将主动访问指针指引到缓冲器。一个缓冲器常常包含共享存储器中的最新数据,并且至少一个缓冲器常常可用来访问共享存储器中的数据。另外,由主动访问指针导向器仅使用机器汇编语言事务(machine assembly language transaction)在缓冲器之间分配主动访问指针,无需复制在操作系统等级的数据。
在另一个实施例中,用于由至少一个客户端访问共享存储器中的数据,该方法包含将共享存储器中的数据分配给至少一个主题;指派单个预定地址以访问每一个至少一个主题;分配用于每一个至少一个主题的多个缓冲器,其等于访问该至少一个主题的客户端的数量再针对访问该至少一个主题的每个服务器加二;并且通过将每个相应的客户端或服务器的主动访问指针分配给缓冲器来响应来自客户端或服务器的至少一个的事务请求。该数据经由缓冲器来访问,无需复制在操作系统等级的数据。
技术方案1:一种用于由至少一个客户端访问共享存储器中的数据的机制,包括:
共享存储器中的数据到至少一个主题中的分配,该分配通过预定固定地址是可访问的;
该至少一个主题具有多个缓冲器,缓冲器的数量等于访问该至少一个主题的客户端的数量对于访问该至少一个主题的每个服务器加二;
每个客户端和每个服务器具有主动访问指针;以及
主动访问指针,用来基于来自客户端或服务器的事务请求将主动访问指针指引到缓冲器;
其中一个缓冲器常常包含共享存储器中的最新数据,并且至少一个缓冲器常常可用来访问共享存储器中的数据;以及
其中由主动访问指针导向器仅使用的机器汇编语言事务在缓冲器之间分配该主动访问指针,无需复制在操作系统等级的数据。
技术方案2:技术方案1的所述机制,其中该机制是飞行管理系统。
技术方案3:技术方案1的所述机制,其中多个主题排列在共享存储器中。
技术方案4:技术方案1的所述机制,其中该至少一个主题和缓冲器的数量在共享存储器的初始化期间来预定。
技术方案5:技术方案1的所述机制,其中该至少一个主题或缓冲器的数量中的至少一个依据访问该至少一个主题的客户端和服务器的集体的数量在运行时间期间来限定。
技术方案6:技术方案1的所述机制,其中客户端或服务器的至少一个访问与所指引的主动访问指针缓冲器相关联的数据。
技术方案7:技术方案6的所述机制,其中响应于完整的事务请求,该主动访问指针导向器将用于新的事务的主动访问指针指引到包括最新数据的不同的缓冲器。
技术方案8:一种用于由至少一个客户端访问共享存储器中的数据的访问,该方法包括:
将该共享存储器中的数据分配到至少一个主题中;
指派单个预定地址以访问每个至少一个主题;
分配用于每个至少一个主题的多个缓冲器,等于访问该至少一个主题的客户端的数量再针对访问该至少一个主题的每个服务器加二,以及
通过将用于每个相应的客户端或服务器的主动访问指针分配给缓冲器来响应于来自客户端或服务器的至少一个的事务请求;
其中该数据经由该缓冲器来访问,无需复制在操作系统等级的数据。
技术方案9:技术方案8的所述方法,其中经由该缓冲器访问该数据防止数据锁定。
技术方案10:技术方案8的所述方法,其中将该数据分配到至少一个主题中,指派单个预定地址,以及分配用于每个至少一个主题的多个缓冲器发生在该共享存储器的初始化期间。
技术方案11:如技术方案8所述的方法,其中所述将所述数据分配到至少一个主题中,或所述分配用于每个至少一个主题的多个缓冲器中的至少一个基于访问所述至少一个主题的客户端和服务器的集体的数量发生在运行时间期间。
技术方案12:技术方案8的所述方法,其中响应于事务请求进一步包括将用于每个相应的客户端的该主动访问指针指引到包括该共享存储器中最新数据的缓冲器。
技术方案13:技术方案12的所述方法,进一步包括该客户端或服务器中的至少一个执行在所访问的数据上的事务。
技术方案14:技术方案13所述方法,其中该执行事务包括读取该数据、将新的数据写入该缓冲器或将该缓冲器数据存储到该共享存储器中的至少一个。
技术方案15:技术方案14所述方法,进一步包括响应于完成的事务请求,更新将用于每个相应的客户端或服务器的该主动访问指针指引到包括最新数据的不同的缓冲器。
附图说明
在附图中:
图1是按照本发明的一个实施例、航空器的数据通信网络的示意图。
图2是按照本发明的一个实施例、客户端访问主题的缓冲器的示意图。
图3是按照本发明的一个实施例、用于客户端访问缓冲器中的最新数据的机制的示意图。
图4是按照本发明的一个实施例、用于客户端和服务器对在缓冲器中数据执行读取/写入事务的机制的示意图。
具体实施方式
本发明的所描述的实施例在具有全部在单个系统上操作直接访问公共或共享存储器的航空器的多个传感器、系统、软件组成部分和/或物理组件的航空器的环境中来图示。然而,本发明的实施例可在使用客户端和服务器访问公共或单个共享存储器的任何环境中实现。此外,虽然下面描述了“客户端”和“服务器”,但是将理解,所描述的特定实施例是客户端和服务器二者的非限制示例。另外,虽然描述了“客户端”,但是可包含来自共享存储器的数据的“消耗装置”的任何组件。同样地,虽然描述了“服务器”,但是可包含共享存储器的数据的“产生器”的任何组件。客户端和服务器的附加示例可包含远程或局部离散单元、应用、计算机过程、处理线程(thread)等或其任何组合,其访问共享存储器。例如,多个“客户端”可全部驻留在单个计算机或计算单元,从而访问公共的随机存取存储器(RAM)。
图1示出按照本发明的一个实施例的数据通信系统24的示意性图示。一个或多个线程或计算机过程26,各自包含一个或多个客户端18,可以通信地访问示为共享RAM的共享存储器22。另外,一个或多个线程或计算机过程28可各自包含一个或多个服务器20,也可以访问共享存储器22。在这个意义上,每个过程26、28、客户端18和服务器20可以访问共享存储器22。另外,虽然图示了仅示出相应的客户端18或服务器20的一些过程26、28,但是本发明的实施例可包含其中包含单个过程26、28内的客户端18和/或服务器20的组合的过程26、28。虽然描述了服务器20,但是本发明的实施例可包含任何计算系统、计算系统运行ARINC653操作系统、飞行管理系统、飞行计算机等。
存储器33可包含随机存取存储器(RAM)、闪速存储器或一个或多个不同类型的便携式电子存储器等或这些类型的存储器的任何适合组合。客户端18和/或服务器20可以是可操作地与存储器22耦合,使得客户端18和/或服务器20或在其上的任何计算机程序或过程可访问存储器(例如“共享存储器”22)的至少一部分。
如本文所使用的,“程序”和/或“过程”可包含具有用于控制相应的客户端18、服务器20的至少一个的管理和/或操作或航空器功能的可运行指令的计算机程序的一部分或全部。程序和/或过程可包含计算机程序产品,其可包含用于携带或具有机器可运行指令或在其上存储的数据结构的机器可读媒体。这种机器可读媒体可以是任何可用媒体,其能够通过通用或专用计算机或具有处理器的其他机器来访问。通常,这种计算机程序可包含例行程序、程序、对象、组成部分、数据结构、算法等,其具有执行特定任务或实现特定抽象数据类型的技术效果。机器可运行指令、关联数据结构和程序表示用于运行如本文所公开的信息的交换的程序代码的示例。机器可运行指令可包含例如指令和数据,其引起通用计算机、专用计算机、控制器或专用处理机器执行功能的某个功能或一组功能。
图1中所示的数据通信网络24仅是本发明的一个实施例的示意性表示,并且用来图示多个客户端18和服务器20可位于在航空器的相同的计算系统上。客户端18和服务器20的精确位置与本发明的实施例没有关系。另外,更多或更少客户端18和/或服务器20可包含在本发明的实施例中。
通信网络24可包含系统总线或其他计算系统通信组件来便于在客户端18和服务器20之间的通信的互连。此外,通信网络24的配置和操作可由可用于特定航空器环境的标准或规则的公共集合来限定。
示出存储器22,其进一步包括数据30到至少一个组或“主题”中32的分配,定位于存储器22的预定固定可寻址的存储器位置处或“固定地址”34。如本文所使用的,“主题”可包含为用于航空器的数据存储的特定利用而分配的存储器22的预定子集。例如,单个主题32可包括诸如航空器的空速的数据的单个分配,或它可包括多个相关或不相关的数据元素,例如航途基准点或当前飞行计划。如所示,主题32可以以起源于诸如单链接的列表的固定地址34的连续方式来排列。然而,主题32的附加的组织结构可配置成包含矩阵、每个主题32的可变分配等,全部起源于固定地址34的位置。
过程26、28的每一个和/或相应的客户端18和服务器20预配置成包含共享存储器22的预定固定地址34。在这个意义上,每个过程26、28、客户端18和/或服务器20预配置成识别固定地址34的位置,并且因此一个或多个主题32具有要被访问的数据。如本文所使用的,可考虑每个客户端18和/或每个客户端过程26为用于访问共享存储器22中的数据的“客户端”,并且可考虑每个服务器20和/或每个服务器过程28为用于访问共享存储器22中的数据的“服务器”。
本发明的一个实施例中,共享存储器22中的主题32的数量基于可访问客户端和/或服务器的主题32的已知数量在存储器22的初始化期间来预定。在本发明的另一个实施例中,主题32的数量通过由客户端和/或服务器可访问的主题32的集体数量在运行时间或在其期间来限定。在这个意义上,主题32的数量可以是动态的、如需要时增加和减少,或仅在附加的主题32需要被访问时添加。
现转到图2,每个主题32进一步包括配置成存储如用于特定数据元素所需要的预定量的数据的多个缓冲器36。例如,用于访问航空器的空速的主题32可具有多个缓冲器36,各自配置成存储8字节。在另一个示例中,用于访问访问飞行计划的主题32可具有多个缓冲器36,各自配置成存储一千字节。为了说明的目的,示出具有不同分类状态的多个缓冲器36,其包含占用44、未占用46和包含最新数据48。每个状态将在下面附加详细地解释。
进一步示出每个主题32,其包含控制和/或指引功能元素,例如主动访问指针导向器38。主动访问指针导向器38基于数据事务请求指引对多个缓冲器36的访问,这将在下面进一步解释。本发明的备选的实施例可包含单独或远程的主动访问指针导向器38,例如远离主题32定位的控制器或处理器。
如示意性所示,各自包括主动访问指针42的一个或多个客户端40能够访问是由相应的主动访问指针42识别的具体缓冲器36。另外,各自包括主动访问指针52的一个或多个服务器50能够访问是由相应的主动访问指针52识别的具体缓冲器36。如所图示,第一客户端54和第二客户端56分别与第一缓冲器58和第二缓冲器60相关联。因此,第一和第二缓冲器58、60已识别为占用缓冲器44。示出第三客户端62不关联于主题32,如是服务器50。虽然主动访问指针42、52的每一个分别示为客户端40或服务器50的一部分,本发明的实施例可包含作为主题32和/或缓冲器36一部分的主动访问指针42、52。
本发明的一个实施例中,每个主题32中的缓冲器36的数量以及每个缓冲器36的大小基于能够访问主题32的客户端40和/或服务器50的已知数量在共享存储器22的初始化期间来预定。在本发明的另一个实施例中,每个主题32中的缓冲器36的数量通过客户端和服务器集体数量在运行时间或在其期间来限定,然后访问主题32。在这个意义上,缓冲器36的数量可以是动态的、如需要时增加和减少,或仅在附加的客户端40和/或服务器50正访问主题32时添加。另外,本发明的实施例可包含以与限定主题32类似的类型(例如在共享存储器22的初始化时预定主题32和缓冲器36两者)或以不同类型(例如预定主题32,但是动态地限定缓冲器36)来限定缓冲器36。在所描述的实施例的任一个中,缓冲器36的总量可等于访问主题的客户端40的数量对于访问主题32的每个服务器50加上两个缓冲器36。
现转到图3,描述用于访问共享存储器22的缓冲器36和/或主题32中的数据的机制。第三客户端62通信地与主题32耦合,并且与主题(图示为虚线通信64)的主动访问指针导向器38通信以请求具有数据的事务。主动访问指针导向器38响应第三客户端62,从而识别包含主题32的最新数据48的第三缓冲器66。现在指引到第三缓冲器66的第三客户端62指令其主动访问指针42到第三缓冲器66(图示为第二通信68)。在这个阶段,第三客户端62访问存储在第三缓冲器66的数据(最新数据48),并且执行数据上的预计事务。
主动访问指针导向器38可基于所请求的具体事务将一个或多个客户端40或服务器50的主动访问指针42、52指引到特定缓冲器36。例如,事务可包含读取存储缓冲器36的数据(即“只读”),读取存储在缓冲器36中的数据并且基于所读取的数据的处理或计算向缓冲器36写入新的数据,基于由客户端所提供的数据向缓冲器36写入新的数据(即“读取/写入”),和/或使用指令将来自服务器52的新的数据写入缓冲器36以便将新的数据例如提交到(commit)共享存储器22的另一部分中至少一个,使得对于一个或多个客户端40是可视的和/或可访问的(即“存储”)。在一个示例中,“存储”事务可识别作为最新数据48的所提交数据。
在用于访问共享存储器22的缓冲器36和/或主题32中的数据的机制的一个示例,请求只读事务的与主题32通信的一个或多个客户端40可各自被指派给相同的缓冲器,例如第三缓冲器66,其包含主题32的最新数据48。由于两个客户端都将在这种情况不修改数据,所以将不存在与所访问的数据的数据完整性的冲突或争端。同样地,只读客户端40可彼此异步地执行其事务而没有干扰。如所解释的,所指派只读客户端40和缓冲器36的比率不需要是一比一;它可以是多比一。一旦只读客户端40完成其相应的事务,它们可从其相应的缓冲器36中去耦,直到另一个事务被请求。在第二事务请求时,机制重复,使得客户端40可访问如由主动访问指针导向器38所识别的最新数据48,其可以是相同缓冲器36中的相同数据,或者相同的或不同缓冲器36中的新数据。
机制的上述示例可在图4中图示,其建立在图3所示的机制上。在这个示例中,服务器50已经运行第一缓冲器58上的读取/写入事务,其中所写入的数据将识别为“新的”最新数据48。如所示,在服务器50完成读取/写入事务时,服务器50将去耦与第一缓冲器58的通信,并且向主动访问指针导向器38传递第一缓冲器58包含“新的”最新数据48(如虚线通信72所图示的通信)。主动访问指针导向器38又识别第一缓冲器58为包含最新数据48,并且将现在指引新的通信客户端40到第一缓冲器58的最新数据48。而且示出,如果服务器50请求新的读取/写入事务,则主动访问指针导向器38可选地复制第一缓冲器的最新数据48到第四缓冲器70,并且将服务器50的主动访问指针52指引到第四缓冲器70以执行新的读取/写入事务。
在执行缓冲器36上的事务的任何服务器50已完成其事务时,不管事务的类型,服务器50可以可选地指令主动访问指针导向器38已完成事务。主动访问指针导向器38在这个意义上可保持那些缓冲器36当前被使用和/或当前被访问的记录。如果服务器50请求附加的事务,则服务器将与主动访问指针导向器38通信,其将指派未占用缓冲器46,使用其来完成新的事务。
尽管这个示例图示服务器50的操作,但是将理解,客户端40可以能够执行类似的读取事务。此外,本发明的实施例可包含客户端40和/或服务器50,其可提供如本文所描述的类似的读取或读取/写入事务。在这个意义上,服务器50有时可充当好像它是客户端40,并且客户端40有时可充当好像它是服务器50。然而,一些不同在客户端40和服务器50操作之间存在。例如,尽管多个只读客户端40可同时访问单个缓冲器36,但是只有单个服务器50可一次访问单个缓冲器36。在另一个示例中,尽管主动访问指针导向器38可将客户端40的主动访问指针42指引到包含用于事务的最新数据48的缓冲器,但是主动访问指针导向器38将仅将服务器50的主动访问指针52指引到未占用缓冲器46,并且从未指引到最新数据缓冲器48,以便防止最新数据48的数据恶化。
布置并且配置上述机制,使得主题32的缓冲器36的一个将常常由主动访问指针导向器38识别为包含最新数据48,用于由一个或多个客户端40和/或由一个或多个服务器50访问。另外,上述机制可被配置,使得在客户端40请求事务时提供执行主题32的可访问的数据上的事务的每个客户端40访问最新数据48。如果最新数据在现有客户端40事务期间被识别,则那个客户端40将在所请求事务时完成最新数据48上的事务。以另一种方式陈述,最新数据48仅可在事务的请求时被确认或保证,不在事务完成时或在其期间。
上述机制可仅使用机器汇编语言事务来操作,无需复制超过机器汇编语言的设计等级的数据,例如无需复制操作系统等级的数据(例如“零复制”)。上述实施例的技术效果是零复制操作通过使用主动访问指针42、52将客户端40和/或服务器50指引到包含最新数据48的相应的缓冲器36来实现,使得最新数据48从通过其他客户端40和/或服务器50的访问从未“锁定”或“阻塞”。另外,机器汇编语言的使用考虑指针的“原子交换”操作,其中在操作的单个原子循环中完成更新,并且因此,由于其他更新不能比原子交换短的操作循环中完成,不能被对主动访问指针的其他更新中断。
通过利用机器汇编语言指令和基础数据结构(例如单链接列表。基础指针),机制在共享存储器22中使用零复制数据交换提供至少一个服务器50和至少一个客户端40之间的异步过程间数据通信,从而考虑用于可访问数据的“锁定解除”或“阻塞解除”访问,无需过程优先权的复杂配置或“优先权逆转”现象,其中预访问更低优先权过程锁定数据,并且即使在更高优先权过程请求访问时也不“释放”它用于访问。实际上,由于使用机器指令的操作倾向“到数据的第一个获胜”,所以更高优先权过程可常常首先执行其操作。
本发明的实施例可通过提供将应用编程接口(API)编程以经由API访问操作系统等级(或应用等级等)的机制来进一步利用上述机制。技术效果是上述实施例提供零复制方法以防止数据锁定、数据阻塞和/或优先权逆转。
可在上面的实施例中实现的附加优点是上述实施例防止由非机器语言等级的数据复制尝试引起的不良的系统性能。数据复制尝试可使大文件的读取和/或写入请求花费很长一段时间。通过利用指针和指针交换,在提供对所有需要对数据的访问的组成部分的访问时,能够避免附加的复制。上述实施例的另一个优点包含用于过写缓冲器中旧数据的内置机制,并且因此无需任何类型的“垃圾收集”数据管理方案。此外,从一个服务器到一个或多个客户端的典型数据共享可以通过创建全局数据存储并且使用例如操作系统等级的信号(即,访问控制值,例如锁定/未锁定指示符)、任何其他的互斥或锁定数据保护(例如,数据中断等)来保护它、并且随后复制数据来实现,其依照处理时间可以是非常昂贵,特别是数据存储大时。如本文所描述,这考虑更有效以及更快、锁定释放访问操作。
可在上述实施例中实现的其他优点包含主题设计具有保持过程松散耦合的灵活性、几乎无需协调并且无需“分级启动”(即,任何时候过程、客户端和/或服务器都能够在线)。另外,与不同的复制方法相比较,上述API的实现可导致系统开发的开发成本减少,以及类似硬件的性能容限增加。
在还未描述的范围内,各种实施例的不同特征及结构如需要可彼此结合使用。不意味着将实施例的全部中可能未图示的那一个特征解释为其可能没有,只是为描述简洁而这样做。因此,不同实施例的各种特征如需要可混和以及匹配,以形成新的实施例,无论是否明确描述新的实施例。本公开涵盖了本文所描述的特征的全部组合或置换。
本书面描述使用示例公开本发明,包含最佳模式,并且还使本领域技术人员能够实施本发明,包含制作和使用任何装置或系统,并且执行任何合并的方法。本发明可取得专利的范围由权利要求限定,并且可包含本领域技术人员想到的其它示例。如果这类其他的示例具有与权利要求的文字语言没有区别的结构元件,或如果它们包含与权利要求的文字语言无实质差异的等同结构元件,则其旨在处于权利要求的范围内。
附图标记说明
18 线路替换单元(LRU)
20 服务器
22 存储器
24 数据通信网络
26 LRU过程
28 服务器过程
30 数据分配
32 主题
34 固定地址
36 多个缓冲器
38 主动访问指针导向器
40 客户端
42 主动访问指针
44 占用的缓冲器
46 未占用的缓冲器
48 最新数据缓冲器
50 服务器
52 主动访问指针
54 第一客户端
56 第二客户端
58 第一缓冲器
60 第二缓冲器
62 第三客户端
64 第一通信
66 第三缓冲器
68 第二通信
70 第四缓冲器
72 第三通信
74 第四通信。

Claims (10)

1.一种用于由一个或多个客户端(40)访问共享存储器(22)中的数据的数据通信系统,所述数据通信系统包括:
至少一个主题模块(32),其中所述共享存储器(22)中的数据被分配到所述至少一个主题模块(32)中,其中数据的分配通过预定的固定地址(34)是可访问的;
其中所述至少一个主题模块(32)具有多个缓冲器(36),其中所述缓冲器(36)的数量等于访问所述至少一个主题模块(32)的客户端(40)的数量再针对访问所述至少一个主题模块(32)的每个服务器(50)加二,其中所述多个缓冲器包括针对访问所述至少一个主题模块的至少一个服务器中的每个服务器的两个或多于两个相应的缓冲器;
具有主动访问指针(42,52)的所述一个或多个客户端(40)和所述至少一个服务器(50);以及
主动访问指针导向器(38),基于来自所述一个或多个客户端(40)或者所述至少一个服务器(50)的事务请求,将多个主动访问指针(42,52)指引到所述多个缓冲器(36);
其中一个缓冲器(36)常常包含所述共享存储器(22)中的最新数据(48),并且至少一个缓冲器(36)常常能够用来访问所述共享存储器(22)中的数据;以及
其中由所述主动访问指针导向器(38)仅使用配置来在操作系统级别执行零复制数据交换的机器汇编语言事务在所述多个缓冲器(36)之间分配所述多个主动访问指针(42,52);以及
其中所述机器汇编语言事务在所述共享存储器中把所述至少一个服务器和所述一个或多个客户端之间的异步过程间数据通信装到所述数据通信系统中。
2.如权利要求1所述的数据通信系统,其中多个主题模块(32)被排列在所述共享存储器(22)中。
3.如权利要求1所述的数据通信系统,其中在所述共享存储器(22)的初始化期间,预定义所述至少一个主题模块(32)以及所述多个缓冲器(36)。
4.如权利要求1所述的数据通信系统,其中依据访问所述至少一个主题模块(32)的所述客户端(40)和所述服务器(50)的集体的数量,在运行时间期间限定所述至少一个主题模块(32)或所述多个缓冲器(36)中的至少一个。
5.一种用于由一个或多个客户端(40)访问共享存储器(22)中的数据的方法,所述方法包括:
将所述共享存储器(22)中的数据分配到至少一个主题模块(32)中;
指派单个预定地址(34)以访问所述至少一个主题模块(32)中的每个主题模块;
为所述至少一个主题模块(32)中的每个主题模块分配多个缓冲器(36),其中所述缓冲器的数量等于访问所述至少一个主题模块(32)的客户端(40)的数量再针对访问所述至少一个主题模块(32)的每个服务器(50)加二,其中所述多个缓冲器包括针对访问所述至少一个主题模块的至少一个服务器中的每个服务器的两个或多于两个相应的缓冲器;以及
通过使用机器汇编语言事务将用于所述一个或多个客户端(40)中的每个客户端或者所述至少一个服务器(50)中的每个服务器的主动访问指针(42,52)分配给至少一个相应的缓冲器(36)来响应来自所述一个或多个客户端(40)或者所述至少一个服务器(50)的事务请求;
其中在操作系统级别使用零复制数据交换,由所述至少一个相应的缓冲器(36)来访问所述数据;以及
其中所述机器汇编语言事务在所述共享存储器中执行所述至少一个服务器和所述一个或多个客户端之间的异步过程间数据通信。
6.如权利要求5所述的方法,其中由所述至少一个相应的缓冲器(36)来访问所述数据防止数据锁定。
7.如权利要求5所述的方法,其中所述将所述数据分配到至少一个主题模块(32)中、所述指派单个预定地址(34)以及所述为所述至少一个主题模块(32)中的每个主题模块分配所述多个缓冲器(36)发生在所述共享存储器(22)的初始化期间。
8.如权利要求5所述的方法,其中所述将所述数据分配到所述至少一个主题模块(32)中或所述为所述至少一个主题模块(32)中的每个主题模块分配所述多个缓冲器(36)当中的至少一个基于访问所述至少一个主题模块(32)的所述客户端(40)和所述服务器(50)的集体的数量在运行时间期间发生。
9.如权利要求5所述的方法,其中所述响应事务请求进一步包括将所述多个客户端(40)中的每个客户端的所述主动访问指针(42)指引到包括所述共享存储器(22)中的最新数据(48)的缓冲器(36)。
10.如权利要求9所述的方法,进一步包括,响应于完成的事务请求,更新将用于每个相应的客户端(40)或每个相应的服务器(50)的所述主动访问指针(42,52)指引到包括所述最新数据(48)的不同的缓冲器(36)。
CN201510917065.7A 2014-09-15 2015-09-15 用于访问共享存储器中的数据的机制和方法 Active CN105589754B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/486,336 US9794340B2 (en) 2014-09-15 2014-09-15 Mechanism and method for accessing data in a shared memory
US14/486336 2014-09-15

Publications (2)

Publication Number Publication Date
CN105589754A CN105589754A (zh) 2016-05-18
CN105589754B true CN105589754B (zh) 2021-05-28

Family

ID=54363001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510917065.7A Active CN105589754B (zh) 2014-09-15 2015-09-15 用于访问共享存储器中的数据的机制和方法

Country Status (7)

Country Link
US (1) US9794340B2 (zh)
JP (1) JP2016062608A (zh)
CN (1) CN105589754B (zh)
BR (1) BR102015020854A2 (zh)
CA (1) CA2902844A1 (zh)
FR (1) FR3025908B1 (zh)
GB (1) GB2532842B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10560542B2 (en) * 2014-09-15 2020-02-11 Ge Aviation Systems Llc Mechanism and method for communicating between a client and a server by accessing message data in a shared memory
US9710190B1 (en) * 2014-09-30 2017-07-18 EMC IP Holding Company LLC Shared memory
US10140036B2 (en) 2015-10-29 2018-11-27 Sandisk Technologies Llc Multi-processor non-volatile memory system having a lockless flow data path
US10417261B2 (en) 2016-02-18 2019-09-17 General Electric Company Systems and methods for flexible access of internal data of an avionics system
WO2018014282A1 (en) * 2016-07-21 2018-01-25 Baidu.Com Times Technology (Beijing) Co., Ltd. Efficient communications amongst computing nodes for operating autonomous vehicles
US10037166B2 (en) 2016-08-03 2018-07-31 Ge Aviation Systems Llc Tracking memory allocation
US10282251B2 (en) 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
US11531645B2 (en) * 2017-12-15 2022-12-20 Slack Technologies, Llc Method, apparatus and computer program product for improving data indexing in a group-based communication platform
JP7042138B2 (ja) 2018-03-30 2022-03-25 日立Astemo株式会社 処理装置
US10572405B1 (en) 2018-12-28 2020-02-25 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
WO2020139395A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Reading messages in a shared memory architecture for a vehicle
WO2020139389A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Shared memory architecture for a vehicle
US10785170B2 (en) * 2018-12-28 2020-09-22 Beijing Voyager Technology Co., Ltd. Reading messages in a shared memory architecture for a vehicle
WO2020139396A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Writing 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
WO2020139393A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Message buffer for communicating information between vehicle components
US11327489B2 (en) 2018-12-28 2022-05-10 Beijing Voyager Technology Co., Ltd. Shared memory architecture for a vehicle
US11995922B2 (en) 2020-07-30 2024-05-28 Ge Aviation Systems Llc Flight management system and method for reporting an intermitted error
CN112486684B (zh) * 2020-11-30 2022-08-12 展讯半导体(成都)有限公司 行车影像显示方法、装置及平台、存储介质、嵌入式设备
US11893273B2 (en) * 2022-01-20 2024-02-06 Vmware, Inc. Crash-safe tiered memory system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3107094B2 (ja) 1991-08-06 2000-11-06 富士通株式会社 共用バッファのロック期間短縮処理方法及び装置
US5715447A (en) 1991-08-06 1998-02-03 Fujitsu Limited Method of and an apparatus for shortening a lock period of a shared buffer
KR0152714B1 (ko) 1995-12-06 1998-10-15 양승택 다중 사용자 환경의 저장시스템에서 버퍼 잠금기법을 이용한 버퍼 관리방법
WO2001013229A2 (en) 1999-08-19 2001-02-22 Venturcom, Inc. System and method for data exchange
US20020144010A1 (en) * 2000-05-09 2002-10-03 Honeywell International Inc. Communication handling in integrated modular avionics
US7454477B2 (en) * 2005-05-16 2008-11-18 Microsoft Corporation Zero-copy transfer of memory between address spaces
US20080148095A1 (en) * 2006-12-14 2008-06-19 Motorola, Inc. Automated memory recovery in a zero copy messaging system
CN101296236B (zh) * 2008-06-12 2011-06-08 北京中星微电子有限公司 多用户实时访问多媒体数据的方法、系统及数据客户端
US8555292B2 (en) * 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors
US9098462B1 (en) * 2010-09-14 2015-08-04 The Boeing Company Communications via shared memory
US9396227B2 (en) 2012-03-29 2016-07-19 Hewlett Packard Enterprise Development Lp Controlled lock violation for data transactions
EP2865164B1 (en) * 2012-06-21 2019-08-14 Saab Ab Dynamic memory access management
US9176872B2 (en) * 2013-02-25 2015-11-03 Barco N.V. Wait-free algorithm for inter-core, inter-process, or inter-task communication

Also Published As

Publication number Publication date
BR102015020854A2 (pt) 2016-03-29
JP2016062608A (ja) 2016-04-25
US9794340B2 (en) 2017-10-17
US20160080491A1 (en) 2016-03-17
GB2532842A (en) 2016-06-01
FR3025908A1 (fr) 2016-03-18
CN105589754A (zh) 2016-05-18
CA2902844A1 (en) 2016-03-15
FR3025908B1 (fr) 2019-07-12
GB2532842B (en) 2018-05-23
GB201516085D0 (en) 2015-10-28

Similar Documents

Publication Publication Date Title
CN105589754B (zh) 用于访问共享存储器中的数据的机制和方法
CN105426258B (zh) 在客户端与服务器之间通信的机制和方法
CN100430945C (zh) 动态切换将事务数据写入盘中的模式的设备和方法
US8301717B2 (en) Extended virtual memory system and method in a computer cluster
US10387275B2 (en) Resume host access based on transaction logs
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
CN102629221B (zh) 用于分布式共享存储的任务同步方法、装置及系统
US11797453B2 (en) In-memory distributed cache
DE102012201225A1 (de) Rechnersystem
US10338965B2 (en) Managing a set of resources
EP2865164B1 (en) Dynamic memory access management
US20170124109A1 (en) Hybrid model of fine-grained locking and data partitioning
US20100057741A1 (en) Software resource access utilizing multiple lock tables
US20200201691A1 (en) Enhanced message control banks
US10481951B2 (en) Multi-queue device assignment for application groups
US11221799B2 (en) Techniques for clustering compute nodes in distributed storage
JP3962217B2 (ja) Icカードのメモリ管理方法
US20220374536A1 (en) Method, computer program, memory medium, memory means, and system for using a jointly utilized memory means
US9251100B2 (en) Bitmap locking using a nodal lock

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant