新四季網

軟體總線的製作方法

2023-04-29 23:09:36 2

軟體總線的製作方法
【專利摘要】本發明涉及軟體模塊之間,特別是軟體總線之間進行通信的方法的領域。這裡描述了一種可實現軟體模塊間通信的軟體總線。這種通信出現在機器間,並交替作用於軟體模塊,不論此軟體模塊是否正在處理進程、輕量進程或簡單任務。這種通信依賴於適應多任務等級的機制,發送器軟體模塊和接收器軟體模塊運行在此等級上。此通信基於分層體系架構,需經由總線進行通信的多個軟體模塊的發現和記錄階段。
【專利說明】軟體總線
[0001]本發明涉及在軟體模塊之間,特別是在軟體總線之間進行通信的方法的領域。
[0002]信息處理裝置在作業系統的控制下進行工作。這些作業系統是多任務的,並使得多個軟體模塊的調度成為可能。根據組織多任務和模塊層次可能性的調度器,這些軟體模塊可以分為幾種類型。
[0003]在歷史上,作業系統使進程的調度成為可能。進程被定義為擁有自身控制和自身存儲空間的軟體模塊。現今,進程的調度通常使用搶佔式的方式來執行。換句話說,調度器可隨意地決定在進程之間進行上下文切換的時間。隨後,當前進程的上下文(通常是內存緩存中的內容、處理器寄存器中的內容以及指示控制的指針)被存儲。等待中的另一個進程被選擇,並且其上下文被恢復。之後,這個進程就可繼續它的執行過程。
[0004]上下文切換是一個相對複雜的過程。驅動較輕並行軟體模塊的需求已經出現。線程的概念也因此被創建。一般來說,一組線程是在公用存儲空間進行調度的,它通常是一個進程的情況。
[0005]在某些情況下,能夠實現補充級並且能夠實際上在線程中調度一組任務。該調度隨後會變為或不變為搶佔式的。在任務將控制明確地傳遞給調度器的情況下,另外一類調度族,合作調度,在出現特定系統調用的時刻發生。主要的區別涉及以下事實:在這類調度中,進入無限循環的任務可能會妨礙系統接管和阻塞整個系統。因為任務在任何時間都不能被中斷,所以這種調度的優勢在於:不必對由互斥(mutex)機制共享的資源進行保護。
[0006]因此,我們可以將執行在信息處理設備上的軟體看作一個或多個進程,每個進程可使其自身包括一個或多個線程,每個線程又能夠包括一個或多個任務。對於進程和線程的調度被認為是搶佔式的,而對於任務的調度可能是也可能不是搶佔式的。我們通常用軟體模塊這個術語來命名所有的進程、線程和任務。
[0007]軟體模塊的層次由圖1所示。在其中可看到信息處理裝置1.1。此裝置使三個進程1.2、1.3、1.4能夠被並行執行。這些進程由作業系統1.16來進行調度。包含一些並行執行線程1.5、1.6、1.7和1.8的進程1.2由作業系統1.16調度。進程1.3不包含任何線程。進程1.4包含首要線程1.9和次要線程1.10。這個次要線程1.10本身包含一些在調度器1.14的控制下並行執行的任務1.11、1.12和1.13,調度器1.14自身則在線程1.10中執行。這種裝置具有至少一個通信埠 1.15,該至少一個通信埠 1.15提供經由通信網絡(通常是IP網絡)與其他裝置的通信。
[0008]當需要進行軟體模塊通信時,專用於給定級別的並行度的解決方案已在先前技術中被發現。其主要技術是專用於進程間通信的。信息列隊、用於同一裝置的進程間通信的UNIX套接字和用於連接至IP (網際網路協議)網絡的遠程設備上的進程間通信的INET套接字可被引用。可以存在軟體總線,如用於進程間通信的系統的D-Bus。但它並不適用於如簡單任務的軟體模塊,也不適用於線程或機器間的通信。
[0009]本發明旨在提出一種可提供軟體模塊間通信的通信系統或軟體總線。這種通信存在於單個機器中且位於不同機器間,並且無差別的作用於軟體模塊上,不管是在進程、線程還是簡單任務的情況下。這種通信基於適用於多任務等級的機制,發送器和接收器軟體模塊就運行在這個多任務等級上。這種通信基於層次架構和需要經由總線進行通信的多種軟體模塊的發現階段和記錄階段。


【發明內容】

[0010]因此,本發明涉及一種信息處理裝置,這種裝置包括:
[0011]-作業系統:
[0012]-至少一個進程,由所述作業系統調度,以及
[0013]-線程,能夠由所述作業系統在所述進程中進行調度。
[0014]其特徵在於,所述信息處理裝置還包括:
[0015]-至少一個用戶任務或者系統任務,位於各線程中,
[0016]-各線程本身包含針對所述線程中包括的各個任務的FIFO、以及線程類型的、本身集成了用於調度所述線程的一個或多個任務的專屬調度器的總線管理模塊,
[0017]其特徵還在於,為了使第一任務能夠向第二任務發送消息,所述信息處理裝置包括:
[0018]-用於尋找所述第二任務所依靠的進程的裝置,以及
[0019]-在所述第二任務和所述第一任務屬於相同進程的情況下用於在所述第二任務專用的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的裝置,
[0020]-在所述第二任務屬於與所述第一任務所依靠的進程不同的進程的情況下
[0021]-用於在所述第二任務所依靠的進程的線程中創建遠程中繼任務的裝置,
[0022]-用於在所述第一任務所依靠的進程的線程中創建中繼任務的裝置,
[0023]-用於在所述第一任務所依靠的進程與所述第二任務所依靠的進程之間創建連接的裝置,
[0024]-用於在所述中繼任務專用的FIFO中傳送所述消息的裝置,
[0025]-用於經由所述連接將所述消息發送至所述遠程中繼任務的裝置,
[0026]-用於在所述第二任務的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的裝置。
[0027]有利地,所述用於尋找所述第二任務所依靠的進程的裝置包括與各個進程相關的總線管理模塊,所述總線管理模塊中的每一個均包括列出進程的任務和線程的路由表,其中任務和線程依靠進程。
[0028]有利地,對於各個進程,用於在所述中繼任務與所述遠程中繼任務之間發送消息的裝置包括由進程的線程託管的進程間通信模塊。
[0029]有利地,所述信息處理裝置包括將進程中的一個初始化為主進程並將其他進程初始化為從屬進程的裝置。
[0030]有利地,所述主進程包括由進程的線程託管的裝置間通信模塊,以便能夠在裝置的中繼任務和由另一個信息處理裝置託管的遠程中繼任務之間發送消息。
[0031]本發明還涉及一種在運行於一個或兩個之前描述的信息處理裝置上的任務之間交換消息的方法。該方法的特徵在於,為了使消息能夠從第一任務發送到第二任務,所述方法包括
[0032]-由託管所述第一任務的線程的總線管理模塊實現的以下步驟:
[0033]-在所述第二任務和所述第一任務屬於相同進程的情況下,在所述第二任務專用的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的步驟;
[0034]-在所述第二任務和所述第一任務屬於不同進程的情況下向所述主進程的總線管理模塊發送尋找所述第二任務的消息的步驟,
[0035]-由所述主進程的總線管理模塊實現的以下步驟:
[0036]-當所述第二任務由所述主進程的線程託管時,
[0037]-在所述主進程的線程中創建遠程中繼任務的步驟,
[0038]-向託管所述第一任務的線程的總線管理模塊發送響應的步驟,
[0039]-當所述第二任務不由所述主進程的線程託管時,
[0040]-向進程類型的總線管理模塊中的每一個廣播尋找所述第二任務的消息的步驟,
[0041]-在接收到尋找所述第二任務的消息時,由託管所述第二任務的從屬進程的總線管理模塊實現的以下步驟:
[0042]-在所述從屬進程的線程中創建遠程中繼任務的步驟,
[0043]-向所述主進程的總線管理模塊發送響應的步驟,
[0044]-同樣由所述主進程的總線管理模塊實現的步驟:在接收到由所述從屬進程的總線管理模塊發送的響應後,向所述託管所述第一任務的線程的總線管理模塊發送響應,以及
[0045]-當託管所述第一任務的線程的總線管理模塊接收到來自所述主進程的總線管理模塊的響應後,由託管所述第一任務的線程的總線管理模塊實現的以下步驟:
[0046]-在託管所述第一任務的進程的線程中創建對應所述遠程中繼任務的中繼任務的步驟,以及
[0047]-在所述中繼任務專用的FIFO中傳送所述消息的步驟,其中所述中繼任務專用的FIFO先將所述消息發送到所述遠程中繼任務,再將所述消息發送到所述第二任務。
[0048]根據本發明的另一個有利特徵,所述方法包括的初始化總線的以下步驟:
[0049]-從屬進程的總線管理模塊建立與主進程的總線管理模塊的連接鏈路的步驟;
[0050]-總線的各個客戶端任務通過對它們所依靠的總線進行管理的模塊來記錄的步驟;
[0051]-建立與總線的各個客戶端任務和總線的各個管理模塊相關的FIFO的步驟;
[0052]-接收總線的客戶端軟體模塊的記錄的從屬進程的總線管理模塊將這些記錄導出到所述主進程的總線管理模塊的步驟。
[0053]根據本發明的另一個有利特徵,所述初始化步驟進一步包括在所述主進程中創建與裝置中的從屬進程的總線的客戶端任務的數量相當的中繼任務的步驟。
[0054]根據本發明的另一個有利特徵,通過公用模式或私用模式來記錄總線的客戶端任務,只有公用的任務才被導出到所述主進程。
[0055]根據本發明的另一個有利特徵,所述方法進一步包括在參與於總線的機器之間進行發現的步驟。
[0056]在參與於總線的機器之間進行發現的步驟例如包括:
[0057]-參與於總線的各個機器通過連接所述機器的通信網絡發送聲明的聲明步驟;
[0058]-接收來自遠程機器的聲明消息的步驟;
[0059]-如果發送被接收聲明消息的機器還是未知的則將該機器加入到表中的步驟;
[0060]-建立與所述遠程機器的連接的步驟。

【專利附圖】

【附圖說明】
[0061]通過閱讀示例性實施方式的結合附圖給出的下面的描述,上述的本發明的特徵以及其他特徵將會變的更加清楚,在附圖中:
[0062]圖1示出了可在機器上執行的多種類型的軟體模塊。
[0063]圖2示出了本發明的實施方式中的總線的軟體架構。
[0064]圖3示出了機器中的總線的初始化階段。
[0065]圖4示出了在參與總線的機器之間的發現階段。
[0066]圖5示出了總線的依靠同一個總線管理模塊的兩個客戶端軟體模塊間的信息交換。
[0067]圖6示出了總線的依靠不同總線管理模塊但託管於相同進程的兩個客戶端軟體模塊間的信息交換。
[0068]圖7示出了總線的託管於不同進程甚至不同機器的兩個客戶端軟體模塊間的信息交換。
[0069]圖8示出了依照於特定實施方式的信息處理裝置的架構,以及
[0070]圖9示出了依照本發明的方法的多個步驟的圖表。

【具體實施方式】
[0071]圖2示出了本發明的實施方式中的總線的軟體架構。本發明基於信息處理裝置
2.1中的兩個可能的進程架構。進程2.2示出了第一個可能的架構。在此架構中,總線2.4的第一管理軟體模塊使一個或多個的軟體模塊2.6,2.7和2.8能夠與總線進行通信。旨在與總線進行通信的軟體模塊被稱為總線的客戶端模塊。這些軟體模塊通常是在進程中被並行調度的線程。總線2.4的管理模塊通常也是線程。這些線程隨後會在進程中的由作業系統進行調度。調度方式通常為搶佔式。可選地,可通過進程中的自組(ad hoc)調度器對軟體模塊進行調度,這些軟體模塊隨後被稱為在進程中並行執行的任務。隨後其調度可以是或不是搶佔式的。自組調度器可以依照實施方式與總線2.4的管理模塊或獨立模塊(未顯示)進行合併。
[0072]在進程2.3中,線程2.5被用來為進程管理總線。線程2.9是總線的客戶端進程。另一方面,線程2.10不是總線的直接客戶端。它託管線程內部的總線管理模塊2.11和一個或多個的任務2.12,2.13和2.14。在這之後這些任務才變為總線的客戶端。這些任務通過自組調度器在線程2.10中被調度,其中自組調度器可與或不與總線管理模塊2.11合併。
[0073]隨後軟體被分為進程2.2和2.3。每個進程都包括總線2.4,2.5的管理模塊。進程還負責託管一個或多個總線2.6,2.7,2.8和2.9的客戶端軟體模塊。這些總線的客戶端可以是在進程中直接執行的線程或任務。這些客戶端還可能包括在線程中執行的任務2.12、
2.13和2.14。該線程還負責託管總線的管理模塊2.11。
[0074]在機器中的總線的初始化階段以圖3所示的下述方式進行。將與總線進行通信的客戶端軟體模塊分布在一個或多個進程中。這些進程中的一個進程被選作主進程。其餘進程,如果有的話,則變為從屬進程。
[0075]在步驟3.1中,從屬進程的總線管理模塊建立與主進程的總線管理模塊的連接鏈路。通常,這個連接鏈路是UNIX套接字。
[0076]在步驟3.2中,總線的各個客戶端軟體模塊通過總線進行註冊。該註冊通過客戶端軟體模塊所依靠的進程或線程中的總線管理模塊進行。有利地,該註冊包含軟體模塊的名稱、對上述客戶端軟體模塊所依靠的總線管理模塊的引用、以及可見模式。可見模式包含私用模式,在私用模式下,總線的客戶端軟體模塊可以在總線上向其它公用客戶端發送消息並接收與之相關的響應,但不接收來自其他公用客戶端的直接消息。可見模式還包含公用模式,在公用模式下,總線的客戶端軟體模塊的名稱和位置都是公開的,也因此可以接收和發送消息。
[0077]在步驟3.3中,針對總線的每個已註冊的客戶端軟體模塊,總線管理模塊建立在總線的相同管理模塊上進行交換的情況下使用的FIFO(先入先出)。如果由FIFO負責的總線管理模塊的列隊和總線的客戶端的列隊協同作用,則這些FIFO可以是簡易的FIFO,就是說它們不被互斥所保護。在相反的情況下,則使用受互斥機制保護的FIFO。總線的每個管理模塊都擁有在與總線的其它管理模塊進行交換的情況下使用的FIFO來管理對與此客戶端模塊相關的消息的接收。
[0078]在步驟3.4中,接收總線的客戶端軟體模塊的註冊的從屬進程的總線管理模塊將這些註冊導出到主進程的總線管理模塊。總線的這個管理模塊維護存在於機器上的總線的客戶端軟體模塊的表格,該表格被稱為用戶路徑表。用戶在這裡是總線的客戶端模塊。有利地、只有被宣布為公用的模塊才會出現在此表格中。
[0079]在步驟3.5中,主進程裡,主進程的總線管理模塊啟動與裝置中從屬進程的總線的客戶端軟體模塊數量相當的軟體模塊。這些軟體模塊由主進程的總線管理模塊進行管理,並被稱為中繼(代理服務)軟體模塊。這個步驟是可選的。在如下面將要描述的信息交換中,中繼進程可根據需要可選地建立。
[0080]裝置中的總線的啟動階段因此構成了內部發現階段,在內部發現階段中,裝置中的多個進程與被選作主進程的進程建立通信,同時,裝置中的總線的每個客戶端軟體模塊都被主進程的總線管理模塊所發現,該管理模塊保有裝置中的總線的所有客戶端軟體的表格。
[0081]有利地,總線的初始化還包括在參與於該總線的機器間進行發現的步驟。這個步驟如圖4中的流程圖表所示。它是針對於各個裝置的,由主進程的總線管理模塊來實現的。
[0082]在聲明步驟4.1中,每個裝置通過連接各個裝置的通信網絡發送聲明。有利地,這種發送是在其子網絡上用廣播模式通過區域網鏈路,和在特定群組中用多播模式通過廣域網鏈路完成的。有利地,通過不斷重複這種發送,使連接到總線的新機器能夠發現現有的機器。聲明信息包括機器的名稱和其IP位址以及使能IP連接的埠。
[0083]在步驟4.2中,裝置接收來自遠程裝置的聲明信息。
[0084]在步驟4.3中,裝置檢查發送它所接收聲明的遠程裝置是否是已知的。有利地,此裝置維護顯示已知機器的表格,這樣就可以滿足它通過此表格來檢查是否存在此遠程裝置入口的需要了。
[0085]如果此裝置是已知的,則不需要進行任何操作,在等待接收另一個聲明信息時會產生循環。
[0086]如果此裝置是未知的,它則會在步驟4.4中被添加到表格上。在表格中會建立已知機器的入口,入口通過遠程裝置的名稱、IP位址和它可被連接的埠來顯示。
[0087]在步驟4.5中,與遠程裝置的連接被建立。此連接可以以機器間通信專用的INET套接字的形式存在。有利地,兩個INET套接字被創建,一個使用信息交換專用的TCP (傳輸控制協議),另一個使用信令消息(如聲明信息)專用的UPD (用戶數據報協議)。
[0088]在這種機器間發現階段的最後,連接到總線的各個機器的各個主進程的總線管理模塊都是相互連接的。在每個機器中,所有遠程機器都是已知和被引用的。通信鏈路會針對這些遠程機器中的每一個進行建立。
[0089]總線的兩個客戶端軟體模塊間的消息交換使用相同的編程接口 API (應用程式編程接口)來訪問總線,不論這兩個軟體模塊是什麼類型。
[0090]總線的依靠相同總線管理模塊的兩個客戶端軟體模塊間的消息交換如圖5所示。在這種情況下,這兩個客戶端通常是同一線程中的任務。
[0091]在步驟5.1中,發送器通過總線的API傳送它的消息,並指定被訪地址的名稱。
[0092]在步驟5.2中,總線管理模塊認知到被訪地址是自身範圍的一部分,例如,通過將被訪地址的總線管理模塊的引用與它自己的進行比較;隨後在其的簡單FIFO中傳送此消肩、O
[0093]在步驟5.3中,被訪地址通過對簡單FIFO進行提取的操作對為它準備的一個或多個消息進行恢復。
[0094]總線的、不依靠該總線的相同管理模塊但存儲於相同進程中的、兩個客戶端軟體模塊之間的消息的交換如圖6所示。
[0095]在步驟6.1中,發送器通過總線的API傳送它的消息,並指定被訪地址的名稱。
[0096]在步驟6.2中,總線管理模塊認知到被訪地址不是自身範圍的一部分,例如,通過將被訪地址的總線管理模塊的引用和它自己的進行比較;隨後在被訪地址的總線管理模塊的FIFO中傳送此消息。
[0097]在步驟6.3中,被訪地址的總線管理模塊提取出其FIFO中存在的一個或多個消息,並將它們傳送到上述消息的被訪地址的FIFO中。
[0098]在步驟6.4中,被訪地址通過對FIFO進行提取的操作對為它準備的一個或多個消息進行恢復。
[0099]關於由位於不同進程的總線客戶端軟體模塊構成的發送器和接收器之間的信息傳輸,這種傳輸使用的是中繼軟體模塊。在每個進程中,總線具有用於對由總線管理且充當遠程軟體模塊的中繼的總線客戶端軟體模塊進行初始化的裝置。因此被訪地址的中繼軟體模塊在發送器的進程中建立,而發送器的中繼軟體模塊則在被訪地址的進程中建立。這些中繼軟體模塊由總線管理。因此,從被訪地址的發送器來看,通信好像總是在進程內部。同樣的基元可為總線的客戶端軟體模塊所用。是總線在管理經由這些中繼軟體模塊進行的進程間通信。這些中繼軟體模塊還使通信的異步運行變得可行。這是因為發送器在通過被訪地址的中繼軟體模塊傳送它的消息的同時還可繼續它的處理過程。在這期間,總線將消息通過進程間的連接(通常是UNIX套接字)發送到真正的被訪地址。
[0100]關於進程間的這種通信,已經知道在總線進行初始化時,從屬進程和主進程間會建立起通信鏈路。但是,從屬進程彼此間沒有鏈路被建立。因此,也就是說,當發送器和被訪地址需由兩個從屬進程託管時,這兩個從屬進程間會建立起鏈路(通常是UNIX套接字)。
[0101]託管於不同機器的發送器和被訪地址間的傳輸過程是通過完全相同的方式進行的。它也牽涉被訪地址進程中發送器的中繼模塊和發送器進程中的被訪地址的中繼模塊。由這兩個機器的主進程的總線管理模塊管理的路由階段使這兩個進程中建立起直接連接。這裡的這種連接通常是INET套接字。
[0102]這種通信通過如圖7所示的流程來實現。
[0103]在第一步7.1中,想要發送消息的被稱為發送器的總線客戶端軟體模塊通過總線通過被訪地址的名稱執行路由步驟,即通過它所依靠的總線管理模塊來執行路由步驟。
[0104]在步驟7.2中,當總線認知到被訪地址託管於不同進程時,它在發送器進程中創建此被訪地址的中繼軟體模塊。在一些實施方式中,如果中繼在初始化階段中被創建,則中繼模塊可以是預先存在的(如在主進程中),參見可選步驟3.5。
[0105]在步驟7.3中,消息隨後依照所描述的在進程中傳輸消息的機制被傳送到這個中繼軟體模塊。如果通信是異步的,則發送器即可重新開始它的進程。
[0106]在步驟7.4中,總線會按照要求創建與託管被訪地址的進程的直接鏈路。這裡有一些案例。如果通信發生在同一機器中的從屬進程和主進程之間,那麼通信鏈路是已存在的。不必再進行創建。如果通信發生在同一機器的兩個從屬進程之間,那麼這兩個從屬進程之間就必須要建立起通信鏈路(通常是以UNIX套接字的形式)。如果通信發生在兩個不同的機器間,那麼兩個進程間就必須創建起直接鏈路(通常是以INET套接字的形式)。直接鏈路的創建由互換必要地址和埠的兩個機器的主進程來協商進行的。
[0107]在步驟7.5中,總線在託管被訪地址的進程中創建發送器的中繼軟體模塊。
[0108]在步驟7.6中,消息隨後通過創建於兩個進程間的直接通信鏈路在兩個中繼間進行傳遞。
[0109]在最後一步7.7中,包括通過已向最終被訪地址描述的進程間機制來傳遞消息。
[0110]有利地,總線客戶端軟體模塊的命名是依照源於用於URL(統一資源定位器)的方案進行。根據這種方案,模塊的名稱按如下方式被分解:「ism://name_machine/name_modul e_sof tware 」,其中I SM是依照本發明分配給總線協議的名稱。在同一機器中,簡化為「name_module_software」的相關命名可被使用。
[0111]有利地,相同進程範圍內的FIFO中的多個消息的各種副本被規避。在公共內存空間中,消息被複製一次,之後僅有一個消息的引用被交換。這種方法限制了實際的複製。
[0112]圖8示出了信息處理裝置3的配置實例,在給定示例中,具有與本說明書的圖1和圖2中示出的信息處理裝置相比的細節,通過閱讀本說明書的餘下部分而看出的細節。
[0113]可以看到,在討論中的時刻,信息處理裝置3使三個進程3.1,3.2和3.3能夠並行執行。這三個進程由信息處理裝置3的作業系統3.0來調度。
[0114]進程3.1自身包括多個線程3.11,3.12和3.13,它們在作業系統3.0的調度下並行執行。進程3.1還包括與進程3.10同一類型的總線管理模塊。
[0115]線程3.11包括系統任務,即使消息能夠在進程間進行交換的屬於進程間類型3.118的通信模塊(將在下面進行說明)和使消息能在多個信息處理裝置間進行交換的屬於裝置間類型3.119的通信模塊。線程3.12包括兩個用戶任務3.121和3.122以及屬於線程3.120類型的總線管理模塊,其中總線管理模塊包括單個線程3.12的所有任務的專屬調度器(未顯示),在此情況中為任務3.121和3.122。線程3.13包括用戶任務3.131和屬於線程類型的總線管理模塊3.130,其中總線管理模塊3.130包括用戶任務3.131的專屬調度器。
[0116]進程3.2包括線程3.21和屬於進程3.20類型的總線管理模塊。線程3.21包括用戶任務3.211和系統任務(即屬於進程間類型3.218的通信模塊)和屬於線程3.210類型的總線管理模塊,其中該總線管理模塊包括單個線程3.21的所有任務的專屬調度器,在此情況中則是用戶任務3.211和通信模塊3.218。
[0117]進程3.3包括兩個線程3.31和3.32以及屬於進程類型的總線管理模塊3.30。線程3.31包括用戶任務3.311和系統任務(即屬於進程間類型的通信模塊3.318),以及屬於線程類型的總線管理模塊3.310,其中總線管理模塊3.310包括線程3.31的所有任務(即任務3.311和通信模塊3.318)的專屬調度器。同樣對進程3.32來說,它包括兩個用戶任務3.321和3.322以及屬於線程類型的總線管理模塊3.320,總線管理模塊3.320包括線程的所有任務即任務3.321和3.322的專屬調度器。
[0118]需要指出的是調度體系是分層的,因此在同一進程中它包括一個或多個自身包含一個或多個任務的線程。此外,對進程和線程的調度將被認為是搶佔式的,並通過信息處理裝置的作業系統3.0來執行的。對線程中任務的調度來說,它被認為是或不是搶佔式的,並通過專屬調度器來執行,也就是說從屬於上述線程。
[0119]應指出,在另一個時刻,這種配置可能會改變。因為,舉例來說,任務、線程甚至是進程已經結束了它的執行過程,或者因為在所謂的移動模式下,任務已從一個線程轉移到同一進程或不同進程中的另一個線程。
[0120]每個屬於線程類型的總線管理模塊都包括受保護的FIFO和分別專用於相應線程的用戶任務的FIFO。這些FIFO的作用將在下文進行說明。為了減輕圖片的負荷,這些FIFO並未顯示在圖8中。
[0121]每個屬於進程類型3.10,3.20和3.30的總線管理模塊都進一步包括路徑表3.101,3.201,3.301 ;這些路徑表中存儲著每個任務的名稱、以及對相應線程類型的總線管理模塊中的FIFO的引用。
[0122]每個任務都能夠發送和接收指令消息、發送和接收指令消息的響應、以及發送和接受通知、發送和接受通知的響應。
[0123]為發送指令消息,任務為這類型消息調用一種獨特的典型的方法,在這種方法中,此類消息被視為相關任務在上述相關總線的註冊過程中,相關任務引用所提供的參數、相關總線名稱和相關任務的名稱(/〈name_distant_task>),可選地,如果這個任務要求響應,(那麼此類消息就被視為)用於此類型響應的以總線為原型的引用和回調函數、以及執行命令所必需的參數。
[0124]為接受指令消息,任務通過由上述總線披露的用於此類指令接收的方法來定位以總線為原型的事件觸發函數(被稱為回調函數)和用於觸發此函數的引用。
[0125]為發送通知,任務為這類通知調用一種獨特的典型的方法,在這種方法中,此類通知被視為任務引用所涉及的參數(在上述總線進行註冊時所提供的),可選地,如果這個任務要求響應,用於此類型響應的以總線為原型的引用和回調函數,以及用於通知的所需參數。
[0126]最後,為接受:通知,任務將所涉及總線的名稱和所涉及任務的名稱〈name_distant_bus>/〈name_distant_task>、以上述總線為原型的事件觸發函數(回調函數)以及觸發上述函數的引用進行定位。
[0127]為發送指令消息或通知的響應消息,總線管理模塊為這類響應調用一種獨特的典型的方法,在這種方法中,此類消息被視為消息引用通過調用預配於上述消息接收的回調函數來提供的參數,以及上述函數所必需的參數。
[0128]圖1所示的這些多種類型的任務、多種類型的線程和進程都屬於同一個被稱為軟體總線的邏輯實體,舉例來說,這種軟體總線可被命名為「bus_l」。
[0129]本發明僅對路由功能使用主/從分層體系架構。因此,在信息處理裝置之中,一個進程被初始化為主模式,同時同裝置中的其他進程被初始化為從屬模式。在所示的配置實例中,在信息處理裝置I中,進程3.1被初始化為主模式,進程3.2和3.3被初始化為從屬模式。
[0130]需要指出的是,包括主進程和從屬進程在內的擁有不同名稱的一些總線可能共存於同一個信息處理裝置上。
[0131]主進程3.1具有通信模塊3.118、通信模塊3.218和3.318,屬於主進程3.1的進程間類型3.118的通信模塊3.118在名為「/var/run/bus_l/Master」的Unix套接字上處於監聽模式,屬於進程間類型的通信模塊3.218和3.318在主進程3.1的Unix套接字上處於連接模式。
[0132]需要注意,通常來說,在同一個信息處理裝置中,主進程和從屬進程的總線的名稱是相同的,但是這種情況絕不是絕對的。
[0133]通過訪問表在從屬進程、主進程和身份識別驗證間建立連接後,從屬進程3.2和3.3分別通過埠 3.118_12和3.118_13與主進程相連接。進程的每個連接都被認為是與討論中的總線名稱的連接,在此情況下是總線「buS_l」。
[0134]對於在任務間路由消息的過程,本發明使用中央集成的分層體系架構;然而,對於任務間的消息交換,本發明使用分布式的體系架構。為了解釋這兩個特徵,任務間傳輸消息交換的實例將在下文中給出。
[0135]因此應理解,在信息處理裝置I和同一進程中,不論主進程或是從屬進程,一個任務希望向另一個構成相同線程一部分的任務發送消息。舉例來說,名為3.321的任務希望向構成同一線程3.32 一部分的名為3.322的任務發送一個已知消息。線程總線3.321的管理模塊接管此消息,並向屬於進程類型3.30的總線管理模塊請求此消息應該遵循的路徑。通過路徑表3.301,屬於進程類型3.30的總線管理模塊回復它對被線程總線3.320相同管理模塊所託管的任務3.322專用的不受保護FIFO的引用。上述線程總線3.320的管理模塊隨後在上述的FIFO中傳送上述消息,並觸發關於調度這個目的任務3.322的請求。一旦這個任務被調度,此消息就會從FIFO中被提取,任務3.322則通過調用它有消息中所含參數的事件觸發函數(回調函數)將此消息納入考慮。
[0136]現在考慮信息處理裝置I中的任務,它想要向構成另一線程的一部分但在同一進程中的任務發送消息。舉例來說,名為3.321的任務想要向名為3.311的構成另一線程3.31的一部分但同屬於進程3.3的任務發送消息。線程總線3.321的管理模塊接管此消息,並向屬於進程類型3.30的總線管理模塊請求應遵循的路線。總線管理模塊回復它對屬於線程類型的總線管理模塊3.310的受保護FIFO的引用。上述的屬於線程類型的總線管理模塊3.320隨後在上述的線程3.310總線管理模塊的受保護FIFO中傳送此消息,並通過可用作業系統3.0實現的某種方法,提出調度包含上述FIFO的管理模塊(即總線管理模塊3.310)的請求。一旦總線管理模塊3.310被調度,線程3.310的總線管理模塊就會將消息從受保護的FIFO中提取出來,並像前一個例子那樣向進程的總線管理模塊3.30發送路由請求,同時從總線管理模塊3.30得到對於不受保護FIFO的引用;以此通過目的任務3.311來接收被發送的消息。線程的總線管理模塊3.310隨後在這個不受保護的FIFO中傳送消息並提出調度目的任務3.311的請求。一旦任務3.311被調度,此消息就會從FIFO中被提取,任務3.311則通過調用它有消息中所含參數的事件觸發函數(回調函數)將此消息納入考慮。
[0137]需要指出的是,如果FIFO在消息被發送到其中時並不是空閒的,那則是因為它所包含的一個或多個信息還沒有被提取。然而,這也意味著對相應線程的喚醒已被觸發。因此,只有在FIFO是空的時才可能完成對線程的喚醒。
[0138]還需要指出的是,為了滿足用戶任務的移動端,路由過程是被常規性執行的。這是因為儘管目的任務在從受保護FIFO中提取消息之前已被轉移,路由過程還是會使能必需的路由重建。
[0139]現在考慮在信息處理裝置I中,從屬進程線程上的任務想要向託管於主進程線程的另一個任務發送消息。舉例來說,任務3.321想要向名為3.121的託管於進程3.1的線程3.12的任務發送已知消息。屬於線程類型3.320的總線管理模塊接管此消息並向屬於進程類型的總線管理模塊3.30請求此消息應遵循的路徑。總線管理模塊3.30則回複目的任務3.121對於它是未知的。總線管理模塊3.30存儲此要進行傳輸的消息,並使用信令連接3.318_13以「distant-task search (遠程任務搜索)」的消息類型(如來自本地任務3.321)發送一條消息。線程3.11的進程3.1的通信模塊3.118在它的連接3.118_33上接收此「distant-task search (遠程任務搜索)」類型的消息,並通知屬於進程類型的總線管理模塊3.10,總線管理模塊3.10隨後在它的路徑表3.101中進行尋找。
[0140]在總線管理模塊3.10的路徑表3.101中,目的任務3.121被認為是常駐於線程3.12上的。依照本發明,屬於進程類型3.10的總線管理模塊建立一個擁有從搜索消息中提取的特性的遠程中繼任務R3.321 ;此中繼任務被建立在與之前接收此搜索消息的通信模塊所在的相同的線程上,即線程3.11。隨後屬於進程類型3.10的總線管理模塊經由接收此搜索消息的連接,即連接3.118_33向管理模塊3.30發送「add relay task(增加中繼任務)」類型的(如來自本地任務3.121)具有建立中繼任務所需特性的消息,作為對上述搜索消息的回應。線程3.31的進程3.3的通信模塊3.318在它的連接3.318_31上接收「addition of remote task (增加遠程任務)」類型的消息並通知屬於進程類型3.30的總線管理模塊。屬於進程類型3.30的總線管理模塊建立具有從此消息中提取的特性的中繼任務R3.121,此中繼任務被建立在與之前接收此附加類型的消息的通信模塊所在的相同的線程上,在此情況下是線程3.31 ;隨後屬於進程類型3.30的總線管理模塊用這個新任務來擴大它的路徑表。接下來是對等待路由的對應此名稱的消息的搜索。相應的消息被存儲在目的任務R3.121專用的不受保護的FIFO中。
[0141]屬於線程類型3.310的總線管理模塊生成用於調度這個中繼任務R3.121的指令。一旦這個任務被調度,屬於線程類型的總線管理模塊3.310就將通信裝置3.318的連接3.118_33中的消息進行序列化。由屬於線程類型的總線管理模塊3.110管理的連接3.118_33對此消息進行接收和反序列化。管理模塊3.110隨後執行所有已描述的用來在任務3.121專用的FIFO中傳送消息的操作,並在任務3.121專用的FIFO是空閒的情況下,通過這些操作來生成調度指令。一旦任務3.121被調度,消息就會從FIFO中被提取,任務3.121通過調用它的有消息中所含參數的事件觸發函數(回調函數)將此消息納入考慮。
[0142]可以理解的是,任務3.321可以通過線程3.31的中繼任務R3.121和線程3.11的中繼任務R3.321來與任務3.121進行通信。
[0143]重新考慮在信息處理裝置I中,從屬進程的任務想要向另一個現託管在另一從屬進程線程上的任務發送一個已知消息。舉例來說,任務3.321想要向名為3.211的由線程3.21上進程3.2託管的任務發送消息。屬於線程類型3.320的總線管理模塊3.320接管此消息並向屬於進程類型的總線管理模塊3.30請求此消息需遵循的路徑。總線管理模塊3.30則向總線管理模塊3.320回復這個目的任務對於它是未知的。總線管理模塊3.30將此消息進行存儲並通過進程間類型3.318的通信模塊來發送一個「remote task search (遠程任務搜索)」類型的消息(如來自任務3.321)。主進程3.1和線程3.11的通信模塊3.118在它的信令類型連接3.118_33上接受此「remote task search(遠程任務搜索)」的消息,並通知屬於進程類型3.10的總線管理模塊,這個總線管理模塊隨後在自己的路徑表3.101中進行尋找。
[0144]屬於進程類型3.10的總線管理模塊中,因為目的任務3.211並不託管於主進程3.1,所以目的任務對這個總線管理模塊是未知的。屬於進程類型的總線管理模塊3.10在所有帶有相關總線名字「bus_l」建立的連接中廣播這條搜索信息(除了看到上述第一條搜索信息通過的連接),也就是說在通信模塊3.119和3.118_32中的帶有名稱「bus_l」的連接中進行廣播。在接收到此「remote task search (遠程任務搜索)」類型的消息時,每個通信模塊都針對它所依靠的進程類型向總線管理模塊進行通知,總線管理模塊來查找所要尋找的目的任務是否出現在自己的路徑表中。
[0145]只有線程3.21的進程3.2的通信模塊3.218的路徑表中有常駐於和通信模塊3.218相同進程和相同線程的相關任務3.211,通信模塊3.218將其通知給線程類型3.20的總線管理模塊。此總線管理模塊,如上文已經說明的,在與之前接受搜索消息的通信模塊3.218所處的相同線程3.21上建立一個具有從搜索信息中提取特性的中繼任務R3.321,並擴大自身的路徑表,發起對等待路由的消息的搜索;同時使用名為「/var/run/busj/Slave_3.2」的Unix套接字的名稱作為消息的連接參數來傳輸「add remote relay (添加遠程中繼)」類型的消息(如來自任務3.211)。線程3.11的進程3.1的通信模塊3.118在它的連接3.118_32上接收此「add remote relay task(添加遠程中繼)」類型的消息並將其傳送到第一個搜索信息請求來源的連接3.118_33。線程3.11的進程3.1的通信模塊3.118在它的連接3.118_31接收此「add remote relay task(添加遠程中繼)」類型的消息並將其通知給進程類型3.30的總線管理模塊。
[0146]進程類型3.30的總線管理模塊在與託管之前接收「add remote relay task(添加遠程中繼)」類型3.318消息的通信模塊3.318的相同的線程3.31上建立具有從搜索消息中提取特性的中繼任務R3.211,隨後通過上述中繼任務R3.211來擴大自己的路徑表3.301。此外,進程類型3.30的總線管理模塊用上述「add remote relay task(添加遠程中繼)」類型的消息所含的信息來初始化連接請求;隨後,在此連接被接受時,識別和身份驗證通過訪問表按階段進行。接下來是對等待路由的對應此名稱的消息的搜索。相應的消息被存儲於目的任務R3.211專用的不受保護的FIFO中。
[0147]線程類型3.310的總線管理模塊發出調度這個中繼任務R3.211的請求。一旦這個中繼任務R3.211被調度,線程類型的總線管理模塊3.310就將包含於通信模塊3.318的連接3.318_32中的消息進行序列化。由總線管理模塊3.210管理的連接3.21_33對此消息進行接收和反序列化。
[0148]管理模塊3.210隨後執行所有的已描述的用來在任務3.211專用FIFO中傳送消息的操作,並在此FIFO空閒時執行所有已描述的用來發出調度請求的所有操作。一旦任務3.211被調度,消息就會從FIFO被提取出來,任務3.211通過調用有消息中所含參數的事件觸發函數(回調函數)來將此消息納入考慮。
[0149]任務3.211的操作模式可被擴展用來進行信息處理裝置間的消息交換,增加遠程任務類型的消息隨後將通過裝置間通信模塊3.119和ip埠地址類型的INET套接字信息一起到達。在此情況中,序列化/反序列化階段是必需的。
[0150]在移動模式中,依照本發明的總線的功能如下所示。
[0151]考慮在信息處理裝置I中,名為3.321的任務從總線撤銷註冊。相應的線程類型的總線管理模塊3.321隨後會釋放FIFO資源、調度器資源和註冊時補充的引用資源。線程類型的總線管理模塊3.321還會面向進程中所有線程的所有本地任務和進程中信令類型的所有連接,通過通信模塊3.318生成遠程任務消除消息3.321。通信裝置3.118的連接
3.118_33接受此消息並通知進程類型的總線管理模塊3.10,此總線管理模塊負責檢查它是否有相應的遠程中繼任務。如果是這樣的話,此總線管理模塊就會釋放這些遠程中繼任務。如果有消息在等待回執,這些消息則是被重新插入FIFO中等待遠程中繼搜索進程的,這種進程將因此被啟動。進程類型的總線管理模塊還會檢查數據類型的連接是否沒有連接到任何一個遠程中繼任務。如果是這樣的話,它就將釋放此連結,並通過除了消息來源之外的所有信令連接,即3.118_32和3.119傳播此消息。通信裝置3.218的連接3.128_31接收此消息並通知給進程類型的總線管理模塊,此總線管理模塊負責檢查它是否有相應的遠程中繼任務。如果是這樣的話,此總線管理模塊就會釋放這些遠程中繼任務。如果有消息在等待回執,這些消息則是被重新插入FIFO中等待遠程中繼搜索進程的,這種進程將因此被啟動。進程類型的總線管理模塊還會檢查數據類型的連接是否沒有連接到任何一個遠程中繼任務。如果是這樣的話,它就會釋放這個連接。
[0152]此外,如果任務3.321被插入到進程3.2的線程3.21中,進程類型3.20的總線管理模塊的路徑表就會將這個名稱增加進來。其結果是一個搜索對應此名稱的等待消息的過程。另外,對應此名稱的搜索消息會得到尊重。
[0153]概括來說,參考圖9,為了從首要任務3.321向第二任務傳送消息,依照本發明的消息交換方法包括:
[0154]-由託管上述第一任務3.321的線程3.32的總線管理模塊3.320執行的以下步驟:
[0155]-步驟5.1:當上述第二任務3.322或3.311和上述第一任務3.321從屬於相同的進程3.3時,在上述第二任務3.322專用的FIFO中傳送上述消息,這樣第二任務3.322可以將此消息納入考慮,否則
[0156]-步驟5.2:向上述主進程3.1的總線管理模塊3.10傳送尋找第二任務的消息,
[0157]-由主進程3.1的總線管理模塊3.10執行的以下步驟:
[0158]-當上述次要進程3.121託管於上述主進程3.1的線程3.12時,
[0159]-步驟5.3:在上述主進程3.1的線程3.11中建立遠程中繼任務R3.321,
[0160]-步驟5.4:向上述託管第一任務3.321的線程3.32的總線管理模塊3.320傳送響應,
[0161]-當上述次要進程3.121不被上述主進程3.1的線程3.12託管時,
[0162]-步驟5.5:向上述各個進程類型的總線管理模塊(在此情況中,只有模塊3.20)廣播尋找第二任務的消息,
[0163]-接收到尋找第二任務的消息時,由託管第二任務3.211的從屬進程3.2的總線管理模塊3.20執行的以下步驟:
[0164]-步驟5.6:在上述從屬進程3.2的線程3.21中建立遠程中繼任務R3.321,
[0165]-步驟5.7:向上述主進程3.1的總線管理模塊3.10傳送響應,
[0166]-步驟5.8:在接收到由從屬進程3.2的總線管理模塊3.20傳送的響應後,向上述託管第一任務3.321的線程3.32的總線管理模塊3.30發送響應;此步驟依然由主進程3.1的總線管理模塊3.10執行,以及
[0167]-當託管上述第一任務3.321的線程3.32的總線管理模塊3.30接收到來自上述主進程3.1的總線管理模塊3.10的響應後,由託管上述第一任務3.321的線程3.32的總線管理模塊3.30執行的以下步驟:
[0168]-步驟5.9:在託管上述第一任務3.321的上述進程3.3的線程3.31中,建立對應於上述遠程中繼任務R3.321的中繼任務R3.211,以及
[0169]-步驟5.10:在上述中繼任務R3.211專用的FIFO中傳送上述消息,中繼任務R3.211專用的FIFO先將此消息傳送到遠程中繼任務R3.321,隨後再將此次消息傳送到第二任務 3.211。
[0170]因此,如下文所解釋的,本發明提出了一種用來在從屬於不同線程的不同任務間進行通信的系統,其中這些線程本身又從屬於不同的進程。同時在此系統中,上述任務被分組到同一個實體或軟體總線,或者從另一方面說,從屬於不同的軟體總線。
[0171]總之,這種任務間的通信使用的是基於I對I或者I對η發送消息的命令/響應類型的客戶端/伺服器模式,以及基於I對η發送消息的通知/響應類型的客戶端/伺服器模式。它使用將客戶端任務根據〈總線名稱>/〈任務名稱〉的格式進行命名的系統。這類通信可通過任務對任務直接進行通信或經由插入服務(如產生服務命令隨後通知用戶任務服務的任務系統)間接進行通信來實現。這類通信發生在同一個進程裝置中,但也可能出現在兩個信息處理裝置間。另外,對於這類通信來說,任務可被託管於和/或被移動到特定的信息處理裝置或特定的進程或特定的線程上。
[0172]這類通信是基於總線名稱和任務名稱,分層調度體系架構,用於路由功能的中央集成體系架構,用於消息交換的分布式體系架構,以及發現和註冊/註銷註冊多個擁有一個或多個總線名稱的任務的階段的。
【權利要求】
1.一種信息處理裝置,包括: -作業系統: -至少一個進程,由所述作業系統調度,以及 -線程,能夠由所述作業系統在所述進程中進行調度, 其特徵在於,所述信息處理裝置還包括: -至少一個用戶任務或者系統任務,位於各線程中, -各線程本身包含針對所述線程中包括的各個任務的FIFO、以及線程類型的、本身集成了用於調度所述線程的一個或多個任務的專屬調度器的總線管理模塊, 其特徵還在於,為了使第一任務能夠向第二任務發送消息,所述信息處理裝置包括: -用於尋找所述第二任務所依靠的進程的裝置,以及 -在所述第二任務和所述第一任務屬於相同進程的情況下用於在所述第二任務專用的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的裝置, -在所述第二任務屬於與所述第一任務所依靠的進程不同的進程的情況下 -用於在所述第二任務所依靠的進程的線程中創建遠程中繼任務的裝置, -用於在所述第一任務所依靠的進程的線程中創建中繼任務的裝置, -用於在所述第一任務所依靠的進程與所述第二任務所依靠的進程之間創建連接的裝置, -用於在所述中繼任務專用的FIFO中傳送所述消息的裝置, -用於經由所述連接將所述消息發送至所述遠程中繼任務的裝置, -用於在所述第二任務的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的裝置。
2.根據權利要求1所述的信息處理裝置,其特徵在於,所述用於尋找所述第二任務所依靠的進程的裝置包括與各個進程相關的總線管理模塊,所述總線管理模塊中的每一個均包括列出進程的任務和線程的路由表,其中任務和線程依靠進程。
3.根據權利要求1或2所述的信息處理裝置,其特徵在於,對於各個進程,用於在所述中繼任務與所述遠程中繼任務之間發送消息的裝置包括由進程的線程託管的進程間通信模塊。
4.根據前述權利要求中任一項所述的信息處理裝置,其特徵在於,所述信息處理裝置包括將進程中的一個初始化為主進程並將其他進程初始化為從屬進程的裝置。
5.根據權利要求4所述的信息處理裝置,其特徵在於,所述主進程包括由進程的線程託管的裝置間通信模塊,以便能夠在裝置的中繼任務和由另一個信息處理裝置託管的遠程中繼任務之間發送消息。
6.—種在運行於一個或兩個信息處理裝置上的任務之間交換消息的方法,所述方法包括: -作業系統; -至少一個進程,由所述作業系統排序;所述進程或所述進程中的一個被初始化為主進程,並且如果存在其他進程的話,則將其他進程初始化為從屬進程, -線程,能夠由所述作業系統在所述進程中進行調度;以及 -至少一個用戶任務和/或一個系統任務,特別是進程間通信模塊或裝置間通信模塊,位於各個線程中;進程的至少一個線程包括進程間通信模塊,並且所有進程的至少一個線程包括裝置間通信模塊, -各個進程都包括進程類型的總線管理模塊,以及 -各個線程本身包括針對所述線程中包括的各個任務的FIFO、以及集成了用於調度上述線程的專屬調度器的線程類型的總線管理模塊, 其特徵在於,為了使消息能夠從第一任務發送到第二任務,所述方法包括 -由託管所述第一任務的線程的總線管理模塊實現的以下步驟: -在所述第二任務和所述第一任務屬於相同進程的情況下在所述第二任務專用的FIFO中傳送所述消息使得所述第二任務能夠考慮所述消息的步驟(5.1); -在所述第二任務和所述第一任務屬於不同進程的情況下向所述主進程的總線管理模塊發送尋找所述第二任務的消息的步驟(5.2), -由所述主進程的總線管理模塊實現的以下步驟: -當所述第二任務由所述主進程的線程託管時, -在所述主進程的線程中創建遠程中繼任務的步驟(5.3), -向託管所述第一任 務的線程的總線管理模塊發送響應的步驟(5.4), -當所述第二任務不由所述主進程的線程託管時, -向進程類型的總線管理模塊中的每一個廣播尋找所述第二任務的消息的步驟(5.5), -在接收到尋找所述第二任務的消息時,由託管所述第二任務的從屬進程的總線管理模塊實現的以下步驟: -在所述從屬進程的線程中創建遠程中繼任務的步驟(5.6), -向所述主進程的總線管理模塊發送響應的步驟(5.7), -同樣由所述主進程的總線管理模塊實現的、在接收到由所述從屬進程的總線管理模塊發送的響應後向所述託管所述第一任務的線程的總線管理模塊發送響應的步驟(5.8),以及 -當託管所述第一任務的線程的總線管理模塊接收到來自所述主進程的總線管理模塊的響應後,由託管所述第一任務的線程的總線管理模塊實現的以下步驟: -在託管所述第一任務的進程的線程中創建對應所述遠程中繼任務的中繼任務的步驟(5.9),以及 -在所述中繼任務專用的FIFO中傳送所述消息的步驟(5.10),其中所述中繼任務專用的FIFO先將所述消息發送到所述遠程中繼任務,再將所述消息發送到所述第二任務。
7.—種在運行於一個或兩個信息處理裝置上的任務之間交換消息的方法,其特徵在於,所述方法包括的初始化總線的以下步驟: -從屬進程的總線管理模塊建立與主進程的總線管理模塊的連接鏈路的步驟(3.1); -總線的各個客戶端任務通過這些客戶端任務所依靠的總線的管理模塊來記錄的步驟(3.2); -建立與總線的各個客戶端任務和總線的各個管理模塊相關的FIFO的步驟(3.3);-接收總線的客戶端軟體模塊的記錄的、從屬進程的總線管理模塊將這些記錄導出到所述主進程的總線管理模塊的步驟(3.4)。
8.根據權利要求7所述的方法,其特徵在於,所述初始化步驟進一步包括在所述主進程中創建與裝置中的從屬進程的總線的客戶端任務的數量相當的中繼任務的步驟(3.5)。
9.根據權利要求6或7所述的方法,其特徵在於,通過公用模式或私用模式來記錄總線的客戶端任務,只有公用的任務才被導出到所述主進程。
10.根據權利要求6到9中任一項所述的方法,其特徵在於,所述方法進一步包括在參與於總線的機器之間進行發現的步驟。
11.根據權利要求5所述的方法,其特徵在於,在參與於總線的機器之間進行發現的步驟包括: -參與於總線的各個機器通過連接所述機器的通信網絡發送聲明的聲明步驟(4.1); -接收來自遠程機器的聲明消息的步驟(4.2); -如果發送被接收聲明消息的機器還是未知的則將該機器加入到表中的步驟(4.4); -建立與所述遠程機器的連接的步驟(4.5)。
【文檔編號】G06F9/54GK104081355SQ201280068835
【公開日】2014年10月1日 申請日期:2012年12月14日 優先權日:2011年12月16日
【發明者】安東尼·羅科奎雷, 勞倫·阿拉科恩 申請人:薩熱姆通信寬帶簡易股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀