CN102047240A - 数据流网络 - Google Patents

数据流网络 Download PDF

Info

Publication number
CN102047240A
CN102047240A CN2009801212391A CN200980121239A CN102047240A CN 102047240 A CN102047240 A CN 102047240A CN 2009801212391 A CN2009801212391 A CN 2009801212391A CN 200980121239 A CN200980121239 A CN 200980121239A CN 102047240 A CN102047240 A CN 102047240A
Authority
CN
China
Prior art keywords
data
interface
source
target
target interface
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
CN2009801212391A
Other languages
English (en)
Other versions
CN102047240B (zh
Inventor
N·古斯塔夫松
D·卡拉汉
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102047240A publication Critical patent/CN102047240A/zh
Application granted granted Critical
Publication of CN102047240B publication Critical patent/CN102047240B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • User Interface Of Digital Computer (AREA)
  • Complex Calculations (AREA)
  • Supply And Distribution Of Alternating Current (AREA)
  • Image Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

提供了用于按通用、灵活和可扩展的方式将进程连接到进程网络中的被称为源-目标模式的合成模型。该模型允许常见进程代数构造与数据流网络组合来形成进程网络。进程代数操作可用合成模型来表达以形成提供进程之间的完全互操作进程代数操作的数据流网络。

Description

数据流网络
背景
计算机系统可允许并发地执行程序的多个进程。进程的并发执行可允许更快或更高效地执行程序以提高计算机系统的吞吐量。
在实现控制流模型的进程中,控制流逻辑描述了程序状态的一组条件和修改并可由例如流程图来组织。术语“进程代数”用于指代用于推理关于进程如何彼此通信来合作解决共享的问题以及如何控制进程的生存期的方法。虽然进程代数与进程的内部状态修改原语可有很大程度的不同,但通常存在进程间通信驱动内部流程图的交互点。进程之间的这些交互点在某些程序中可能是复杂的。复杂的交互点可使调度进程以供并发执行变得困难并导致程序的执行未达到最优。
概述
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了用于按通用、灵活和可扩展的方式将进程连接到进程网络中的被称为源-目标模式的合成模型。该模型允许常见进程代数构造与数据流网络组合来形成进程网络。进程代数操作可用合成模型来表达以形成提供进程之间的完全互操作进程代数操作的数据流网络。该模型可应用于大量简单数据流网络以及更复杂的数据流网络。
附图简述
包括、合并在本发明书内并构成其一部分的附图提供了对各实施例的进一步理解。附图示出各实施例,并且与说明书一起用于解释本发明的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。
图1A-1C是示出供在数据流网络中使用的源和目标接口的实施例的框图。
图2A-2C是示出数据流网络的节点的实施例的框图。
图3是示出具有连接到进程的数据流网络的进程网络的一实施例的框图。
图4是示出具有连接到数据流网络的进程的进程网络的一实施例的框图。
图5是示出被配置成实现发送操作的始发者块的一实施例的框图。
图6是示出被配置成实现接收操作的触发器块的一实施例的框图。
图7是示出进程网络的一实施例的框图。
图8是示出被配置成实现选择和联结操作的数据流网络的一实施例的框图。
图9是示出进程网络的一实施例的框图。
图10是示出进程网络的一实施例的框图。
图11是示出被配置成实现带有进程调度器的运行时环境的计算机系统的一实施例的框图。
详细描述
在以下详细描述中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本发明的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、“后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为各实施例的各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本发明的范围。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求来限定。
应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。
图1A是示出包括通过链接16连接的源接口12和目标接口14的源-目标模式10的一实施例的框图。
源-目标模式10提供用于创建将在计算机系统(例如,图11中示出的计算机系统100)上执行的程序的任意数量的进程(例如,图3和4中示出的进程40)连接到进程网络中的数据流网络(例如,图3和4中示出的数据流网络32)的一组操作。数据流网络形成进程代数构造,如发送、接收、选择、联结及其组合,来允许数据在进程之间传递。源-目标模式10提供用于在源接口12和目标接口14之间传递数据的协议以允许在数据流网络中实现进程代数构造。
源-目标模式10允许在进程不具有或具有最少关于另一进程的知识的情况下连接进程。一个进程可在没有其他进程的任何知识的情况下使用源-目标模式10向另一进程提供数据。类似地,一个进程可在没有其他进程的任何知识的情况下使用源-目标模式10从另一进程接收数据。每一进程包括存储在计算机可读存储介质(例如,图11中示出的存储器系统104)中并可由计算机系统执行的指令集。进程之间传递的数据可包括任何类型的数据,包括指针、地址或其他结构化的或编码的信息。
源接口12包括存储在计算机可读存储介质(例如,图11中示出的存储器系统104)中并可由计算机系统执行来实现链接目标(linktarget)、断开目标链接(unlinktarget)、保留(reserve)、释放(release)和消费(consume)操作的指令,其中源接口12的操作中的每一个由一个或多个目标接口14调用。目标接口14包括存储在计算机可读存储介质(例如,图11中示出的存储器系统104)中并可由计算机系统执行来实现提供(Offer)操作的指令,其中目标接口14的提供操作由一个或多个源接口12调用。
源接口12的链接目标操作在源接口12和调用该链接目标操作的目标接口14之间建立链接16。源接口12的断开目标链接操作断开源接口12和调用该断开目标链接操作的目标接口14之间的链接16。链接目标和断开目标链接操作可各自向从中接收操作调用的目标接口14返回成功或失败指示符,以指示链接16是否成功地建立或断开。
在源接口12和目标接口14之间建立链接16之后,源接口12使用链接16来调用目标接口14的提供操作来将数据提供给目标接口14。响应于该提供调用,目标接口14返回已接受、已拒绝或已推迟中的一个。目标接口14返回已接受来指示目标接口14消费了源接口12所提供的数据。目标接口14返回已拒绝来指示目标接口14对源接口12所提供的数据不感兴趣。目标接口14返回已推迟来指示目标接口14在该时间点没有准备好消费源接口12所提供的数据。
源接口12允许目标接口14使用保留操作来请求先前提供的数据。目标接口14调用保留操作来提出对源接口12提供的但目标接口14推迟的数据的保留。源接口12向从中接收保留调用的目标接口14返回成功或失败指示符来指示保留是否成功。
在保留数据之后,目标接口14或者调用源接口12的释放操作来释放早先提出的保留或者调用消费操作来消费所保留的数据。在源接口12通过向目标接口14提供成功指示符来向目标接口14确认数据保留之后,源接口12为提出保留的目标接口14保存数据直到该数据被提出保留的目标接口14释放或消费。
如图1B所示,每一目标接口14可通过调用每一源接口12(1)-12(M)的链接目标操作来连接到任意数量的源接口12(1)-12(M)以建立相应的链接16(1)-16(M),其中M是大于或等于一的整数且表示第M个源接口12和第M个链接16。因此,每一目标接口14可被提供来自任意数量的源接口12(1)-12(M)的数据。
如图1C所示,每一源接口12可响应于来自每一目标接口14(1)-14(N)的建立相应链接16(1)-16(M)的链接目标操作调用来连接到任意数量的目标接口14(1)-14(N),其中N是大于或等于一的整数且表示第N个目标接口14和第N个链接16。因此,每一源接口12可将数据提供给任意数量的目标接口14(1)-14(N)。
图2A-2C是分别示出数据流网络的节点20的实施例20A、20B和20C的框图。如图2A所示,节点20A可包括一个或多个源接口12(1)-12(P),其中P是大于或等于一的整数且表示第P个源接口12,但没有目标接口14。只有源接口12的节点20A形成数据始发者。如图2B所示,节点20B可包括一个或多个目标接口14(1)-14(Q),其中Q是大于或等于一的整数且表示第Q个目标接口14,但没有源接口12。只有目标接口14的节点20B形成数据汇点。另外,如图2C所示,节点20C可包括一个或多个源接口12(1)-12(P)和一个或多个目标接口14(1)-14(Q)。节点20A、20B和20C中的每一个还可包括被配置成当数据经节点20A、20B和20C传播时变换数据的一个或多个无源处理单元(未示出)。
流过数据流网络的数据使用源-目标模式10从一个节点20被移交给一个或多个其他节点20。数据流网络中的两个节点20的每一连接由一对实现源接口12的节点20(例如,节点20A或节点20C)和实现目标接口14的节点(例如,节点20B或节点20C)来表示。
任意数量的数据流网络组件可使用源-目标模式10来定义,且这些组件可被组合成在很大程度上任意的数据流网络。数据流网络的示例包括无界缓冲区、有界缓冲区、单赋值块、生产者/消费者缓冲区、数据汇点(方法调用)、数据变换、计时器和I/O处理器。数据流网络也可由使用源-目标模式10的更复杂的网络构成。例如,读取者/写入者锁实现或监视器实现可用使用源-目标模式10的数据流网络来表达。
如图3所示,任意数量的进程可将数据提供到数据流网络中,且任意数量的进程可从数据流网络接收数据。图3是示出带有连接到进程40(1)-40(R)和40(R+1)-40(S)的数据流网络32的进程网络30的一实施例的框图,其中R是大于或等于一的整数,S是大于或等于二的整数,R小于S,且表示第R和和第S个进程40。
数据流网络32形成被配置成将数据在进程40(1)-40(R)和进程40(R+1)-40(S)之间传播的无源数据流构造。数据流网络32包括一个或多个目标接口14集合34,一个或多个源接口12集合36,以及包括节点20和无源处理块并将目标接口14集合34与源接口12集合36互连的一组网络组件38。网络组件38可包括将目标接口14集合34与源接口12集合36按任何合适的方式连接的任何合适类型、数量、和/或组合的节点20以及无源处理块。
进程40(1)-40(R)包括一个或多个源接口12的相应集合42(1)-42(R),其中每一集合42可包括与其他集合42相同或不同数量的源接口12。目标接口14集合34在目标接口14集合34和源接口12集合42(1)-42(R)之间建立链接16集合44。如图1B和1C所示,集合44中的每一目标接口14可连接至集合42(1)-42(R)中的任意数量的源接口12,且集合44中的任意数量的目标接口14可连接至集合42(1)-42(R)中的每一源接口12。集合42(1)-42(R)中的每一源接口12通过如上参考图1A所描述的将数据提供给集合44中的一个或多个目标接口14来使得数据从进程40(1)-40(R)被传播到数据流网络32中。进程40(1)-40(R)中的一个或多个还可包括连接至一个或多个其他数据流网络32(未示出)的一个或多个其他源接口12集合(未示出)和/或一个或多个目标接口14集合(未示出)。
进程40(R+1)-40(S)包括一个或多个目标接口14的相应集合46(R+1)-46(S),其中每一集合46可包括与其他集合46相同或不同数量的目标接口14。目标接口14集合46(R+1)-46(S)在目标接口14集合46(R+1)-46(S)与源接口12集合36之间建立链接16集合48。如图1B和1C所示,集合46(R+1)-46(S)中的每一目标接口14可连接至集合36中的任意数量的源接口12,且集合46(R+1)-46(S)中的任意数量的目标接口14可连接至集合36中的每一源接口12。集合36中的每一源接口12通过如上参考图1A所描述的将数据提供给集合46(R+1)-46(S)中的一个或多个目标接口14来使得数据从数据流网络32被传播至进程40(R+1)-40(S)中的一个或多个。进程40(R+1)-40(S)中的一个或多个还可包括连接至一个或多个其他数据流网络32(未示出)的一个或多个其他目标接口14集合(未示出)和/或一个或多个源接口12集合(未示出)。
进程40(1)-40(R)可在没有进程40(R+1)-40(S)的任何知识的情况下使用数据流网络32将数据提供给进程40(R+1)-40(S)。类似地,进程40(R+1)-40(S)可在没有进程40(1)-40(R)的任何知识的情况下使用数据流网络32从进程40(1)-40(R)接收数据。
如图4所示,进程可将数据提供到任意数量的数据流网络中并从任意数量的数据流网络接收数据。图4是示出带有连接到数据流网络32(1)-32(T)和32(T+1)-32(V)的进程40的进程网络50的一实施例的框图,其中T是大于或等于一的整数,V是大于或等于二的整数,T小于V,且表示第T个和第V个数据流网络32。
进程40包括被配置成从数据流网络32(1)-32(T)接收数据并将数据提供给数据流网络32(T+1)-32(V)的程序的指令集。进程40包括一个或多个目标接口14集合54、一个或多个源接口12集合56、以及将目标接口14集合54与源接口12集合56互连的一组进程组件58。进程组件58可包括将目标接口14集合54与源接口12集合56按任何合适的方式连接的任何合适类型、数量、和/或组合的指令和/或数据结构。
数据流网络32(1)-32(T)包括一个或多个源接口12的相应集合62(1)-62(T),其中每一集合62可包括与其他集合62相同或不同数量的源接口12。目标接口14集合54在目标接口14集合54和源接口12集合62(1)-62(T)之间建立链接16集合64。如图1B和1C所示,集合54中的每一目标接口14可连接至集合62(1)-62(T)中的任意数量的源接口12,且集合54中的任意数量的目标接口14可连接至集合62(1)-62(T)中的每一源接口12。集合62(1)-62(T)中的每一源接口12通过如上参考图1A所描述的将数据提供给集合54中的一个或多个目标接口14来使得数据从数据流网络32(1)-32(T)被传播到进程40中。数据流网络32(1)-32(T)各自包括连接至一个或多个其他进程40(未示出)的一个或多个目标接口14集合(未示出)。数据流网络32(1)-32(T)还可包括连接至一个或多个其他进程40(未示出)的一个或多个其他源接口12集合(未示出)和/或一个或多个目标接口14集合(未示出)。
数据流网络32(T+1)-32(V)包括一个或多个目标接口14的相应集合66(T+1)-46(V),其中每一集合66可包括与其他集合66相同或不同数量的目标接口14。目标接口14集合66(T+1)-46(V)在目标接口14集合66(T+1)-46(V)与源接口12集合56之间建立链接16集合68。如图1B和1C所示,集合66(T+1)-46(V)中的每一目标接口14可连接至集合56中的任意数量的源接口12,且集合66(T+1)-46(V)中的任意数量的目标接口14可连接至集合56中的每一源接口12。进程40通过如上参考图1A所描述的使得集合56中的每一源接口12将数据提供个集合66(T+1)-46(V)中的一个或多个目标接口14来使得数据被传播至数据流网络32(T+1)-32(V)中的一个或多个中。数据流网络32(T+1)-32(V)还可包括连接至一个或多个其他进程40(未示出)的一个或多个源接口12集合(未示出)和/或一个或多个目标接口14集合(未示出)。
图5是示出被配置成实现发送操作的始发者块70的一实施例的框图。始发者块70包括源接口12但不包括任何目标接口14。始发者块70被包括在进程40中以允许进程40将数据传播至数据流网络32中。因此,始发者块70通过从进程40接收数据并将数据提供到一个或多个连接的数据流网络32中来实现发送操作。
始发者块70可以与或者可以不与调度进程40以便在计算机系统中执行的底层进程调度器进行交互。因此,始发者块70可不包括到调度器的接口。
图6是示出被配置成实现接收操作的触发器块80的一实施例的框图。触发器块80包括目标接口14但不包括任何源接口12。触发器块80被包括在进程40中以允许进程40从数据流网络32接收数据。触发器块80作为数据流网络32的一个终止点或任意数量的终止点中的一个。因此,触发器块80通过从数据流网络32接收数据并将数据提供给进程40来实现接收操作。
触发器块80还包括调度器接口82。调度器接口82与调度进程40以便在计算机系统中执行的底层进程调度器进行交互。具体地,调度器接口82与调度器一起操作来使得响应于在数据非立即可用时开始涉及触发器块80的接收操作来暂停(例如,阻塞)进程40。调度器接口82还与调度器一起操作来使得响应于涉及触发器块80的接收操作的数据到达触发器块80来恢复(例如,解除阻塞)进程40。
图7是示出包括发送和接收操作的进程网络90的一实施例的框图。在图7中,进程40(1)从进程40(2)接收数据并将数据提供给进程40(3)。为了从进程40(2)接收数据,将数据从进程40(2)的始发者块70(1)提供给进程40(1)的触发器块80(1)且触发器块80(1)如实现接收操作的数据流网络32A所指示地接受数据。进程40(1)对数据执行某些计算并将所得数据发送给进程40(3)。为了将数据发送给进程40(3),进程40(1)的始发者块70(2)将数据提供给进程40(3)的触发器块80(2)且触发器块80(1)如实现发送操作的数据流网络32B所指示地接受数据。
图8是示出被配置成实现选择和联结操作的数据流网络32的一实施例的框图。数据流网络32包括节点20(1)-20(W+1),其中W是大于或等于二的整数并表示第W个节点20、第W个进程40和第W个始发者块70。每一节点20(1)-20(W+1)包括源接口12和目标接口14。节点20(1)-20(W+1)中的目标接口14从相应的进程40(1)-40(W)中的相应的始发者块70(1)-70(W)接收数据。节点20(1)-20(W)中的源接口12各自将数据提供给节点20(W+1)中的目标接口14。节点20(W+1)中的源接口12将数据提供给进程40(W+1)中的触发器块70。
为了实现选择操作,节点20(W+1)只接受来自将数据提供给节点20(W+1)的节点20(1)-20(W)中的第一个的数据并拒绝所有其余节点20(1)-20(W)所提供的数据。节点20(W+1)将数据提供给进程40(W+1)中的触发器块80。
在一个实施例中,每一节点20(1)-20(W)被配置成响应于被提供来自相应的始发者块70(1)-70(W)的数据来使用其相应的源接口12来将其身份作为数据提供给节点20(W+1)。节点20(W+1)使用其目标接口14来接受从节点20(1)-20(W)集合提供的第一个身份并拒绝从节点20(1)-20(W)集合提供的所有后续身份。使用其源接口12来接收来自节点20(W+1)的接受响应的节点20(1)-20(W)使用其目标接口14来接受从相应的始发者块70(1)-70(W)提供的数据。使用其相应的源接口12来接收来自节点20(W+1)的拒绝响应的节点20(1)-20(W)使用其相应的目标接口14来拒绝从相应的始发者块70(1)-70(W)提供的数据。节点20(W+1)使用其源接口12来将所接受的身份作为数据提供给进程40(W+1)中的触发器块70。触发器块70通过接受来自节点20(W+1)的身份来作出响应。进程40(W+1)然后使用从节点20(W+1)接收的身份来检索来自节点20(1)-20(W)的选择操作的数据。
在另一实施例中,节点20(1)-20(W)可被略去且节点20(W+1)可直接从始发者块70(1)-70(W)接收数据。在该实施例中,始发者块70(1)-70(W)将数据提供给节点20(W+1)。节点20(W+1)使用其目标接口14来接受从始发者块70(1)-70(W)集合提供的第一个数据并拒绝从始发者块70(1)-70(W)集合提供的所有后续数据。节点20(W+1)使用其源接口12来将所接受的数据提供给进程40(W+1)中的触发器块70。触发器块70通过接受来自节点20(W+1)的数据来作出响应以完成选择操作。
在其他实施例中,选择操作可以在使用与始发者块70和/或触发器块80的其他组合进行接口的源-目标模式10的其他组合的数据流网络32C中实现。
图9是示出包括选择操作的进程网络92的一实施例的框图。在图9中,选择操作通过包括数据流网络32C来在进程40(4)和进程40(5)和40(6)之间实现。使用数据流网络32C,进程40(4)接受来自将数据提供给数据流网络32C的进程40(5)和40(6)中的第一个的数据。进程40(4)对数据执行某些计算并使用实现发送操作的数据流网络32D将所得数据发送给进程40(7)。
图8的实施例也可用于实现联结操作。为了实现联结操作,节点20(W+1)在将来自所有节点20(1)-20(W)的数据提供给进程40(W+1)中的触发器块80之前等待接受来自所有节点20(1)-20(W)的数据。
在一个实施例中,每一节点20(1)-20(W)被配置成响应于被提供来自相应的始发者块70(1)-70(W)的数据来使用源接口12来将其身份作为数据的一部分提供给节点20(W+1)。节点20(W+1)使用其目标接口14来跟踪所接收的提供以确定何时所有节点20(1)-20(W)都已经提供了其身份。节点20(W+1)使用其目标接口14来响应除最后一个提供之外的所有提供,但有推迟。响应于来自所有节点20(1)-20(W)的提供被接收,节点20(W+1)使用其目标接口14来对除了提供最后一个提供的节点20(1)-20(W)之外的所有节点20(1)-20(W)调用保留操作。节点20(W+1)等待向提供所接收的最后一个提供的节点20(1)-20(W)作出响应直到节点20(W+1)确定所有保留都成功还是有任何保留失败。
接收保留调用的所有节点20(1)-20(W)使用其相应的目标接口14来对相应的始发者块70(1)-70(W)调用保留操作。始发者块70(1)-70(W)通过将成功或失败指示符提供给相应的调用节点20(1)-20(W)来响应保留调用。如果始发者块70不再保存所提供的数据或者所提供的数据由另一节点20(未示出)保留,则始发者块70用失败指示来响应该保留调用。否则,始发者块70用成功指示来响应该保留调用。
节点20(1)-20(W)响应于从相应的始发者块70(1)-70(W)接收失败指示符来检测到失败的保留。节点20(1)-20(W)还可响应于始发者块70(1)-70(W)变为与相应的节点20(1)-20(W)断开连接来检测到失败的保留。检测到失败的保留的每一节点20(1)-20(W)用失败指示符来响应节点20(W+1)的保留调用。从相应的始发者块70(1)-70(W)接收成功指示符的每一节点20(1)-20(W)用成功指示符来响应节点20(W+1)的保留调用。
节点20(W+1)响应于从节点20(1)-20(W)接收失败指示符或者响应于节点20(1)-20(W)中的任一个变为断开连接来检测任何失败的保留。如果节点20(W+1)检测到任何失败的保留,则节点20(W+1)使用其目标接口14来对用成功指示符响应该保留调用的所有节点20(1)-20(W)调用释放操作。节点20(W+1)还将已推迟返回至提供节点20(W+1)所接收的最后一个提供的节点20(1)-20(W)。响应于接收到释放调用,节点20(1)-20(W)释放成功的保留,并进而对相应的始发者块70(1)-70(W)调用释放操作。始发者块70(1)-70(W)响应于从节点20(1)-20(W)接收到释放调用来释放成功的保留。
如果节点20(W+1)检测到所有保留都成功,则节点20(W+1)使用其目标接口14来对除了提供节点20(W+1)所接收的最后一个提供的节点20(1)-20(W)之外的所有节点20(1)-20(W)调用消费操作。节点20(W+1)将已接受返回至提供最后一个提供的节点20(1)-20(W),而该节点20(1)-20(W)进而将已接受返回至相应的始发者块70(1)-70(W)。接收到消费调用的所有节点20(1)-20(W)进而使用其相应的目标接口14来对相应的始发者块70(1)-70(W)调用消费操作。节点20(W+1)使用其源接口12来将所组合的数据提供到进程40(W+1)中的触发器块70。触发器块70通过接受来自节点20(W+1)的数据来作出响应以完成联结操作。
在另一实施例中,当所有数据已在节点20(1)-20(W)处被保留或接受时,节点20(W+1)用布尔值来向进程40(W+1)中的触发器块70发送信号。触发器块70检索来自节点20(1)-20(W)的数据。在该实施例中,节点20(W+1)将已接受返回至提供数据的节点20(1)-20(W)中的最后一个。
在其他实施例中,联结操作可以在使用与始发者块70和/或触发器块80的其他组合进行接口的源-目标模式10的其他组合的数据流网络32C中实现。
图10是示出包括联结操作的进程网络94的一实施例的框图。在图10中,联结操作通过包括数据流网络32C来在进程40(8)和进程40(9)和40(10)之间实现。使用数据流网络32C,进程40(4)接受从进程40(9)和40(10)中的每一个提供给数据流网络32C的数据。进程40(8)对数据执行某些计算并使用实现发送操作的数据流网络32E来将所得数据发送给进程40(11)。
以上参考图5-10所示的发送、接收、选择和联结操作可在其他实施例中被组合成更复杂的配置。
图11是示出被配置成实现包括带有进程调度器的运行时环境的计算机系统100的一实施例的框图。
计算机系统100包括一个或多个处理器封装102、存储器系统104、零个或多个输入/输出设备106、零个或多个显示设备108、零个或多个外围设备110、和零个或多个网络设备112。处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110和网络设备112使用包括任何合适的类型、数量和配置的控制器、总线、接口、和/或其他有线或无线连接的一组互连114来进行通信。
计算机系统100表示出于通用或专用目的而配置的任何合适的处理设备。计算机系统100的示例包括服务器、个人计算机、膝上型计算机、图形输入板计算机、个人数字助理(PDA)、移动电话、和音频/视频设备。计算机系统100的组件(即,处理器封装102、存储器系统104、输入/输出设备106、显示设备108、外围设备110、网络设备112和互连114)可包含在公共外壳(未示出)中或任何合适数量的独立外壳(未示出)中。
处理器封装102包括硬件线程116(1)-116(X),其中X是大于或等于一的整数并表示第X个硬件线程116。处理器封装102中的每一硬件线程116被配置成访问并执行存储在存储器系统104中的指令。这些指令可包括基本输入输入系统(BIOS)或固件(未示出)、操作系统(OS)120、资源管理层121、运行时平台122、和应用程序124。每一硬件线程116可结合或响应于从输入/输出设备106、显示设备108、外围设备110、和/或网络设备112接收到的信息来执行指令。
计算机系统100引导并执行OS 120。OS 120包括可由硬件线程116执行来管理计算机系统100的组件并提供允许应用程序124访问并使用该组件的一组功能的指令。在一个实施例中,OS 120是Windows操作系统。在其他实施例中,OS 120是适于和计算机系统100一起使用的另一操作系统。
资源管理层121包括可结合OS 120来执行以分配包括硬件线程116的计算机系统100的资源的指令。资源管理层121可作为对一个或多个应用程序124可用的功能库或者作为OS 120的一个集成部分被包括在计算机系统100中。
运行时平台122包括可结合OS 120和资源管理层121来执行以生成运行时环境并向应用程序124提供运行时功能的指令。这些运行时功能包括调度器功能。在被调用时,调度器功能创建用于调度诸如应用程序124等的程序的进程以供一个或多个硬件线程116(1)-116(X)执行的调度器。运行时功能可作为应用程序124的一部分、作为对一个或多个应用程序124可用的功能库、或者作为OS 120和/或资源管理层121的一个集成部分被包括在计算机系统100中。
每一应用程序124包括可结合OS 120、资源管理层121和/或运行时平台122来执行以使计算机系统100执行所需操作的指令。每一应用程序124表示可与运行时平台122所提供的调度器一起执行的一个或多个程序。
存储器系统104包括被配置成存储指令和数据的任何合适的类型、数量和配置的易失性或非易失性存储设备。存储器系统104的存储设备表示存储包括OS 120、资源管理层121、运行时平台122和应用程序124的计算机可执行指令的计算机可读存储介质。这些指令可由计算机系统执行来执行此处描述的OS 120、资源管理层121、运行时平台122和应用程序124的功能和方法。存储器系统104中的存储设备的示例包括硬盘驱动器、随机存取存储器(RAM)、只读存储器(ROM)、闪存驱动器和卡、以及磁盘和光盘。
存储器系统104存储从处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112接收的指令和数据。存储器系统104将存储的指令和数据提供给处理器封装102、输入/输出设备106、显示设备108、外围设备110和网络设备112。
输入/输出设备106包括被配置成将指令或数据从用户输入到计算机系统100并将指令或数据从计算机系统100输出到用户的任何合适的类型、数量和配置的输入/输出设备。输入/输出设备106的示例包括键盘、鼠标、触摸垫、触摸屏、按钮、拨盘、旋钮和开关。
显示设备108包括被配置成向计算机系统100的用户输出文本和/或图形信息的任何合适的类型、数量和配置的显示设备。显示设备108的示例包括监视器、显示屏和投影仪。
外围设备110包括被配置成用计算机系统100中的一个或多个其他组件来操作以执行通用或专用处理功能的任何合适的类型、数量和配置的外围设备。
网络设备112包括被配置成允许计算机系统100通过一个或多个网络(未示出)进行通信的任何合适的类型、数量和配置的网络设备。网络设备112可根据任何合适的网络协议和/或配置来操作以允许计算机系统100将信息发送给网络或者从网络接收信息。
在图11的实施例中,OS 120、资源管理层121、运行时平台122和应用程序124中的一个或多个可包括带有使用如上参考图1A-10所描述的包括任何合适数量的源-目标模式10的数据流网络32来连接的进程40的进程网络。
以上实施例提供了用于按通用、灵活和可扩展的方式将进程连接到进程网络中的被称为源-目标模式的合成模型。该模型允许常见进程代数构造与数据流网络组合来形成进程网络。诸如发送、接收、选择和联结等典型的进程代数操作可用合成模型来表达以形成提供进程之间的完全互操作进程代数操作的数据流网络。该模型可应用于大量简单数据流网络以及更复杂的数据流网络。
该模型还允许松连接的进程网络。在松连接的进程网络的情况下,进程可能对该进程正在交互的其他进程不具有或者具有有限的知识。相反,进程知道与其他进程的连接点以及这些连接点的意义。
松连接的进程网络可用于实现高度可维护程序并允许基于数据流构造的更复杂和高级的路由逻辑。无源数据流网络与有源进程用作中介相比可更高效地将数据从一个进程路由到另一进程。
尽管此处说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换和/或等价实现来替换此处示出并描述的具体实施例而不背离本发明的范围。本申请旨在覆盖此处讨论的具体实施例的任何改编或变型。因此,本发明旨在仅由权利要求书及其等效方案来限制。

Claims (15)

1.一种在计算机系统(100)中执行的方法,所述方法包括:
用第一目标接口(14)调用第一源接口(12)中的第一链接操作,所述第一链接操作在所述第一源操作和所述第一目标接口之间创建第一链接(16);
调用所述第一目标接口中的第一提供操作来将第一数据从所述第一源接口提供到所述第一目标接口;以及
在调用所述第一提供操作之后用所述第一目标接口调用所述第一源接口中的第一保留操作。
2.如权利要求1所述的方法,其特征在于,还包括:
响应于所述第一提供操作将已推迟从所述第一目标接口返回至所述第一源接口;以及
在返回已推迟之后用所述第一目标接口调用所述第一源接口中的所述第一保留操作来为所述第一目标接口保留所述第一数据。
3.如权利要求2所述的方法,其特征在于,还包括:
在调用所述第一保留操作之后用所述第一目标接口调用所述第一源接口中的消费操作来用所述第一目标接口消费所述第一数据。
4.如权利要求2所述的方法,其特征在于,还包括:
在调用所述第一保留操作之后用所述第一目标接口调用所述第一源接口中的释放操作来释放所述第一数据。
5.如权利要求1所述的方法,其特征在于,所述第一源接口至少包括所述第一链接操作、所述第一保留操作、释放操作和消费操作。
6.如权利要求1所述的方法,其特征在于,还包括:
用第一目标接口调用第二源接口(12)中的第二链接操作,所述第二链接操作在所述第二源操作和所述第一目标接口之间创建第二链接(16);
调用所述第一目标接口中的第二提供操作来将第二数据从所述第二源接口提供到所述第一目标接口;以及
在调用所述第二提供操作之后用所述第一目标接口调用所述第二源接口中的第二保留操作。
7.如权利要求6所述的方法,其特征在于,还包括:
在调用所述第一保留操作之后用所述第一目标接口调用所述第一源接口中的第一消费操作来用所述第一目标接口消费所述第一数据;以及
在调用所述第二保留操作之后用所述第一目标接口调用所述第二源接口中的第二消费操作来用所述第一目标接口消费所述第二数据。
8.如权利要求6所述的方法,其特征在于,还包括:
在调用所述第一保留操作之后用所述第一目标接口调用所述第一源接口中的第一释放操作来释放所述第一数据;以及
在调用所述第二保留操作之后用所述第一目标接口调用所述第二源接口中的第二释放操作来释放所述第二数据。
9.如权利要求6所述的方法,其特征在于,所述第二源接口至少包括所述第二链接操作、所述第二保留操作、释放操作和消费操作。
10.一种存储计算机可执行指令的计算机可读存储介质(120),所述计算机可执行指令在由计算机系统(100)执行时执行一种方法,所述方法包括:
使用至少包括链接、提供、保留、释放和消费操作的第一源-目标模式(10)来将第一数据从第一进程(40)提供到数据流网络(32);
使用至少包括所述链接、提供、保留、释放和消费操作的第二源-目标模式(10)来将所述第一数据从所述数据流网络提供到第二进程(40)。
11.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
使用至少包括所述链接、提供、保留、释放和消费操作的第三源-目标模式(10)来将第二数据从第三进程(40)提供到所述数据流网络;以及
响应于在将所述第二数据提供到所述数据流网络之前将所述第一数据提供到所述数据流网络,使用所述第二源-目标模式来将所述第一数据从所述数据流网络提供到所述第二进程。
12.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
使用至少包括所述链接、提供、保留、释放和消费操作的第三源-目标模式(10)来将第二数据从第三进程(40)提供到所述数据流网络;以及
在将所述第一数据和所述第二数据提供到所述数据流网络之后,使用所述第二源-目标模式来将所述第一数据和所述第二数据从所述数据流网络提供到所述第二进程。
13.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
在将所述第一数据从所述数据流网络提供到所述第二进程之前变换所述数据流网络中的所述第一数据。
14.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
在将所述第一数据从所述数据流网络提供到所述第二进程之前暂停所述第二进程。
15.如权利要求10所述的计算机可读存储介质,其特征在于,所述方法还包括:
使用至少包括所述链接、提供、保留、释放和消费操作的第三源-目标模式(10)来将所述第一数据从所述数据流网络提供到第三进程(40)。
CN200980121239.1A 2008-06-02 2009-05-07 在多个进程之间传递数据的方法 Active CN102047240B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/131,449 2008-06-02
US12/131,449 US8407728B2 (en) 2008-06-02 2008-06-02 Data flow network
PCT/US2009/043112 WO2009148759A2 (en) 2008-06-02 2009-05-07 Data flow network

Publications (2)

Publication Number Publication Date
CN102047240A true CN102047240A (zh) 2011-05-04
CN102047240B CN102047240B (zh) 2014-01-29

Family

ID=41381493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980121239.1A Active CN102047240B (zh) 2008-06-02 2009-05-07 在多个进程之间传递数据的方法

Country Status (11)

Country Link
US (1) US8407728B2 (zh)
EP (1) EP2300927A4 (zh)
JP (1) JP5551687B2 (zh)
KR (1) KR101607716B1 (zh)
CN (1) CN102047240B (zh)
AU (1) AU2009255484B2 (zh)
BR (1) BRPI0910566B1 (zh)
CA (1) CA2722675C (zh)
MX (1) MX2010012821A (zh)
RU (1) RU2511611C2 (zh)
WO (1) WO2009148759A2 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109560900A (zh) * 2017-09-27 2019-04-02 阿里巴巴集团控股有限公司 数据发送方法和装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6147143A (ja) 1984-08-15 1986-03-07 Morinaga Milk Ind Co Ltd フレ−バ−等を強化したインスタント・クリ−ミング・パウダ−
US5625775A (en) * 1994-06-13 1997-04-29 International Business Machines Corporation Modem communication interface in a data processing system
US6457081B1 (en) * 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus
US6516322B1 (en) * 2000-04-28 2003-02-04 Microsoft Corporation XML-based representation of mobile process calculi
US7503033B2 (en) * 2000-04-28 2009-03-10 Microsoft Corporation Model for business workflow processes
US7055142B2 (en) * 2002-05-10 2006-05-30 Microsoft Corporation Permutation nuances of the integration of processes and queries as processes at queues
JP2004171209A (ja) * 2002-11-19 2004-06-17 Matsushita Electric Ind Co Ltd 共有メモリデータ転送装置
US20040184470A1 (en) * 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
US7469272B2 (en) * 2003-03-26 2008-12-23 Microsoft Corporation System and method utilizing test notifications
KR20060121880A (ko) * 2003-09-22 2006-11-29 카테나 가부시키가이샤 소프트웨어 생성방법
US20050131978A1 (en) * 2003-12-10 2005-06-16 Microsoft Corporation Systems and methods that employ process algebra to specify contracts and utilize performance prediction implementations thereof to measure the specifications
US7376547B2 (en) * 2004-02-12 2008-05-20 Microsoft Corporation Systems and methods that facilitate quantum computer simulation
US7827565B2 (en) * 2004-03-12 2010-11-02 Microsoft Corporation Integration architecture for non-integrated tools
US20050251537A1 (en) * 2004-05-05 2005-11-10 Hewlett-Packard Development Company, L.P. File locking
US7707194B2 (en) * 2004-06-08 2010-04-27 Sap Ag Interface to lock a database row through a logical locking interface
US7548901B2 (en) 2004-06-29 2009-06-16 Microsoft Corporation System and method for delayed fetching of designated members of a user defined type
US7603502B2 (en) * 2005-04-12 2009-10-13 Microsoft Corporation Resource accessing with locking
EP1720104A1 (en) * 2005-05-03 2006-11-08 Thomson Multimedia Broadband Belgium Integrated circuit comprising means for prioritizing traffic between modules
US7747591B2 (en) * 2006-03-24 2010-06-29 Oracle International Corp. Web feature service (WFS) locking support based on light-weight locking model in the database
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy

Also Published As

Publication number Publication date
AU2009255484B2 (en) 2014-05-08
JP5551687B2 (ja) 2014-07-16
AU2009255484A1 (en) 2009-12-10
WO2009148759A3 (en) 2010-02-25
CA2722675A1 (en) 2009-12-10
RU2511611C2 (ru) 2014-04-10
CA2722675C (en) 2016-11-15
US8407728B2 (en) 2013-03-26
BRPI0910566B1 (pt) 2020-01-28
KR101607716B1 (ko) 2016-03-30
EP2300927A4 (en) 2012-10-31
CN102047240B (zh) 2014-01-29
WO2009148759A2 (en) 2009-12-10
EP2300927A2 (en) 2011-03-30
MX2010012821A (es) 2010-12-07
BRPI0910566A2 (pt) 2015-09-22
RU2010149276A (ru) 2012-06-10
JP2011522328A (ja) 2011-07-28
KR20110022578A (ko) 2011-03-07
US20090300650A1 (en) 2009-12-03

Similar Documents

Publication Publication Date Title
KR101057452B1 (ko) 스마트카드 임베디드 조작 시스템 및 작업처리 방법
US7272820B2 (en) Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
CN102047218B (zh) 进程中的调度器实例
CN102027447A (zh) 调度器中的局部任务集合
WO2021031472A1 (zh) 智能合约处理方法、装置、计算机设备及存储介质
CN104102949A (zh) 一种分布式工作流装置及其处理工作流的方法
CN102630315A (zh) 用于防止死锁状态的数据处理方法及系统
CN105187327A (zh) 一种分布式消息队列中间件
CN111149325A (zh) 用于选择区块链事务的事务选择设备
CN111694675A (zh) 任务调度方法及装置、存储介质
CN110430142A (zh) 用于控制流量的方法和装置
CN102047217A (zh) 重新获取对执行外部执行上下文的处理资源的控制
CN109144749A (zh) 一种使用处理器实现多处理器间通信的方法
CN102047240B (zh) 在多个进程之间传递数据的方法
CN108958903A (zh) 嵌入式多核中央处理器任务调度方法与装置
CN110825536B (zh) 嵌入式实时操作系统中任务间的通信方法及装置
CN116724294A (zh) 一种任务分配方法及装置
CN101278277B (zh) 运算处理装置
JP5707409B2 (ja) 計算機
CN115658295A (zh) 资源调度方法、装置、电子设备和存储介质
CN102016803B (zh) 操作系统快速运行命令
CN112527487A (zh) 多线程请求数据整合方法、装置、电子设备及存储介质
CN108958905A (zh) 嵌入式多核中央处理器的轻量级操作系统
CN108958904A (zh) 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架
CN117149471B (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

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

Effective date of registration: 20150430

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.