CN1881945A - 改进型分布式核心操作系统 - Google Patents

改进型分布式核心操作系统 Download PDF

Info

Publication number
CN1881945A
CN1881945A CNA2006100885161A CN200610088516A CN1881945A CN 1881945 A CN1881945 A CN 1881945A CN A2006100885161 A CNA2006100885161 A CN A2006100885161A CN 200610088516 A CN200610088516 A CN 200610088516A CN 1881945 A CN1881945 A CN 1881945A
Authority
CN
China
Prior art keywords
node
local
cid
transmission
connection identifier
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
CNA2006100885161A
Other languages
English (en)
Other versions
CN1881945B (zh
Inventor
A·博伊德
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.)
BlackBerry Ltd
Original Assignee
QNX Software Systems GmbH
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 QNX Software Systems GmbH filed Critical QNX Software Systems GmbH
Publication of CN1881945A publication Critical patent/CN1881945A/zh
Application granted granted Critical
Publication of CN1881945B publication Critical patent/CN1881945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • 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

Abstract

本发明说明了一种计算机网络系统上的改进型分布式操作系统。现有分布式操作系统具有由它们缺少以下功能而导致的传输性能限制:(1)可靠处理瞬时通信故障和快速节点重启,(2)提供符合链路可靠性的传输协议,和(3)允许在通信链路的任意组合上进行传输。此处说明的该系统和方法通过提供可靠的节点到节点会话协议来解决这些问题,该会话协议提供高性能的消息传送和多接口管理和支持。这可通过在单个连接上传输该操作系统的两个节点之间的所有数据来达到,所述单个连接可动态利用节点之间的多个接口。

Description

改进型分布式核心操作系统
技术领域
本发明一般涉及计算机;网络系统,更具体地涉及计算机网络系统上的分布式操作系统。
背景技术
操作系统(OS)为负责控制和管理计算机资源的系统软件。典型OS可进行计算机应用软件和硬件之间的通信。OS允许应用软件访问计算机硬件并进行计算机的基础系统操作,例如磁盘访问、存储器管理、任务调度和用户接口。此外,OS也负责提供网络连接。
计算机网络提供在多个互连计算机间共享文件和外围装置的机制。理想情况下,计算机网络应该允许所有计算机和应用程序访问所有网络资源,优化集体资源(collective resource)。为了达到这一结果,分布式操作系统已经被开发出来。然而,典型的分布式OS受到很多限制。首先,分布式OS可为多层系统:一层用于本地环境,而另一独立的层用于网络环境。这产生了开发人员和用户需要了解的两个不同的操作系统。另外,因为本地层和网络层的接口显著不同,应用程序可被写入以在一层或另一层上操作,但不能被写入以同时在两层上操作。也就是,应用程序的网络版本可能不在单个计算机上运行,且单机版本可能不运行在网络上。
此外,网络软件将客户计算机和服务器作为不同装置处理。如果用户期望中央计算机为多个远程计算机提供文件,则中央计算机必须被指定为服务器,而远程计算机被指定成为客户机。因为服务器和客户计算机由操作系统给予不同的能力,这样可能会限制网络的灵活度。例如,可能不能使两个计算机相互间共享文件,这是因为,一个必须被指定为服务器,而另一个被指定为客户机。一般情况下,服务器可能不访问存储在客户机上的文件。
计算机网络系统已经被设计并被优化成处理一组指定资源和配置。例如,大型计算机系统可以包括具有大容量存储区域的大型计算机和打印机组。较小的终端或计算机可作为客户机以针对网络和软件的形式访问该大型机。该计算机系统可能不具有如因特网一样的利用通信发展的灵活度。
消息传递分布操作系统已经被开发来克服这些问题。一种典型消息传递操作系统在申请人为van der Veen(“van der Veen et al.”)等的美国第6,697,876号专利中被予以说明,其公开在此处作为参考。van derVeen等说明了一种具有单层体系结构的可被应用于包括因特网通信链路的灵活性网络(flexible network)环境和单机计算机上的分布式操作系统。这可通过使用消息传递操作系统并通过向网络管理器发送非主节点(off-node)消息来达到,该网络管理器能引导并接收非主节点消息。
此外,这些系统中的进程间控制(IPC)应该为可靠的。但是,一些现有分布式操作系统受到由以下功能欠缺而导致的传输性能限制:(1)可靠处理瞬时通信故障和快速节点重启,(2)提供适于链路可靠性的传输协议,和(3)允许在任意媒介组合上进行传输。因为节点经常通过诸如因特网的第三方通信网络被连接,这可以保证节点间的物理通信线路的完整性。瞬时通信故障可能锁住客户进程,浪费资源且妨碍系统整体性能。
由此,需要提供一种用于管理分布式消息传递操作系统的节点之间的通信的可靠方法,其可提高在瞬时通信故障和快速节点重启过程中的处理的可靠性,并且可以通过适于链路灵活性和/或抽象媒介选择的适当的协议提高数据传输的性能,以允许在通信链路的任意组合上实现不同方案。
发明内容
公开了一种在分布式操作系统中管理通信以克服由以下功能欠缺而导致的传输性能限制的方法:(1)可靠处理瞬时通信故障和快速节点重启,(2)提供适于链路可靠性的传输协议,和(3)允许在媒介的任意组合上进行传输。此处说明的该系统和方法提供一种可靠的节点到节点的会话协议,该会话协议提供了高性能的消息传送和多接口管理和支持。这可通过在可以动态使用节点间的多个接口的单一连接上在操作系统的两个节点间传输所有数据来达到。也可实现不同媒介选择方案以使用户指定特定数据传输的接口。
对本领域的技术人员来说,在考察以下附图和详细说明后,本发明的其它系统、方法、特性和优点将会或将变为显而易见的。所有这些附加系统、方法、特性和优点被包括在该说明书中,并且包括在本发明的范围内,被所附权利要求书保护。
附图说明
可参照以下附图和说明对本发明有更好的理解。附图中的组件不必按比例绘制,而是着重强调说明本发明的原理。此外,在此图中,相似参考数字指定不同视图的相对应部分。
图1示意出用于实现分布式操作系统的示例性物理布局图;
图2示意出用于分布式操作系统的示例性消息框图;
图3示意出用于管理在分布式操作系统内的节点到节点的通信的说明性方法;
图4示意出用于在分布式操作系统内的节点到节点通信的网络管理器的示例性逻辑结构;
图5示意出用于建立在分布式操作系统的节点之间的节点到节点的连接的示例性方法;
图6示意出用于管理在分布式操作系统中的多个网络接口上的传输的示例性方法;
图7示意出用于从分布式操作系统中的本地节点传输数据的示例性方法;
图8示意出用于在分布式操作系统中的远程节点接收数据的示例性方法。
具体实施方式
图1中示出用于实现分布式操作系统的说明性物理布局图。该布局图包括经由通信网络140互连的本地计算机系统110和远程计算机系统112。尽管本地计算机系统110和远程计算机系统112被说明为具有一定特性,但系统的物理配置和电子组件仅作为用于说明本发明的一个实例来显示。相似地,允许两个计算机系统110和112之间的消息传递的通信网络140也可采用多种物理形式和不同通信协议。由于在两个计算机系统110和112之间传递的数据为消息,则该数据是与通信所用媒介无关的。因此,通信网络的类型与本发明关联性很小。
图1所示的本地计算机系统110包括可执行应用程序的本地客户处理器160。本地客户处理器160可与其所处本地区域中的其它装置经由局域网进行通信,该局域网可以以本领域中所知的方式实现。这些本地装置可包括本地消息传递操作系统118、一个或多个本地服务器120和122、以及本地网络管理器124。
本地消息传递操作系统118和本地网络管理器124一般可以是以可执行形式存储在计算机可读介质上的软件程序,该计算机可读介质诸如随机存取存储器(RAM)、只读存储器(ROM)、光盘(CD-ROM)或磁存储介质(硬盘驱动器或可移动磁盘)。本地操作系统118和本地网络管理器124也可以由硬件或其他本领域已知手段实现。
本地消息传递操作系统180可为各个本地处理器160、120和122所访问。除了作为进程间控制手段传递消息外,操作系统一般提供诸如数据输入和输出以及定时服务的功能,这些功能可经由存储在相似的存储器介质上的外部子程序提供。该消息传递操作系统通过建立每个处理器160、120和122,以及本地网络管理器124之间的通信信道和连接处理它们之间的通信。
远程计算机系统112具有相似配置,包括消息传递操作系统核心(operating system kernel)126、远程服务器128和远程网络管理器130。在这种配置中,消息传递操作系统核心126处理远程服务器128和远程网络管理器130之间的通信,而远程网络管理器130可经由通信网络140与本地网络管理器124进行通信。远程网络112的组件将具有与本地网络110中的相对应组件相似的特性。
与本地网络110相似,远程网络112的配置仅为说明本发明的一个实例。显然,可产生无限种配置,其为本领域的技术人员所知。在该范围的一端,网络可包括单个电路板上的两个处理器,这两个处理器互连以相互间进行通信。或者,网络可包括遍布世界的数千个处理器,这些处理器在不同类型的通信链路上互连。术语“远程”意思为分开;其不意味着表达任何空间或距离信息。
分布式操作系统分两个阶段处理从本地客户处理器160向远程服务器130传递的消息。客户方110实际上将本地网络管理器124视为对本地客户处理器160的假定服务器。相似地,远程网络管理器130生成其传递给远程服务器128的虚拟消息;远程网络管理器130充当类似远程服务器128的客户。
本地和远程操作系统118和126在本领域中已知为消息传递操作系统。例如,消息传递可提供整个系统的进程间控制(IPC)。一般情况下,消息为其内容不具有特殊意义的从一个进程传输到另一个进程的字节分组。消息中的数据对于消息的发送方和接收方具有意义,但对于任何其它方无意义。
消息传递不仅允许进程相互间传输数据,而且还提供同步执行一些进程的手段。在它们发送、接收并应答消息时,进程经历影响它们可以何时运行和运行多久的不同的“状态的改变”。获知它们的状态和优先级后,操作系统118和126可最大可能地有效调度所有进程以优化可用处理器资源。
在客户方,即计算机系统110上,运行在本地客户机160的应用程序知道远程服务器128的非节点地址。本地核心操作系统180可在其不具有相应的节点标识的本地映射时将任何消息识别为非节点消息。操作系统118可将未识别的消息视为非节点的,且可将这样的消息引导到连接本地网络管理器124的本地客户机160,本地网络管理器124操作均为本领域中所知的线程和进程。线程是作为组被调度和执行的编程步骤的适当尺度的集合。另一方面,进程可被视为线程的“容器”,其限定线程将被执行在其中的地址空间。进程包括至少一个线程。
将消息传递引向信道164和多个连接,而不是直接在线程与线程之间进行。希望接收消息的线程首先创建信道164,而希望将消息发送到该线程的另一线程必须首先通过“附加”到信道构成到信道164的连接。实现本地客户处理器160和本地网络管理器124之间消息的传输的不同手段为本领域技术人员所知,且本发明并不限于经由此处所述的信道和连接的传输。
信道164由消息核心调用(kernel call)来实现,并且由服务器使用以接收消息。服务器使由客户线程“连接”建立的到信道的连接可用。一旦建立连接,客户可在该连接上发送消息。如果进程中的一些线程附加到相同信道164,则单个连接可在线程间共享。信道164和连接可在进程中由小整数标识符命名。客户连接可直接映射到文件描述符中。
信道164可具有三个与其相关的队列:一个用于等待消息的线程、一个用于已经发送了还没有被接收的消息的线程、而另一个用于发送了已经被接收到的消息但还没有应答的线程。而在这些队列的任一个中,等待线程被阻塞。在其它应用程序中,信道164可以以不同方式安排。
该消息阻塞通常遵循图2中的状态图。在图2中,粗体的函数或消息用第一线程发出,而斜体函数或消息用目标线程发出。同样,如果因为进程必须等待消息协议的某部分结束而不被允许继续执行,则进程被称为被阻塞。尽管涉及UNIX(POSIX)函数调用的特定可移动操作系统接口,但其不以任何方式限制权利要求的范围。线程可通过调用MsgSendv()函数并从准备状态250移动到发送阻塞状态252来传输消息到目标线程,直到目标线程使用MsgReceive()函数向回发送消息。这将初始线程置于应答阻塞状态254。当目标线程已经处理了消息,其利用MsgReplyv()函数向初始线程回传应答消息,并且返回准备状态250。如果线程执行MsgReceivev()函数调用而没有之前发送的消息未决的情形,则该线程将是接收阻塞256的状态,直到目标线程调用MsgSendv()函数以将消息回送到初始线程。该阻塞维持线程的同步执行。
尽管该阻塞方案确保处理同步,如果通信网络140中发生了临时故障,其间远程网络管理器130试图将应答传输到本地网络管理器124时,则可能出现问题。如果中断持续足够的时间,传输层将最终尝试传输应答。因为远程网络管理器130不能与本地网络管理器124进行通信,应答不能被传输,本地客户机160将永远保持应答阻塞状态。应该注意到,无论是否出现底层通信错误,都可能出现应答阻塞问题。例如,通信中断可能由服务器节点的快速重启、缓冲器超过限度、从网络物理断开等触发。
图3中所示的流程图公开了解决这些问题的方法。本地节点处的处理器可生成以远程节点为目的地的消息;该消息可在步骤310被转发到本地网络管理器124。在响应中,本地网络管理器124可在步骤320判断是否存在对远程节点的节点到节点的连接。如果不存在连接,本地网络管理器124可在步骤330产生到远程节点的连接。如果连接在本地节点和远程节点之间存在,本地网络管理器124可在步骤340判断连接是否有效。如果连接不再有效,本地网络管理器124可在步骤350拆除无效连接,并在步骤330建立新的连接。一旦判断在本地节点和远程节点之间存在有效连接,或如果建立了新的连接,则本地网络管理器124可以在步骤360在一个或多个接口上向远程网络管理器130传输消息。
术语“传输”已经被用于说明从一个装置到另一个装置的消息传送。该术语被普遍使用,且防止与消息类型“发送”和“接收”相混淆。同样地,如上所述,本地和远程网络管理器124和130之间的通信网络140可采用本领域所知的多种形式,因为只有消息需要被传输。例如,步骤360处的传输可使用TCP/IP协议网络进行实现。
为了实现图3中所示的方法,本地网络管理器124可以包括图4所示的本地核心接口层410、本地媒介选择层420、本地传输层430。本地核心接口层410可负责与消息传递操作系统核心118进行交互。本地传输层430可包括本地计算机系统110的各网络接口的实例432和实例434。各实例可负责跨越其相关的接口传输数据。本地媒介选择层420可负责管理节点到节点的连接,并管理在传输层接口实例432和434上的消息的传输。
远程网络管理器130可具有类似配置,包括远程核心接口层440、远程媒介选择层450、和可以包括各网络接口的实例462和实例464的远程传输层460。这些远程分层440、450和460可执行远程计算机系统112上的与本地计算机系统110的对应本地分层410、420和430相对应的功能。尽管此处说明的功能被说明为与本地网络管理器124和远程网络管理器130的特定分层相对应,可以使用已知技术的几乎无限种方法来提供这些功能。
如上所述,本地节点首先可以生成向远程节点的传输请求。该传输请求可被视为任意长度的字节序列,且可包括与远程节点相对应的节点描述符。传输请求可由本地网络管理器124接收,例如,通过本地核心接口层410进行接收。本地核心接口层410可随后将该请求传递到本地媒介选择层420,层420可判断是否存在对远程节点的节点到节点的连接,并且如果不存在则建立新的节点到节点的连接。本地媒介选择层420可维护系统的每个远程节点的传输连接结构。传输连接结构可被用于控制本地和远程节点之间连接的状态信息等,且可被存储在本地媒介选择层420内部。传输连接结构可在由节点描述符标记的链表(link list)中被维护,从而,本地媒介选择层420可快速判断是否存在请求中所引用的远程节点的传输连接结构。可替换地,诸如散列链表(hashed linked list)等的其它数据结构可被用于维持传输连接结构。
传输连接结构可包括与连接状态、一对节点描述符、一对连接标识符以及头和尾指针相对应的组件。其它组件可被添加或替代。连接状态组件可包括定义连接状态的数据结构。例如,连接可具有与用于建立节点到节点连接的分组相对应的多个状态中的一个状态,这将在下文详述。该对节点描述符可与本地和远程节点的节点描述符相对应。例如,该对节点描述符可包括用于远程节点的本地节点的节点描述符和用于本地节点的远程节点的节点描述符。传输连接结构的典型数据字段可如表1.0中所示。
  表1.0——典型传输连接结构数据字段
  struct tx_conn *next   指向链表中的下一结构的指针
  struct tx_status status   与远程节点建立连接过程的状态
  unsigned short my_nd_4_rem   用于远程节点的本地节点描述符
  unsigned short rem_nd_4_me   用于本地节点的远程节点描述符
  unsigned long my_conn_id   本地生成的连接标识符
  unsigned long remote_conn_id   远程生成的连接标识符
  unsigned long seq_num   本地生成的特定传输的传输序列
  int txinprog   用于指示传输当前正在进行中的标记(可被用于实行各节点的顺序传输)
  struct tx_q *head   指向第一传输请求的指针
  struct tx_q *tail   指向最后传输请求的指针
该对连接标识符可为用于下文所述的连接管理的标识符。该对连接标识符可以是媒介选择层420和450生成的单调增加计数器,以唯一识别两个节点之间的连接,从而各个连接可具有唯一的节点描述符和连接标识符对。该连接标识符可在本地媒介选择层420建立传输连接结构时生成。可替换地,该连接标识符可以以任何所知的方式生成。例如,连接标识符可分别基于本地和远程计算机系统110和112的启动数据和/或时间。
头和尾指针可定义连接的传输请求的链表,以确保各节点的传输请求的顺序传输。可替换地,其它所知技术可被用于实现各节点的传输请求的顺序传输。当建立新的传输连接结构时,头和尾指针可指向初始传输请求,甚至在连接建立前就排列请求以确保首先服务初始传输请求。在下方表2.0中示意出一个典型传输请求。
一旦传输连接结构已经被识别或建立,连接管理分组在本地节点和远程节点之间进行传输以建立节点到节点的连接。连接管理分组类型可与连接状态相对应,且可包括用于唯一识别连接的节点描述符对和连接标识符对。典型连接管理分组可包括由本地节点发送的用于启动连接的TCS_INIT分组、由远程节点发送以指示连接已经建立的TCS_REM_UP分组、由本地节点发送用于轮询有效连接的TCS_UP分组,和分别由本地和远程节点发送的用于拆除现有连接的TCS_DOWN和TCS_REM_DOWN分组。尽管连接管理分组可由本地或远程节点进行传输,连接可以是仅允许本地或发起节点(initiator node)在该连接上传输数据分组的单向连接。因此,连接可仅具有TCS_INIT或TCS_UP状态。
图5中示意出描述典型连接管理分组流程的典型流程图。连接可在表示本地和远程节点之间的连接已经被建立的TCS_INIT状态中开始。当连接处于TCS_INIT状态时,TCS_INIT分组可在步骤502处从本地节点向远程节点传输。TCS_INIT分组可包括用于远程节点的本地节点的节点描述符和本地节点的连接标识符。典型TCS_INIT分组可包括具有值4的本地连接标识符。
在接收到TCS_INIT分组时,远程节点可在步骤504判断是否存在传输接收结构用于TCS_INIT分组中引用的本地节点和连接。传输接收结构除了可以由包括在TCS_INIT分组中的节点描述符指示外,可包括与传输连接结构相似的元素。如果不存在用于本地节点的传输接收结构,通常为此情况,远程节点可在步骤506建立传输接收结构并向本地节点回传TCS_REM_UP分组。TCS_REM_UP分组可包括来自TCS_INIT分组的节点描述符和连接标识符以及用于本地节点的远程节点的节点描述符和远程节点的连接标识符。这样,TCS_REM_UP分组包括完整的节点描述符对和连接标识符对。典型TCS_REM_UP分组可包括具有值4和3的连接标识符对。
为了响应TCS_REM_UP分组,本地节点可在步骤512判断是否存在与节点描述符和连接标识符对相对应的传输连接结构。如果存在所引用的结构,本地节点可在步骤516判断现有结构的远程连接标识符字段是否为空。如果该值为空,则本地节点可在步骤520将所引用的传输连接结构用新的节点描述符和连接标识符更新。例如,传输连接结构可被更新为包括连接标识符4和3。在这点上,连接可被认为已经建立,且该连接具有TCS_UP的状态。本地节点可在步骤522在该连接上传输数据分组。类似地,远程节点可在该连接上接收数据分组。任一节点可随后通过传输TCS_DOWN或TCS_REM_DOWN分组在任何点上拆除连接。
在特定情况下,可能在连接管理进程中出现错误。例如,传输接收结构可以已经为TCS_INIT分组中所引用的节点描述符存在。如果远程节点已经具有预先存在的传输接收结构,则可能出现两种情况。第一,现有传输接收结构可具有与TCS_INIT分组相同的连接标识符。远程节点可因为一些原因而具有包括匹配的连接标识符的预先存在的传输接收结构。例如,复制TCS_INIT可由本地节点或通信网络140上的其它位置生成。可选地,本地节点可能已经重新启动并且不具有现有节点到节点连接的任何信息(即,状态信息),但已经重新生成了与旧连接相同的连接标识符。可选地,预先存在的结构可包括再次指示连接丧失同步的非匹配的连接标识符。
如果与先存在的传输接收结构存在,无论问题产生的原因,远程节点可通过在步骤508传输TCS_REM_DOWN分组拆除现有连接。TCS_REM_DOWN分组可包括单个节点标识符和连接标识符的任一,且被本地节点视为拆除引用的连接的命令。例如,本地节点可通过在步骤510删除其用于连接的传输连接结构并清除与连接相关联的任何其它状态信息来拆除连接。本地节点可随后试图重建连接。可替换地,连接标识符可被用于判断问题的原因。如果问题的原因是无害的,例如,如果TCS_INIT分组为复制分组,则预先存在的连接可被用于数据传输。
类似的错误也可在TCS_REM_UP分组被本地节点接收时出现。如上所述,TCS_REM_UP分组包括完整的节点描述符和连接标识符对,即,本地节点的一对和远程节点的一对。如果本地节点不具有与所引用的本地节点描述符和连接标识符对相对应的传输连接结构,则该节点丧失同步,并且在步骤514传输TCS_DOWN分组到远程节点以关闭连接。为了响应TCS_DOWN分组,远程节点可在步骤524破坏所引用的传输接收结构,清除任何剩余状态信息等。可选地,本地节点可具有用于远程节点的现有传输连接结构。在上述通常情况下,本地节点的传输连接结构可不包括远程节点描述符和连接标识符,或者,那些组件可被设置为诸如0的默认值。然而,由于复制分组或重启,传输连接结构可包括远程节点描述符和连接标识符对的值。在此情况下,本地节点可在步骤518破坏现有传输连接结构,并在步骤514通过传输TCS_DOWN分组拆除连接。可选地,如果判断产生错误的原因无害,则预先存在的连接可被更新并被用于数据传输。
在连接已经建立后,例如,传输请求可由本地网络管理器130通过建立如上所述用户级连接并在该用户级连接上传输数据来服务。特定节点的传输请求可由本地网络管理器顺序进行。例如,这可通过利用上述头和尾指针将用于特定连接的传输请求排队来实现。表2.0中所示为将传输请求排队的典型结构。可替换地,可生成对节点唯一的传输请求标识符,诸如单调增加的计数器。可选地,传输请求标识符可利用任何数目的所知方式生成。例如,可由本地媒介选择层420生成传输请求标识符。如上所述,传输请求可被视为任意长度的字节序列。实现传输请求标识符允许所有用户数据被一般地处理为由传输请求标识符和偏移量指示的字节的二维数组(array)。
  表2.0——典型传输请求队列数据字段
  struct tx_q *next   指向单链表中下一个传输的指针
  int qos_pkt   用于表示分组是媒介选择层分组,或可选地,用户数据的标志
  14_bits tried_14   已经尝试的传输层列表的实例
  void *tx_conn   指向媒介选择层的连接结构的指针
  struct qos_info qos_info   媒介选择信息
  struct sockaddr raddr   远程节点传输层的目标地物理地址
  struct 14_request 14_req   用于表示传输请求细节的结构(见表3.0)
  表3.0——典型传输请求数据字段
  unsigned layer   用于表示接收节点访问的层以正确处理消息
  unsigned nd   节点描述符
  void *data   传输层头信息
  unsigned data_len   传输层头信息长度
  int rcvid   要被发送的数据的位置的标识符
  unsigned offset   用于表示要被发送的数据的位置的偏移量
  unsigned rcvid_len   要被发送的数据长度
  void(*rcvid_done)(int handle,intstatur)   在所有要被发送的数据已经被获取后所使用的函数调用
  int handle   表示所使用的句柄函数(handlerfunction)
  int status   传输的状态
  void **sequence   用于通知传输层排序多个请求
具有节点到节点连接的两个节点之间的关系可以三种方式表示。第一,节点可具有有效通信的用户级进程。第二,节点可具有有效用户级连接,但不是当前传输数据。第三,节点上的进程间不存在用户级连接。在前两种情况的任一种情况下,媒介选择层420可保持节点到节点连接。然而,在第三种情况下,例如,如果通信已经停止预定时间,媒介选择层420可拆除节点到节点连接。可选地,或附加地,可使用其它所知用于中止连接的方法。
在本地和远程节点间存在多于一个接口处,本地媒介选择层420也可诸如通过维护接口池、网络池等负责管理在多个接口上的数据分组的传输。该池可仅包括那些可操作或有效的接口或网络,或者,该池可包括任何接口或网络。一种典型的管理多个网络接口上传输的方法如图6中的流程图所示。首先,媒介选择层420可在步骤602确定媒介选择的优选。媒介选择的优选指示媒介选择层420如何在连接上传输数据的方案。媒介选择的优选可被指定为装置路径名的一部分。例如,路径名“/net/lab2~exclusive:en0/dev/ser1”可被用于访问具有“专用”媒介选择方案的名为“lab2”的节点上的串行装置。可选地,可对限定路径名的不同媒介选择创建符号链接。可选地,或附加地,媒介选择方案可通过与路径名分开的命令进行限定。
如图6所示,数据可根据以下三种不同方案进行传输:(1)“负载平衡”方案603,(2)“优选的”方案611,和(3)“专用的”方案619。本领域中的普通技术人员将理解可以实现不同附加媒介选择方案。例如,可提供允许用户在多个接口上同时传输数据分组的“冗余”媒介选择方案。
“负载平衡”方案603允许本地媒介选择层420判断哪个网络接口、或传输层实例432和434传输各分组的数据。各分组可以在能将分组最快传送到远程节点的链路上进行排队。这在多个链路可用时有效提供节点间的更高的带宽(该带宽可以为可用链路的带宽总和),并在链路不可用时提供适度降级的服务。因此,本地媒介选择层420可在步骤604确定最快接口432和434。可随后在步骤606在确定的接口432和434上传输该分组。如果出现错误,则本地媒介选择层可试图在下一个最快接口上重传该分组。因此,本地媒介选择层420可能不试图在故障接口上发送后续分组。本地媒介选择层420可以在步骤610为任何附件分组保持这种进程,直到数据已经被传输。
“优选的”媒介选择方案611允许用户指定如果可用则应该被使用的特定网络接口。因此,本地媒介选择层420可试图在步骤612在特定接口上传输数据,在步骤618循环以传输附加分组。如果接口在步骤614的传输过程中变得无效(即,在传输中出现错误),则媒介选择层420可随后选择用于传输数据的另一接口432和434。例如,本地媒介选择层420可回复到默认媒介选择方案。可选地,本地媒介选择层420可选择与优选链路最为相似的接口。多个优选的接口也可被指定从而媒介选择层420可试图在可用的第一接口上传输分组,随后在第二接口上传输,以此类推。例如,可通过设置链路的相对性能值指定多个优选物。相对性能值可基于诸如最大带宽、平均带宽、网络可用性等网络的性能特性。如图6所示,本地媒介选择层420可在步骤616试图判断是否已经指定了附加的优选的接口。如果已经指定附加的接口,则试图在该附加的接口上进行传输。如果没有指定附加接口,本地媒介选择层420可试图根据默认媒介选择方案进行传输,例如,“负载平衡”方案603。可选地或可附加地,这些方案可被组合在一起,从而媒介选择层420可在多个“优选的”611链路上有效地进行“负载平衡”603传输。
最后,“专用的”媒介选择的优选619可允许用户将传输锁定到特定链路。在“专用的”链路变为不可用的事件中,本地网络管理器124可能并不试图在任何其它接口上传输数据。可替换地,多个“专用的”619接口可被指定,从而媒介选择层420可仅在指定接口上传输信息。例如,当移动大量数据的实施需要高带宽接口时,该“专用的”媒介选择方案可被使用。利用“专用的”媒介选择方案,用户可将传输仅限制到那些满足实施需求的接口上,且在故障状态下避免使较低带宽接口过载。同样,这些方案可被结合,从而媒介选择层420可在一些“专用的”619接口上进行“负载平衡”603传输。再次参照图6,本地媒介选择层420可在步骤620在专用的接口上传输数据分组。如果指定接口发生故障,不在任何附加接口上试图进行传输。
为了实现该典型媒介选择方法,本地媒介选择层430可维护可用接口或网络池。例如,各传输层实例432和434可在其相关接口停止时通知媒介选择层。媒介选择层430可随后周期性地轮询接口以判断何时其再次正常工作。例如,包括上述节点描述符和连接标识符对的TCS_UP分组可被周期性地在不可用接口上传输。作为响应,远程媒介选择层450可传输TCS_REM_UP分组以确认链路再次可用。
本地媒介选择层420也可从本地传输层430获取性能信息。该性能信息随后可被用于根据指定的媒介选择的优选选择接口。例如,各传输层实例432和434可包括静态和动态的性能信息。各实例可维护诸如硬件性能等的静态性能信息。典型动态性能信息可包括字节计数、当前队列中传输请求的计数、以及这些请求的大小等。
在由媒介选择层420选择适当接口后,数据分组可由本地传输层430传输到远程传输层460。图7中所示为本地传输层430所执行的典型数据传输的流程图。在步骤702接收到传输请求后,本地传输层430可在步骤704验证传输长度。如果附加分组将被传输,则本地传输层可在步骤706向远程节点传输该分组。例如,本地传输层430可通过分配缓冲区、与来自请求的数据一同打包并适当调用接口驱动器来传输该分组。本地传输层430也可将节点描述符和会话层、或节点到节点、连接标识符对附加到各数据分组。典型分组数据字段被显示在表4.0中,而被包括在分组中的典型媒介选择层信息被显示在表5.0中。接下来,本地传输层430可循环以传输剩余数据。当没有将被传输的附加信息后,本地传输层430可在步骤708通过诸如分组头部中的标记设置来标记传输的最后分组,从而可通知远程节点传输完成。在所有数据已经被传输后,本地传输层430可在步骤710等待来自接收节点的响应。
  表4.0——典型分组数据字段
  unsigned char version   传输层版本信息
  unsigned char type   有效载荷类型
  unsigned char flags   用于指示传输开始和结束的标志
  unsigned char layer   用于指示接收节点所访问的层以适当处理消息(见表5.0)
  struct qos_info qos_info   媒介选择层头信息
  unsigned long offset   单个分组在整个字节流序列中的偏移量
  unsigned long length   字节数
  unsigned long crc   32比特头和有效载荷
  unsigned char data[]   有效载荷
  表5.0——典型媒介选择层信息
  unsigned short src_nd_4_dst   远程节点的本地节点描述符
  unsigned short dst_nd_4_src   本地节点的远程节点描述符
  unsigned long src_conn_id   本地生成的连接标识符
  unsigned long dst_conn_id   远程生成的连接标识符
  unsigned long src_seq_num   指示当前分组所属的传输请求的序列号
  unsigned long qos_type   用于在远程节点上重建媒介选择的媒介选择层信息
图8所示为描述远程传输层460执行典型数据接收的流程图。开始时,在步骤802,分组由远程节点上的装置驱动器接收并被发送至远程网络管理器430的远程传输层460。该接收的分组包括定义指向传输中的下一分组、分组长度、头和数据缓冲器、物理地址等的指针的元素。接收的分组的典型数据字段如表6.0中所示。可选地,可在步骤804执行本领域所知的错误检测以使分组生效。其它元素可被替换或添加。
  表6.0——典型的接收到的分组数据字段
  struct rx_pkt *next   指向序列中下一个接收的分组的指针
  int total_length   头和数据长度
  struct 14_pkt *hdr   分配的传输层分组头部缓冲器
  char *data   分配的用户数据缓冲器
  struct sockaddr raddr   本地节点的物理地址
远程传输层460可连续接收分组,直到整个传输被接收。整个传输可随后在步骤808被传送到执行媒介连接服务或依情况转发用户数据到适当目的地的远程媒介选择层450。因此,远程传输层460可在步骤806判断传输是否为单个分组传输。诸如连接管理分组和小用户数据传输的单个分组传输可在步骤808被直接传递到用于进一步处理的远程媒介选择层450。可通过在分组头部中设置开始和结束标记将传输指定为单个分组传输。一般来说,传输可通过例如将传输加入接收的传输的队列而被传递到远程媒介选择层450。例如,该队列可被实现为指向由远程节点描述符的末端X比特指示的接收的序列结构的链表的指针数组。接收的分组队列结构的典型数据字段在表7.0中显示。
  表7.0——典型接收传输队列数据字段
  int 14_index   识别接收该分组的传输层实例
  int qos_pkt   表不该分组为媒介选择层分组或传输层分组的标志
  int layer   调用以接收该分组的函数
  struct sockaddr raddr   远程节点传输层的本地物理地址
  struct qos_info qos_info   以下iov字段的媒介选择层信息
  int niov   下列数组中的iov的总数
  iov_tiov[]   分段数组
如果传输包括多个分组,则远程传输层可在步骤810重建该传输。例如,传输可被重建到接收的序列数据结构中。典型的接收的序列结构可被实现为给定节点描述符/连接标识符组合的接收分组的链表。该接收序列结构也可包括定义用于连接的唯一节点描述符和连接标识符、物理地址等的元素。远程传输层460可使用连接标识符,并且在步骤812,接收的分组的序列号可被用于查询预先存在的接收的序列结构。如果需要,在步骤814,新接收的序列结构被分配且被加入指针数组,随后,在步骤816,接收的分组随后被插入接收的序列结构。远程传输层460可查看接收的序列结构以顺序,即,以偏移量的顺序插入该分组。可替换地,或可附加地,该分组可被插入该结构中的任何位置。
在步骤818接收到传输的最后分组时,如由本地网络管理器124所发送,远程传输层460可在步骤S820查看接收的序列结构以验证传输已经完成。传输的最后分组可经由分组头部中的标志(flag)同样指定。如果传输完成,远程传输层460可在步骤824传输表示成功传送的ACK分组。可选地,远程传输层460可在步骤S826传输表示传输的一个或多个分组丢失的NACK分组。该NACK分组可包括描述丢失分组的空洞(hole)列表。典型空洞列表可通过由传输序列中的偏移量和长度来描述空洞而被实现,以包括传输中空洞的总数和定义列表中各空洞的数据结构。
再次参照图7,在传输了最后分组后,本地传输层430在步骤710等待来自远程传输层460的响应。本地传输层430可在步骤712接收指示成功传输的ACK分组。在此情况下,本地传输层430可向媒介选择层420指示成功。可替换地,本地传输层430可在步骤714接收指示丢失分组的NACK分组。在此情况下,可在步骤716重建并重传所引用的分组。如果在步骤718处判断给定时间后仍没有接收到响应,则本地传输层可在步骤720重建并重传序列的最后分组,且在步骤722再次等待响应。最后的分组可触发远程节点重新查看其接收到的序列,并发送ACK或NACK分组。这可允许本地节点抢修未完成的传输,在其中,发生通信中断,防止最后分组或响应分组丢失。如果在步骤724再次出现超时,则本地传输层430可在步骤726通知本地媒介选择层420。作为响应,本地媒介选择层420可从可用接口池中去除该接口,并用检测分组周期性地轮询该接口以确定其以后的可用性。典型检测的分组可包括上述TCS_UP分组。
尽管已经说明了本发明的多种实施例,对本领的那些普通技术人员来说,在本发明的范围内,存在更多实施例和实施方式。因此,本发明除了遵照所附权利要求及其等价替换外,并不受到限制。

Claims (34)

1.一种用于在分布式操作系统的节点之间建立连接的方法,其包括:
由本地节点生成对远程节点的传输请求;
通过所述本地节点向所述远程节点传输初始分组,所述初始分组包括
指示所述远程节点的本地节点描述符,和
本地连接标识符;
由所述远程节点接收所述初始分组;
由所述远程节点生成与所述本地节点描述符相关的接收连接结构;
响应于所述初始分组的接收,向所述本地节点传输确认分组以建立所述传输连接,所述确认分组包括
所述本地节点描述符,
所述本地连接标识符,
指示所述本地节点的远程节点描述符,和
远程连接标识符;以及
由所述本地节点接收所述确认分组。
2.如权利要求1所述的方法,其特征在于,所述本地连接标识符和所述远程连接标识符包括单调增加的计数器。
3.如权利要求1所述的方法,其还包括执行以下步骤的所述本地节点:
生成多个对所述远程节点的传输请求;和
顺序地服务于所述多个传输请求。
4.如权利要求1所述的方法,其还包括执行以下步骤的所述本地节点:
生成能存储所述本地节点描述符和所述本地连接标识符的传输连接结构。
5.如权利要求4所述的方法,其还包括:
由所述本地节点生成所述多个传输请求的队列;和
在所述传输连接结构中存储所述传输请求的队列。
6.如权利要求1所述的方法,其还包括在所述阈值时间段期满后轮询所述远程节点。
7.如权利要求6所述的方法,其还包括如果没有接收到对所述轮询的响应则拆除所述传输连接。
8.如权利要求1所述的方法,其特征在于,所述接收连接结构能够存储所述本地节点描述符、所述本地连接标识符、所述远程节点描述符以及所述远程连接标识符。
9.一种在计算机可读介质上实现的分布式操作系统,其包括:
包括在本地处理器上运行的本地线程的本地节点,所述本地节点可进行传递消息和接收消息;
经由多个网络与所述本地节点进行通信的远程节点,所述远程节点包括运行在远程处理器上的远程线程,所述远程节点可进行传递消息和接收消息;
其特征在于,所述本地节点还可进行:
响应于接收来自所述本地线程的传输请求而建立与所述远程节点的节点到节点的连接,所述节点到节点的连接与本地连接标识符和远程连接标识符相关,所述本地连接标识符与所述本地节点相关,所述远程连接标识符与所述远程节点相关,
管理在多个网络接口上的从所述本地节点到所述远程节点的消息传递,以及
从所述远程节点接收消息并向所述本地线程转发所述消息,
所述远程节点还可进行:
建立与所述本地节点的所述节点到节点的连接,以及
从所述本地节点接收消息,并将所述消息转发到所述远程线程。
10.如权利要求9所述的操作系统,其特征在于,所述本地连接标识符和所述远程连接标识符包括单调增加的计数器。
11.如权利要求9所述的操作系统,其特征在于,所述本地节点还可进行:
生成对所述远程节点的多个传输请求;和
顺序地服务于所述多个传输请求。
12.如权利要求9所述的操作系统,其特征在于,所述本地节点还可进行:
生成能够存储所述本地连接标识符的传输连接结构。
13.如权利要求12所述的操作系统,其特征在于,所述本地节点还可进行:
生成所述多个传输请求的队列;和
在所述传输连接结构中存储所述传输请求的队列。
14.如权利要求9所述的操作系统,其特征在于,所述本地节点还可在阈值时间段期满后用于轮询所述远程节点。
15.如权利要求14所述的操作系统,其特征在于,如果没有接收到对所述轮询的响应,所述本地节点还可用于拆除所述节点到节点的连接。
16.如权利要求9所述的操作系统,其特征在于,所述远程节点还可用于生成能够存储所述本地连接标识符和所述远程连接标识符的接收连接结构。
17.如权利要求9所述的操作系统,其特征在于,所述节点到节点的连接通过从所述本地节点传输初始分组到所述远程节点来建立,所述初始分组包括所述本地连接标识符。
18.如权利要求17所述的操作系统,其特征在于,所述节点到节点的连接通过响应于所述初始分组从所述远程节点到所述本地节点传输确认分组来建立,所述确认分组包括所述远程连接标识符。
19.一种在计算机可读介质上实现的分布式操作系统,其包括:
包括运行在本地处理器上的本地线程的本地节点,所述本地节点可进行从所述本地节点传递消息和在所述本地节点接收消息;
经由多个网络接口与所述本地节点进行通信的远程节点,所述远程节点包括运行在远程处理器上的远程线程,所述远程节点可进行从所述远程节点传递消息和在所述远程节点接收消息;
其特征在于,所述本地节点还可进行:
建立与所述远程节点的节点到节点的连接以响应于从所述本地线程接收传输请求,
管理在所述多个网络接口上从所述本地节点到所述远程节点的消息传递,和
从所述远程节点接收消息和向所述本地线程转发所述消息,
所述远程节点还可进行:
建立与所述本地节点的所述节点到节点的连接,和
从所述本地节点接收消息并向所述远程线程转发所述消息;
所述节点到节点的连接通过以下步骤被建立:
由本地节点生成对远程节点的传输请求,并且由所述本地节点向所述远程节点传输初始分组,所述初始分组包括
可指示所述远程节点的本地节点描述符,和
本地连接标识符;
由远程节点接收所述初始分组;
由所述远程节点生成与所述本地节点描述符相关的接收连接结构;
响应于所述初始分组的所述接收,由所述远程节点向所述本地节点传输确认分组以建立所述传输连接,所述确认分组包括
所述本地节点描述符,
所述本地连接标识符,
指示所述本地节点的远程节点描述符,和
远程连接标识符;以及
由所述本地节点接收所述确认分组。
20.如权利要求19所述的操作系统,其特征在于,所述本地连接标识符和所述远程连接标识符包括单调增加的计数器。
21.如权利要求19所述的方法,其特征在于,所述本地节点还可进行:
生成对所述远程节点的多个传输请求;和
顺序地服务于所述多个传输请求。
22.如权利要求19所述的操作系统,其特征在于,所述本地节点还可进行:
生成能够存储所述本地节点描述符和所述本地连接标识符的传输连接结构。
23.如权利要求22所述的操作系统,其特征在于,所述本地节点还可进行:
由所述本地节点生成所述多个传输请求的队列;和
在所述传输连接结构中存储所述传输请求的队列。
24.如权利要求19所述的操作系统,其特征在于,所述本地节点还可进行:
在所述阈值时间段期满后,轮询所述远程节点。
25.如权利要求24所述的方法,其特征在于,所述本地节点还可进行:
如果未接收到对所述轮询的响应,拆除所述传输连接。
26.如权利要求19所述的操作系统,其特征在于,所述接收连接结构能够存储所述本地节点描述符、所述本地连接标识符、所述远程节点描述符和所述远程连接标识符。
27.一种管理分布式消息传递操作系统中的节点之间通信的方法,所述方法包括:
在本地节点生成向远程节点传输数据的传输请求,所述本地节点和所述远程节点能够经由第一接口和第二接口两者进行通信;
建立所述本地节点和远程节点之间的连接,所述连接与本地连接标识符以及远程连接标识符相关,所述本地连接标识符与所述本地节点相关,而所述远程连接标识符与所述远程节点相关;
在所述连接上传输数据;
在传输所述数据后由所述本地节点向所述远程节点经由所述第一接口和所述第二接口两者传输轮询分组,所述轮询分组包括所述本地连接标识符和所述远程连接标识符;和
基于对所述轮询分组的响应是否被接收判断所述第一和第二接口是否可运行。
28.如权利要求27所述的方法,其特征在于,所述本地连接标识符和所述远程连接标识符包括单调增加的计数器。
29.如权利要求27所述的方法,其还包括执行以下步骤的所述本地节点:
生成对所述远程节点的多个传输请求;和
顺序地服务于所述多个传输请求。
30.如权利要求27所述的方法,其还包括执行以下步骤的所述本地节点:
生成能够存储所述本地节点描述符和所述本地连接标识符的传输连接结构。
31.如权利要求30所述的方法,其还包括:
由所述本地节点生成所述多个传输请求的队列;和
在所述传输连接结构中存储所述传输请求的队列。
32.如权利要求27所述的方法,其还包括在所述阈值时间段期满后轮询所述远程节点。
33.如权要求32所述的方法,其还包括如果未接收到对所述轮询的响应则拆除所述传输连接。
34.如权利要求27所述的方法,其特征在于,所述接收连接结构能够存储所述本地节点描述符、所述本地连接标识符、所述远程节点描述符和所述远程连接标识符。
CN2006100885161A 2005-06-03 2006-06-01 改进型分布式核心操作系统 Active CN1881945B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/145,293 2005-06-03
US11/145,293 US7840682B2 (en) 2005-06-03 2005-06-03 Distributed kernel operating system

Publications (2)

Publication Number Publication Date
CN1881945A true CN1881945A (zh) 2006-12-20
CN1881945B CN1881945B (zh) 2012-07-04

Family

ID=36981169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100885161A Active CN1881945B (zh) 2005-06-03 2006-06-01 改进型分布式核心操作系统

Country Status (6)

Country Link
US (3) US7840682B2 (zh)
EP (1) EP1729481A3 (zh)
JP (1) JP2006338666A (zh)
KR (1) KR101365838B1 (zh)
CN (1) CN1881945B (zh)
CA (1) CA2547880C (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107005531A (zh) * 2014-12-22 2017-08-01 英特尔公司 用于与处理在网络设备处接收到的分组相关联的功率管理的技术
CN108234302A (zh) * 2016-12-21 2018-06-29 丛林网络公司 保持网络装置用的分布式操作系统中的一致性
CN111726356A (zh) * 2014-09-17 2020-09-29 微软技术许可有限责任公司 用于建立设备连接的方法和设备
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7840682B2 (en) 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
WO2007023010A2 (en) * 2005-08-25 2007-03-01 International Business Machines Corporation Method and system for displaying performance constraints in a flow design tool
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US8176525B2 (en) * 2006-09-29 2012-05-08 Rockstar Bidco, L.P. Method and system for trusted contextual communications
US8509081B2 (en) * 2008-05-01 2013-08-13 Saudi Arabian Oil Company Adaptive hybrid wireless and wired process control system and method
CN101621405B (zh) * 2009-07-07 2012-02-29 中兴通讯股份有限公司 分布式管理监控系统及其监控方法、创建方法
US8881256B1 (en) * 2011-12-21 2014-11-04 Amazon Technologies, Inc. Portable access to auditing information
GB2502277B (en) * 2012-05-21 2015-07-08 Rosberg System As Data communication network
US10073987B2 (en) 2013-04-02 2018-09-11 Western Digital Technologies, Inc. Methods and systems for privileged execution support for file system commands on a storage device
US10819759B2 (en) * 2015-04-30 2020-10-27 At&T Intellectual Property I, L.P. Apparatus and method for managing events in a computer supported collaborative work environment
US11006160B2 (en) * 2015-08-24 2021-05-11 Microsoft Technology Licensing, Llc Event prediction enhancements
CN107733945B (zh) * 2016-08-11 2019-03-12 北京百度网讯科技有限公司 用于机器人操作系统的信息传输方法及装置
US10742359B2 (en) * 2018-08-30 2020-08-11 Dell Products, L.P. Apparatus and method for improving messaging system reliability
US10785346B1 (en) * 2019-04-08 2020-09-22 2236008 Ontario Inc. Unblocking processes in interprocess messaging passing
US11632326B1 (en) * 2021-06-15 2023-04-18 Amazon Technologies, Inc. Selection of network paths for reliable communications based on network reliability metrics

Family Cites Families (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5253342A (en) 1989-01-18 1993-10-12 International Business Machines Corporation Intermachine communication services
EP0490595B1 (en) 1990-12-14 1998-05-20 Sun Microsystems, Inc. Method for operating time critical processes in a window system environment
US5442785A (en) 1991-10-08 1995-08-15 Unisys Corporation Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor
US5428803A (en) 1992-07-10 1995-06-27 Cray Research, Inc. Method and apparatus for a unified parallel processing architecture
US5410709A (en) 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
EP0604010B1 (en) 1992-12-21 1999-12-29 Sun Microsystems, Inc. Method and apparatus for subcontracts in distributed processing systems
US6157961A (en) 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
EP0613083B1 (en) 1993-02-25 2002-01-23 Sun Microsystems, Inc. Transaction management in object oriented systems
JP3212007B2 (ja) 1993-04-26 2001-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション オペレーティング・システム環境の起動方法およびシステム
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
GB9323241D0 (en) 1993-11-11 1994-01-05 Int Computers Ltd Message handler
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
WO1995027248A1 (en) 1994-03-30 1995-10-12 Apple Computer, Inc. Object oriented message passing system and method
JPH08180001A (ja) 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US5574903A (en) 1994-05-13 1996-11-12 Apple Computer, Inc. Method and apparatus for handling request regarding information stored in a file system
US5734903A (en) 1994-05-13 1998-03-31 Apple Computer, Inc. System and method for object oriented message filtering
US5566337A (en) 1994-05-13 1996-10-15 Apple Computer, Inc. Method and apparatus for distributing events in an operating system
JP2507235B2 (ja) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
EP0701205B1 (en) * 1994-07-22 2003-05-14 Sun Microsystems, Inc. Method and apparatus for space-efficient inter-process communication
US5745759A (en) 1994-10-14 1998-04-28 Qnx Software Systems, Ltd. Window kernel
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5644719A (en) 1994-12-16 1997-07-01 Unisys Corporation Interprocess communication apparatus interposed between application processes and the operating systems of hosting computers in a system of networked computers
US5634068A (en) 1995-03-31 1997-05-27 Sun Microsystems, Inc. Packet switched cache coherent multiprocessor system
US5768511A (en) * 1995-09-18 1998-06-16 International Business Machines Corporation Method and system for managing objects in networked computer system with action performed in the server and object updated in the client
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5802288A (en) 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers
KR0170500B1 (ko) 1995-11-18 1999-03-30 양승택 멀티프로세서 시스템
US6064671A (en) 1995-12-08 2000-05-16 Killian; Michael G. Multi-homed end system for increasing computers network bandwidth
US5694600A (en) 1996-02-09 1997-12-02 Iomega Corporation Methods and apparatus for booting a computer having a removable media disk drive
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6049838A (en) 1996-07-01 2000-04-11 Sun Microsystems, Inc. Persistent distributed capabilities
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6434459B2 (en) 1996-12-16 2002-08-13 Microsoft Corporation Automobile information system
US6226689B1 (en) * 1997-01-29 2001-05-01 Microsoft Corporation Method and mechanism for interprocess communication using client and server listening threads
US5978912A (en) 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US6006283A (en) * 1998-02-10 1999-12-21 Lsi Logic Corporation System and method for managing information exchanges in a disk interface chip
JPH11249918A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
JPH11249898A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
US6167430A (en) 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
US6647423B2 (en) 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
KR20000008628A (ko) 1998-07-15 2000-02-07 구자홍 컴퓨터 시스템의 부팅음악 출력방법
US6412018B1 (en) 1998-08-19 2002-06-25 International Business Machines Corporation System for handling asynchronous message packet in a multi-node threaded computing environment
US6415332B1 (en) 1998-08-19 2002-07-02 International Business Machines Corporation Method for handling of asynchronous message packet in a multi-node threaded computing environment
US6385659B1 (en) 1998-08-19 2002-05-07 International Business Machines Corporation Handling of asynchronous message packet in a multi-node threaded computing environment
CA2245963C (en) 1998-08-26 2009-10-27 Qnx Software Systems Ltd. Distributed kernel operating system
US6321279B1 (en) 1998-09-14 2001-11-20 Compaq Computer Corporation System for implementing intelligent I/O processing in a multi-processor system by redirecting I/O messages to a target central processor selected from the multi-processor system
US6466996B1 (en) 1998-09-14 2002-10-15 Compaq Information Technologies Group, L.P. Method and system for implementing intelligent distributed input-output processing as a software process in a host operating system environment
US6757745B1 (en) 1998-10-19 2004-06-29 Siemens Aktiengesellschaft Distributed operating system for controlling network element in a data or telecomunication network
US6519594B1 (en) 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6389462B1 (en) 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6272629B1 (en) 1998-12-29 2001-08-07 Intel Corporation Method and apparatus for establishing network connection for a processor without an operating system boot
US6353885B1 (en) 1999-01-26 2002-03-05 Dell Usa, L.P. System and method for providing bios-level user configuration of a computer system
US6748452B1 (en) 1999-03-26 2004-06-08 International Business Machines Corporation Flexible interprocess communication via redirection
US6757903B1 (en) 1999-04-05 2004-06-29 Gateway, Inc. Object driven software architecture method and apparatus
US6487455B1 (en) 1999-09-30 2002-11-26 Rockwell Automation Technologies, Inc. Distributed real time operating system
US6259264B1 (en) * 1999-08-30 2001-07-10 Agere Systems Optoelectronics Guardian Corp. Apparatus and method for testing semiconductor laser chips
US6731601B1 (en) * 1999-09-09 2004-05-04 Advanced Micro Devices, Inc. Apparatus and method for resetting a retry counter in a network switch port in response to exerting backpressure
DE60038448T2 (de) 1999-10-14 2009-04-02 Bluearc Uk Ltd. Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US20020161848A1 (en) 2000-03-03 2002-10-31 Willman Charles A. Systems and methods for facilitating memory access in information management environments
US6757904B1 (en) 2000-03-10 2004-06-29 Microsoft Corporation Flexible interface for communicating between operating systems
US6757242B1 (en) * 2000-03-30 2004-06-29 Intel Corporation System and multi-thread method to manage a fault tolerant computer switching cluster using a spanning tree
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6807564B1 (en) * 2000-06-02 2004-10-19 Bellsouth Intellectual Property Corporation Panic button IP device
US6785892B1 (en) 2000-06-23 2004-08-31 Unisys Communications between partitioned host processors and management processor
US6981055B1 (en) 2000-08-22 2005-12-27 Internap Network Services Corporation Method and system for optimizing routing through multiple available internet route providers
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6981244B1 (en) 2000-09-08 2005-12-27 Cisco Technology, Inc. System and method for inheriting memory management policies in a data processing systems
US7133929B1 (en) 2000-10-24 2006-11-07 Intel Corporation System and method for providing detailed path information to clients
KR100471055B1 (ko) 2000-11-17 2005-03-07 삼성전자주식회사 컴퓨터 및 그 제어방법
US7058955B2 (en) 2000-12-06 2006-06-06 Microsoft Corporation Method and system for passing messages between threads
US7051326B2 (en) 2000-12-13 2006-05-23 International Business Machines Corporation Code image distribution in a multi-node network of processors
US6801994B2 (en) 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US6775235B2 (en) 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US6988140B2 (en) 2001-02-23 2006-01-17 Sun Microsystems, Inc. Mechanism for servicing connections by disassociating processing resources from idle connections and monitoring the idle connections for activity
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US20020129172A1 (en) 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6886031B2 (en) 2001-03-29 2005-04-26 Sun Microsystems, Inc. Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs
US7243160B2 (en) 2001-05-10 2007-07-10 Intel Corporation Method for determining multiple paths between ports in a switched fabric
US6947417B2 (en) * 2001-06-29 2005-09-20 Ip Unity Method and system for providing media services
US7161939B2 (en) * 2001-06-29 2007-01-09 Ip Unity Method and system for switching among independent packetized audio streams
WO2003017601A1 (en) * 2001-08-18 2003-02-27 Smallbig Technology Inc. An apparatus connected multi ip broadband line and packet routing method thereof
GB2379039B (en) 2001-08-22 2005-03-23 Ibm Transaction processing in a distributed data processing system
US7016348B2 (en) * 2001-08-28 2006-03-21 Ip Unity Method and system for direct access to web content via a telephone
US6978018B2 (en) 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
US20030115366A1 (en) 2001-12-18 2003-06-19 Robinson Brian R. Asynchronous message delivery system and method
US6993746B2 (en) 2002-04-19 2006-01-31 Wind River Systems, Inc. Configuration tool for building a user application for multiple operating systems
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US7058717B2 (en) 2002-07-25 2006-06-06 International Business Machines Corporation Method and system for providing highly available services based on a load balancing policy and a reusable connection context object
US7219149B2 (en) 2003-06-12 2007-05-15 Dw Holdings, Inc. Versatile terminal adapter and network for transaction processing
US20040133668A1 (en) 2002-09-12 2004-07-08 Broadcom Corporation Seamlessly networked end user device
US7103745B2 (en) 2002-10-17 2006-09-05 Wind River Systems, Inc. Two-level operating system architecture
US7124211B2 (en) 2002-10-23 2006-10-17 Src Computers, Inc. System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system
TW588284B (en) 2002-11-12 2004-05-21 Mitac Technology Corp Computer real-time power-on system and method
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US20040143696A1 (en) 2003-01-21 2004-07-22 Francis Hsieh Data storage system for fast booting of computer
JP3861828B2 (ja) 2003-02-26 2006-12-27 カシオ計算機株式会社 カメラ装置、及びカメラ装置の起動方法、プログラム
AU2004217278B2 (en) 2003-03-05 2011-03-17 Websense Uk Limited Asynchronous mechanism and message pool
US20040216135A1 (en) 2003-04-23 2004-10-28 Heimbeck Reid D. Selective user input notification for multiple applications
US7724671B2 (en) * 2003-05-13 2010-05-25 Intel-Tel, Inc. Architecture for resource management in a telecommunications network
US7475233B2 (en) 2003-05-20 2009-01-06 Intel Corporation Method and apparatus for displaying a language specific text string in a pre-boot environment
JP3906825B2 (ja) 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
US6959264B2 (en) 2003-09-30 2005-10-25 International Business Machines Corporation Autonomous computing probe agent
US7174447B2 (en) 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
US8065280B2 (en) 2003-12-17 2011-11-22 International Business Machines Corporation Method, system and computer program product for real-time data integrity verification
US7266727B2 (en) 2004-03-18 2007-09-04 International Business Machines Corporation Computer boot operation utilizing targeted boot diagnostics
US20050268300A1 (en) 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
KR100654433B1 (ko) 2004-05-18 2006-12-06 삼성전자주식회사 무선 네트워크의 정보 처리 장치 및 방법
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US20060095724A1 (en) 2004-10-28 2006-05-04 Microsoft Corporation Message-passing processor
US7343454B2 (en) 2004-11-16 2008-03-11 International Business Machines Corporation Methods to maintain triangle ordering of coherence messages
US7512957B2 (en) 2004-12-03 2009-03-31 Microsoft Corporation Interface infrastructure for creating and interacting with web services
US7549151B2 (en) 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7590839B2 (en) 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US20060227703A1 (en) 2005-04-08 2006-10-12 Wen-Chi Hung Operating method for dynamic physical network layer monitoring
US7356628B2 (en) 2005-05-13 2008-04-08 Freescale Semiconductor, Inc. Packet switch with multiple addressable components
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US7461247B2 (en) 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7680096B2 (en) 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111726356A (zh) * 2014-09-17 2020-09-29 微软技术许可有限责任公司 用于建立设备连接的方法和设备
CN111726356B (zh) * 2014-09-17 2022-08-05 微软技术许可有限责任公司 用于建立设备连接的方法和设备
CN107005531A (zh) * 2014-12-22 2017-08-01 英特尔公司 用于与处理在网络设备处接收到的分组相关联的功率管理的技术
CN108234302A (zh) * 2016-12-21 2018-06-29 丛林网络公司 保持网络装置用的分布式操作系统中的一致性
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11265216B2 (en) 2016-12-21 2022-03-01 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11316775B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US11924044B2 (en) 2016-12-21 2024-03-05 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state

Also Published As

Publication number Publication date
KR20060126374A (ko) 2006-12-07
JP2006338666A (ja) 2006-12-14
US20120179777A1 (en) 2012-07-12
US8078716B2 (en) 2011-12-13
CA2547880A1 (en) 2006-12-03
CA2547880C (en) 2016-10-25
US20110035502A1 (en) 2011-02-10
US8386586B2 (en) 2013-02-26
US7840682B2 (en) 2010-11-23
US20060277285A1 (en) 2006-12-07
CN1881945B (zh) 2012-07-04
EP1729481A3 (en) 2007-09-19
EP1729481A2 (en) 2006-12-06
KR101365838B1 (ko) 2014-02-21

Similar Documents

Publication Publication Date Title
CN1881945B (zh) 改进型分布式核心操作系统
CN1881944B (zh) 改进型分布式核心操作系统
JP3833847B2 (ja) パケットベースの通信ネットワークにおけるメッセージ受信の肯定応答システム及び方法
US8165041B2 (en) Peer to multi-peer routing
CA2655545A1 (en) Secure handle for intra-and inter-processor communications
US7693998B2 (en) System and method for message-based scalable data transport
CN112073456B (zh) 分布式锁的实现方法、相关设备及系统
CN111522656A (zh) 一种边缘计算数据调度与分布方法
US6983334B2 (en) Method and system of tracking missing packets in a multicast TFTP environment
US7568034B1 (en) System and method for data distribution
US7010548B2 (en) Sparse and non-sparse data management method and system
CN111385069A (zh) 数据传输方法及计算机设备
US20040240388A1 (en) System and method for dynamic assignment of timers in a network transport engine
CN1666183A (zh) 在网络中传递状态信息
CN115885270A (zh) 网络连接的可交换队列类型
Terry et al. The COSIE communications subsystem: support for distributed office applications
JP3168254B2 (ja) 分散処理におけるメッセージ処理方式
CN117354370A (zh) 面向分布式应用程序的通用网内同步聚合方法、系统及设备
CN1692666A (zh) 用于执行位置相关认证的方法
ARNOLD Reliable Multicast in Helios
Rough et al. The GENESIS Reliable Group Communications Facility

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: 7801769 CANADIAN COMPANY

Free format text: FORMER OWNER: QNX SOFTWARE SYSTEMS GMBH + CO.

Effective date: 20111108

Owner name: QNX SOFTWARE SYSTEMS CO., LTD.

Free format text: FORMER OWNER: 7801769 CANADIAN COMPANY

Effective date: 20111108

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20111108

Address after: Ontario, Canada

Applicant after: QNX Software Systems Ltd.

Address before: Ontario, Canada

Applicant before: 7801769 Canadian Co.

Effective date of registration: 20111108

Address after: Ontario, Canada

Applicant after: 7801769 Canadian Co.

Address before: Hannover

Applicant before: QNX Software Systems GmbH & Co.KG

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: 2236008 ONTARIO INC.

Free format text: FORMER OWNER: 8758271 CANADIAN INC.

Effective date: 20140731

Owner name: 8758271 CANADIAN INC.

Free format text: FORMER OWNER: QNX SOFTWARE SYSTEMS CO., LTD.

Effective date: 20140731

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20140731

Address after: Ontario

Patentee after: 2236008 ONTARIO Inc.

Address before: Ontario

Patentee before: 8758271 Canadian Ex-plosives Ltd

Effective date of registration: 20140731

Address after: Ontario

Patentee after: 8758271 Canadian Ex-plosives Ltd

Address before: Ontario, Canada

Patentee before: QNX Software Systems Ltd.

TR01 Transfer of patent right

Effective date of registration: 20200527

Address after: Voight, Ontario, Canada

Patentee after: BlackBerry Ltd.

Address before: Rika Univ.

Patentee before: 2236008 Ontario Inc.

TR01 Transfer of patent right