專利名稱:數據流網絡的制作方法
數據流網絡背景計算機系統可允許并發地執行程序的多個進程。進程的并發執行可允許更快或更 高效地執行程序以提高計算機系統的吞吐量。在實現控制流模型的進程中,控制流邏輯描述了程序狀態的一組條件和修改并可 由例如流程圖來組織。術語“進程代數”用于指代用于推理關于進程如何彼此通信來合作 解決共享的問題以及如何控制進程的生存期的方法。雖然進程代數與進程的內部狀態修改 原語可有很大程度的不同,但通常存在進程間通信驅動內部流程圖的交互點。進程之間的 這些交互點在某些程序中可能是復雜的。復雜的交互點可使調度進程以供并發執行變得困 難并導致程序的執行未達到最優。概述提供本發明內容是為了以精簡的形式介紹將在以下具體實施方式
中進一步描述 的一些概念。本概述并不旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用 于限制所要求保護的主題的范圍。提供了用于按通用、靈活和可擴展的方式將進程連接到進程網絡中的被稱為 源-目標模式的合成模型。該模型允許常見進程代數構造與數據流網絡組合來形成進程網 絡。進程代數操作可用合成模型來表達以形成提供進程之間的完全互操作進程代數操作的 數據流網絡。該模型可應用于大量簡單數據流網絡以及更復雜的數據流網絡。附圖簡述包括、合并在本發明書內并構成其一部分的附圖提供了對各實施例的進一步理 解。附圖示出各實施例,并且與說明書一起用于解釋本發明的原理。其他實施例和各實施 例的許多預期優點將隨著參考下面的詳細描述進行更好的理解而得到認識。附圖的元素不 一定相對于彼此而縮放。相同的附圖標記指代對應的類似部分。
圖1A-1C是示出供在數據流網絡中使用的源和目標接口的實施例的框圖。圖2A-2C是示出數據流網絡的節點的實施例的框圖。圖3是示出具有連接到進程的數據流網絡的進程網絡的一實施例的框圖。圖4是示出具有連接到數據流網絡的進程的進程網絡的一實施例的框圖。圖5是示出被配置成實現發送操作的始發者塊的一實施例的框圖。圖6是示出被配置成實現接收操作的觸發器塊的一實施例的框圖。圖7是示出進程網絡的一實施例的框圖。圖8是示出被配置成實現選擇和聯結操作的數據流網絡的一實施例的框圖。圖9是示出進程網絡的一實施例的框圖。圖10是示出進程網絡的一實施例的框圖。圖11是示出被配置成實現帶有進程調度器的運行時環境的計算機系統的一實施 例的框圖。詳細描述在以下詳細描述中,對附圖進行了參考,附圖構成了實施例的一部分且在其中作為示例示出了可在其中實踐本發明的各特定實施例。就此,諸如“頂部”、“底部”、“前方”、 “后方”、“前導”、“尾部”等的方向性術語參考正在描述的附圖的方向來使用。因為各實施 例的各組件可位于多個不同的方向,所以方向性術語出于說明的目的來使用而不是限制。 可以理解,可以使用其它實施例并且可以做出結構上或邏輯上的改變而不背離本發明的范 圍。因此,以下詳細描述并不旨在限制,并且本發明的范圍由所附權利要求來限定。應該理解,此處描述的各示例性實施例的特征可相互組合,除非另外具體注明。圖IA是示出包括通過鏈接16連接的源接口 12和目標接口 14的源-目標模式10 的一實施例的框圖。源-目標模式10提供用于創建將在計算機系統(例如,圖11中示出的計算機系 統100)上執行的程序的任意數量的進程(例如,圖3和4中示出的進程40)連接到進程網 絡中的數據流網絡(例如,圖3和4中示出的數據流網絡32)的一組操作。數據流網絡形 成進程代數構造,如發送、接收、選擇、聯結及其組合,來允許數據在進程之間傳遞。源-目 標模式10提供用于在源接口 12和目標接口 14之間傳遞數據的協議以允許在數據流網絡 中實現進程代數構造。源-目標模式10允許在進程不具有或具有最少關于另一進程的知識的情況下連 接進程。一個進程可在沒有其他進程的任何知識的情況下使用源-目標模式10向另一進 程提供數據。類似地,一個進程可在沒有其他進程的任何知識的情況下使用源-目標模式 10從另一進程接收數據。每一進程包括存儲在計算機可讀存儲介質(例如,圖11中示出的 存儲器系統104)中并可由計算機系統執行的指令集。進程之間傳遞的數據可包括任何類 型的數據,包括指針、地址或其他結構化的或編碼的信息。源接口 12包括存儲在計算機可讀存儲介質(例如,圖11中示出的存儲器 系統104)中并可由計算機系統執行來實現鏈接目標(Iinktarget)、斷開目標鏈接 (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釋放或消費。如圖IB所示,每一目標接口 14可通過調用每一源接口 12(1)_12(M)的鏈接目標 操作來連接到任意數量的源接口 12(1)-12(M)以建立相應的鏈接16(1)-16(M),其中M是大 于或等于一的整數且表示第M個源接口 12和第M個鏈接16。因此,每一目標接口 14可被 提供來自任意數量的源接口 12 (1)-12 (M)的數據。如圖IC所示,每一源接口 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個目標接口 14,但沒有源接口 12。只有目標接口 14的節點20B形成數據 匯點。另外,如圖2C所示,節點20C可包括一個或多個源接口 12(1)-12(P)和一個或多個 目標接口 14(1)-14 )。節點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。如圖IB和IC所 示,集合44中的每一目標接口 14可連接至集合42 (1)-42 (R)中的任意數量的源接口 12,且 集合44中的任意數量的目標接口 14可連接至集合42 (1)-42 (R)中的每一源接口 12。集合 42 (1)-42 (R)中的每一源接口 12通過如上參考圖IA所描述的將數據提供給集合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 ¢+1)-46( 與源接口 12集合36之間建立鏈接16 集合48。如圖IB和IC所示,集合46(R+1)-46(S)中的每一目標接口 14可連接至集合36 中的任意數量的源接口 12,且集合46(R+1)-46(Q中的任意數量的目標接口 14可連接至集 合36中的每一源接口 12。集合36中的每一源接口 12通過如上參考圖IA所描述的將數據 提供給集合46 ¢+1)-46( 中的一個或多個目標接口 14來使得數據從數據流網絡32被傳 播至進程40 (R+1)-40 (S)中的一個或多個。進程40(R+1)-40(S)中的一個或多個還可包括 連接至一個或多個其他數據流網絡32 (未示出)的一個或多個其他目標接口 14集合(未 示出)和/或一個或多個源接口 12集合(未示出)。進程40(1)-40( 可在沒有進程40 ¢+1)-40( 的任何知識的情況下使用數據 流網絡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集合M、一 個或多個源接口 12集合56、以及將目標接口 14集合M與源接口 12集合56互連的一組進 程組件58。進程組件58可包括將目標接口 14集合討與源接口 12集合56按任何合適的 方式連接的任何合適類型、數量、和/或組合的指令和/或數據結構。數據流網絡32⑴-32 (T)包括一個或多個源接口 12的相應集合62 (1)-62 (T),其 中每一集合62可包括與其他集合62相同或不同數量的源接口 12。目標接口 14集合討在 目標接口 14集合M和源接口 12集合62 (1)-62 (T)之間建立鏈接16集合64。如圖IB和 IC所示,集合M中的每一目標接口 14可連接至集合62 (1)-62 (T)中的任意數量的源接口 12,且集合M中的任意數量的目標接口 14可連接至集合62 (1)-62 (T)中的每一源接口 12。 集合62(1)-62(T)中的每一源接口 12通過如上參考圖IA所描述的將數據提供給集合M 中的一個或多個目標接口 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。如圖IB和IC所示,集合66 (T+1)-46 (V)中的每一目標接口 14可 連接至集合56中的任意數量的源接口 12,且集合66(T+1)-46(V)中的任意數量的目標接口 14可連接至集合56中的每一源接口 12。進程40通過如上參考圖IA所描述的使得集合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( 接收數據并將數據提供給進程40 (3)。為了從進程40( 接收數 據,將數據從進程4(K2)的始發者塊70(1)提供給進程40(1)的觸發器塊80(1)且觸發器 塊80(1)如實現接收操作的數據流網絡32Α所指示地接受數據。進程40(1)對數據執行某 些計算并將所得數據發送給進程40 (3)。為了將數據發送給進程40 (3),進程40(1)的始發 者塊70( 將數據提供給進程40 C3)的觸發器塊80( 且觸發器塊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(ff+l)中的目標接口 14。節點20(W+1)中的源接口 12將數據提供給進程40 (W+1)中的 觸發器塊70。為了實現選擇操作,節點20(W+1)只接受來自將數據提供給節點20(W+1)的節點 20 (1)-20 (W)中的第一個的數據并拒絕所有其余節點20(1)-20(W)所提供的數據。節點 20(ff+l)將數據提供給進程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(ff+l)的數據來作出響應以完成選擇操作。在其他實施例中,選擇操作可以在使用與始發者塊70和/或觸發器塊80的其他 組合進行接口的源-目標模式10的其他組合的數據流網絡32C中實現。圖9是示出包括選擇操作的進程網絡92的一實施例的框圖。在圖9中,選擇操作 通過包括數據流網絡32C來在進程40 (4)和進程40 和40 (6)之間實現。使用數據流網 絡32C,進程40(4)接受來自將數據提供給數據流網絡32C的進程40 和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(ff+l)使用其目標接口 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)之間實現。使用數據 流網絡32(,進程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中的指令。這些指令可包括基本輸入輸入系統¢10 或固件(未示 出)、操作系統(OS) 120、資源管理層121、運行時平臺122、和應用程序124。每一硬件線程 116可結合或響應于從輸入/輸出設備106、顯示設備108、外圍設備110、和/或網絡設備 112接收到的信息來執行指令。計算機系統100引導并執行OS 120。OS 120包括可由硬件線程116執行來管理 計算機系統100的組件并提供允許應用程序1 訪問并使用該組件的一組功能的指令。在 一個實施例中,OS 120是Windows操作系統。在其他實施例中,OS 120是適于和計算機系 統100 —起使用的另一操作系統。資源管理層121包括可結合OS 120來執行以分配包括硬件線程116的計算機系 統100的資源的指令。資源管理層121可作為對一個或多個應用程序IM可用的功能庫或 者作為OS 120的一個集成部分被包括在計算機系統100中。運行時平臺122包括可結合OS 120和資源管理層121來執行以生成運行時環境 并向應用程序IM提供運行時功能的指令。這些運行時功能包括調度器功能。在被調用 時,調度器功能創建用于調度諸如應用程序IM等的程序的進程以供一個或多個硬件線程 116(1)-116⑴執行的調度器。運行時功能可作為應用程序IM的一部分、作為對一個或多 個應用程序1 可用的功能庫、或者作為OS 120和/或資源管理層121的一個集成部分被 包括在計算機系統100中。每一應用程序IM包括可結合OS 120、資源管理層121和/或運行時平臺122來 執行以使計算機系統100執行所需操作的指令。每一應用程序IM表示可與運行時平臺 122所提供的調度器一起執行的一個或多個程序。存儲器系統104包括被配置成存儲指令和數據的任何合適的類型、數量和配置的 易失性或非易失性存儲設備。存儲器系統104的存儲設備表示存儲包括OS 120、資源管理 層121、運行時平臺122和應用程序IM的計算機可執行指令的計算機可讀存儲介質。這些 指令可由計算機系統執行來執行此處描述的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的進程網絡。以上實施例提供了用于按通用、靈活和可擴展的方式將進程連接到進程網絡中的 被稱為源-目標模式的合成模型。該模型允許常見進程代數構造與數據流網絡組合來形成 進程網絡。諸如發送、接收、選擇和聯結等典型的進程代數操作可用合成模型來表達以形成 提供進程之間的完全互操作進程代數操作的數據流網絡。該模型可應用于大量簡單數據流 網絡以及更復雜的數據流網絡。該模型還允許松連接的進程網絡。在松連接的進程網絡的情況下,進程可能對該 進程正在交互的其他進程不具有或者具有有限的知識。相反,進程知道與其他進程的連接 點以及這些連接點的意義。松連接的進程網絡可用于實現高度可維護程序并允許基于數據流構造的更復雜 和高級的路由邏輯。無源數據流網絡與有源進程用作中介相比可更高效地將數據從一個進 程路由到另一進程。盡管此處說明并描述了具體實施例,但本領域技術人員可以理解,可用各種替換 和/或等價實現來替換此處示出并描述的具體實施例而不背離本發明的范圍。本申請旨在 覆蓋此處討論的具體實施例的任何改編或變型。因此,本發明旨在僅由權利要求書及其等 效方案來限制。
權利要求
1.一種在計算機系統(100)中執行的方法,所述方法包括用第一目標接口(14)調用第一源接口(1 中的第一鏈接操作,所述第一鏈接操作在 所述第一源操作和所述第一目標接口之間創建第一鏈接(16);調用所述第一目標接口中的第一提供操作來將第一數據從所述第一源接口提供到所 述第一目標接口 ;以及在調用所述第一提供操作之后用所述第一目標接口調用所述第一源接口中的第一保 留操作。
2.如權利要求1所述的方法,其特征在于,還包括響應于所述第一提供操作將已推遲從所述第一目標接口返回至所述第一源接口 ;以及 在返回已推遲之后用所述第一目標接口調用所述第一源接口中的所述第一保留操作 來為所述第一目標接口保留所述第一數據。
3.如權利要求2所述的方法,其特征在于,還包括在調用所述第一保留操作之后用所述第一目標接口調用所述第一源接口中的消費操 作來用所述第一目標接口消費所述第一數據。
4.如權利要求2所述的方法,其特征在于,還包括在調用所述第一保留操作之后用所述第一目標接口調用所述第一源接口中的釋放操 作來釋放所述第一數據。
5.如權利要求1所述的方法,其特征在于,所述第一源接口至少包括所述第一鏈接操 作、所述第一保留操作、釋放操作和消費操作。
6.如權利要求1所述的方法,其特征在于,還包括用第一目標接口調用第二源接口(1 中的第二鏈接操作,所述第二鏈接操作在所述 第二源操作和所述第一目標接口之間創建第二鏈接(16);調用所述第一目標接口中的第二提供操作來將第二數據從所述第二源接口提供到所 述第一目標接口 ;以及在調用所述第二提供操作之后用所述第一目標接口調用所述第二源接口中的第二保 留操作。
7.如權利要求6所述的方法,其特征在于,還包括在調用所述第一保留操作之后用所述第一目標接口調用所述第一源接口中的第一消 費操作來用所述第一目標接口消費所述第一數據;以及在調用所述第二保留操作之后用所述第一目標接口調用所述第二源接口中的第二消 費操作來用所述第一目標接口消費所述第二數據。
8.如權利要求6所述的方法,其特征在于,還包括在調用所述第一保留操作之后用所述第一目標接口調用所述第一源接口中的第一釋 放操作來釋放所述第一數據;以及在調用所述第二保留操作之后用所述第一目標接口調用所述第二源接口中的第二釋 放操作來釋放所述第二數據。
9.如權利要求6所述的方法,其特征在于,所述第二源接口至少包括所述第二鏈接操 作、所述第二保留操作、釋放操作和消費操作。
10.一種存儲計算機可執行指令的計算機可讀存儲介質(120),所述計算機可執行指令在由計算機系統(100)執行時執行一種方法,所述方法包括使用至少包括鏈接、提供、保留、釋放和消費操作的第一源-目標模式(10)來將第一數 據從第一進程GO)提供到數據流網絡(32);使用至少包括所述鏈接、提供、保留、釋放和消費操作的第二源-目標模式(10)來將所 述第一數據從所述數據流網絡提供到第二進程GO)。
11.如權利要求10所述的計算機可讀存儲介質,其特征在于,所述方法還包括使用至少包括所述鏈接、提供、保留、釋放和消費操作的第三源-目標模式(10)來將第 二數據從第三進程GO)提供到所述數據流網絡;以及響應于在將所述第二數據提供到所述數據流網絡之前將所述第一數據提供到所述數 據流網絡,使用所述第二源-目標模式來將所述第一數據從所述數據流網絡提供到所述第 二進程。
12.如權利要求10所述的計算機可讀存儲介質,其特征在于,所述方法還包括使用至少包括所述鏈接、提供、保留、釋放和消費操作的第三源-目標模式(10)來將第 二數據從第三進程GO)提供到所述數據流網絡;以及在將所述第一數據和所述第二數據提供到所述數據流網絡之后,使用所述第二源-目 標模式來將所述第一數據和所述第二數據從所述數據流網絡提供到所述第二進程。
13.如權利要求10所述的計算機可讀存儲介質,其特征在于,所述方法還包括 在將所述第一數據從所述數據流網絡提供到所述第二進程之前變換所述數據流網絡中的所述第一數據。
14.如權利要求10所述的計算機可讀存儲介質,其特征在于,所述方法還包括 在將所述第一數據從所述數據流網絡提供到所述第二進程之前暫停所述第二進程。
15.如權利要求10所述的計算機可讀存儲介質,其特征在于,所述方法還包括使用至少包括所述鏈接、提供、保留、釋放和消費操作的第三源-目標模式(10)來將所 述第一數據從所述數據流網絡提供到第三進程GO)。
全文摘要
提供了用于按通用、靈活和可擴展的方式將進程連接到進程網絡中的被稱為源-目標模式的合成模型。該模型允許常見進程代數構造與數據流網絡組合來形成進程網絡。進程代數操作可用合成模型來表達以形成提供進程之間的完全互操作進程代數操作的數據流網絡。
文檔編號G06F15/16GK102047240SQ200980121239
公開日2011年5月4日 申請日期2009年5月7日 優先權日2008年6月2日
發明者D·卡拉漢, N·古斯塔夫松 申請人:微軟公司