一種基於事務的構件交互同步的方法
2023-04-23 01:39:11 1
專利名稱::一種基於事務的構件交互同步的方法
技術領域:
:本發明屬於計算機數據交互通訊領域,尤其涉及一種計算機的基於事務的構件化嵌入式作業系統的構件交互同步的方法。
背景技術:
:構件是系統中的可重用的部分,構件的狀態及其行為被構件接口所封裝。構件之間通過接口相互通信(遠程方法調用)。構件之間一般通過IPC機制進行交互,具有良好的隔離錯誤的能力,保護受信任的構件不被幹擾或攻擊。IPC(Inter-ProcessCommunication)是指共享"命名管道"的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。由於構件化作業系統在運行過程中必須頻繁的使用IPC,因此必須保證IPC的效率。由於傳統的構件間交互一般釆用的是客戶端/服務端^t式的IPC,調用者將阻塞直到被調用者發迴響應結果,因此,兩個構件的線程間建立了某種依賴關係,由此在現有技術基礎上構件在交互的過程中可能引起優先級倒置的問題。目前,客戶端/服務端模式的IPC主要用於支持構件之間的遠程方法調用,由於它是基於一種同步的消息傳遞方式,用於實時系統時會導致一些問題。一次典型的構件交互過程如圖l所示,其中包含一個客戶端和一個服務端。在一次完整的遠程方法調用中,服務端應處於特定的狀態,等待接收來自客戶端的請求;客戶端首先是作為發送者,向服務端發送一個請求。一旦服務端接受請求後,它的線程得到執行,最後計算出一個結果,在服務端將該結果返回給客戶端的過程中,服務端是發送者的角色,而客戶端是接收者的角色。客戶端在發送請求後一直處於阻塞狀態,直到服務端返回結果或者收到其它線程發起的搶佔式IPC。服務端從接收到請求那一刻起離開阻塞狀態,當把結果返回給客戶端後再次處於阻塞狀態等待新的請求。雖然消息傳遞過程不涉及線程調度,其它所有線程保持原有狀態不變,但是在下一個調度周期到來時,對線程進行調度後有可能發生優先級倒置問題。如圖2所示,高優先級的客戶端C向低優先級的服務端S發送了請求,在S的運行過程中,發生了一次調度,中等優先級的客戶端X搶佔S的運行,結果是,中等優先級的X導致高優先級的C不能及時得到響應。另一種情況如圖3所示,中等優先級的客戶端X向服務端S發送了請求,在服務端S的處理過程中,發生了一次調度,高優先級的客戶端C進入運行,並向服務端S發送請求,但是在客戶端/服務端模式的IPC機制下,服務端S必須處理完客戶端X的請求後才能接收客戶端C的請求,導致高優先級的客戶端C不能得到及時響應。
發明內容本發明提供了一種基於事物的構件化嵌入式作業系統的構件交互同步的方法,該方法有效地解決了客戶端/服務端模式下進程間通信51發的優先級倒置問題,保證了構件之間交互的高效率和低開銷。本發明還提供了一種基於事務的構件化交互模型,該模型基於事務上下文,實現構件之間準確的交互。一種基於事務的構件交互同步的方法,該方法包括系統啟動後,交互同步的構件的客戶端向的交互同步的構件的服務端發送請求(即調用遠程方法),服務端收到客戶端發送的請求,服務端獲取所述基於事務的交互同步構件的事務上下文,根據所述的事務上下文確定客戶端的優先級,優先級高的客戶端先服務;在執行請求的過程中,若有優先級更高的客戶端請求,則中斷當前請求,並保存服務棧的初始狀態,執行優先級高的客戶請求;執行完畢將結果返回給客戶端後,恢復初始狀態,執行原先中斷的請求,執行完畢後將結果返回給客戶端。本發明所述的一種基於事務的構件化交互模型由用於交互同步的構件組成,構件之間通過接口相互通信(即遠程方法調用),該模型基於事務上下文,實現構件之間準確的交互。所述的交互同步的構件包括服務端消息接口Ms,是由服務端接收的消息集,用於接收和處理事務請求;客戶端消息接口Mc,是服務端要求客戶接收的消息集,用於發送事務請求;消息傳遞的協議P;接口API,是構件交互協議的應用程式的編程接口;構件交互時的事務上下文TC,用於存放與調用有關的信息,包括線程的優先級、4丸行時間和服務質量QoS(QualityofService);構件交互時的執行上下文EC,用於存放寄存器組以及線程的狀態信息,包括構件接口是否處於IPC等待狀態信息。所述的服務端包括一個可以存放一組TC和EC的服務棧,服務棧相當於一個狀態和行為轉換系統,它是四個集合組成的四元組(S,A,T,I),S是組狀態(states)集合;A是一個行為(actions)集合;T是一個轉換(transactions)集合;I是一個初始狀態(initialstates)集合。服務棧的狀態S反映了服務棧內部接受的所有請求的上下文(EC和TC)。集合之間有以下的關係2^s"xs,對於任一(A^2)er,可以寫成"^"。服務棧可以進行狀態轉換。當構件的遠程方法被調用時,運行第一條指令前線程的EC定義為服務棧的初始上下文。SI指轉換前的組狀態,S2是轉換後的組狀態。所述的服務棧的狀態轉換方法為高優先級的事務請求TC進入服務棧;服務棧狀態根據轉換集合T發生改變,s^"^',其中AWrs;高優先級的事務請求TC執行完後,服務棧狀態恢復到未執行前的狀態,此時^-tails。本發明方法通過引入基於事務的交互同步構件的事務上下文,解決了獨立構件之間的優先級倒置問題。通過交互同步構件服務端的服務棧,使得一個構件的服務端能夠同時向多個構件的客戶端線程提供共享訪問,有效的支持搶佔式的遠程方法調用。圖l是同步消息的傳遞模型。圖2是一般的交互方法搶佔運行《1起的優先級倒置的模型。圖3是一般的交互方法客戶端/服務端模式引起優先級倒置。圖4是本發明方法的流程圖。圖5是基於事務的構件交互模型。圖6是基於事務的遠程方法調用的模型。圖7是基於事務的搶佔式的遠程方法調用的模型。具體實施例方式下面結合附圖對本發明基於構件化嵌入式作業系統的構件交互同步的方法的實施例進4亍詳細il明。如圖4所示,嵌入式作業系統啟動後,一個構件的客戶端A向另一個構件的服務端A發送請求(即調用遠程方法),服務端A將客戶端A的TC和EC存入服務棧。判斷服務端A是否正在執行更高級別的客戶端B的請求,若是,則服務端A創建一個新的初始上下文,繼續執行客戶端B的請求,執行完畢,服務端A將結果返回給客戶端B。服務棧通過狀態轉換,使服務端A的狀態轉換到客戶端A的TC,服務端A共享客戶端A的TC,執行客戶端A的請求。若否,則直接執行客戶端A的請求,在執行的過程中,判斷是否有更高級別的客戶端C向服務端發送請求。若是,服務端A將客戶端C的TC和EC存入服務端A的服務棧內,創建一個新的初始上下文,保存當前的執行狀態。服務端A的服務棧通過狀態轉換,轉換到客戶端C的TC,執行客戶端C的服務請求,客戶端C的請求執行完畢後客戶端C的TC和EC移出服務棧,服務端A將結果返回給客戶端C。服務端A的服務棧恢復初始上下文,服務端A繼續執行客戶端A的請求。若否,則繼續執行客戶端A的請求,執行過程中,判斷服務端A是否需要其他服務端協調完成請求任務,若是,服務端A發送請求給需要協助的服務端B,服務端B和服務端A共享客戶端A的TC,服務端B執行完畢後將結果返回給服務端A,服務端A繼續執行客戶端A的請求。若否,服務端A繼續執行客戶端A的請求,執行完畢,客戶端A的TC和EC移出服務棧,服務端A將執行結果返回給客戶端A,請求服務結束。上述方法中的服務棧的狀態轉換方法為高優先級的事務請求TC進入服務棧;服務棧狀態根據轉換集合T發生改變,s^s',其中s'—tc廠s;高優先級的事務請求TC執行完後,服務棧狀態恢復到未執行前的狀,態,jt匕日ts^tails。如圖5所示的是基於事務構件交互的模型。客戶端構件和服務端構件通過事務上下文實現同步消息的傳遞。如圖6所示,構件A創建一個新的TC,這個TC包含優先級為5以及2ms的執行時間,而且可以進一步擴展加入更複雜的服務質量信息QoS(QualityofService)。信息構件A的客戶端向構件B的服務端發送事務請求,即調用遠程方法,系統的上下文環境從構件A的EC切換到構件B的EC,這意味著B構件進入A構件調用線程的執行路徑。但系統仍保持調用者的TC不變,構件B與構件A共享一個TC。構件B為了完成構件A發送的事務請求,向構件C發送事務請求,構件C又向構件D發送請求,這時構件A、B、C、D共享由構件A創建的TC,構件D事務執行結束後將結果返回給構件C,構件C事務執行結束後將結果返回給構件B,構件B事務執行結束後將結果返回給構件A,構件A的客戶端發送的事務請求執行完畢。由於TC中包括構件A線程的優先級和可執行的時間,因此,服務端使用構件A客戶端的剩餘執行時間並且繼承了構件A客戶端的優先級協議,以構件A客戶端的優先級運行,服務端在執行構件A客戶端如圖7所示,客戶端X向服務端S發送請求,服務端S的服務棧接收到客戶端X的請求時將客戶端X的TC和EC存入棧內。服務端S使用客戶端X的TC並執行客戶端X發送的請求,此時客戶端X處於阻塞狀態。在執行過程中,另一個較高優先級客戶端C,向服務端S發送請求,服務端S在將結果返回給客戶端X之前,接收客戶端C的請求,並將客戶端C的TC和EC存入棧內,這時服務端S就通過創建一個新的初始上下文,連同更高優先級的客戶端C的TC一起置入服務棧。服務端S的服務棧通過狀態轉換s^s',其中s'={tc}-s,將伺服器S處於客戶端X的TC的狀態轉換為處於客戶端C的TC狀態,伺服器執行客戶端C的事務請求。當客戶端C的事務請求執行完畢將結果返回給客戶端C後,客戶端C的TC移出伺服器S的服務棧,服務端S恢復到客戶端X的執行狀態,繼續執行客戶端X的事務請求,執行完畢後將結果返回給客戶端X。本發明方法可在多內核構件化嵌入式作業系統Pcanel平臺上實現,Pcanel具有5個內核,各個內核保持相對獨立並協調工作。其中C-kemel是構件模型SmartCM的內核,其基本功能是,支持線程調度,地址空間管理和同步消息傳遞,基於事務的構件交互模型正是在C-Kemel中得到了良好的實現。在一個不失一般的例子中,基於事務的構件交互模型由四個構件A,B,C,D組成,它們在依次調用遠程方法時共享相同的事務上下文TC,事務的執行路徑由三次遠程方法調用和三次結果返回組成。構件之間的交互由一個個六元組構成I-(Ms,Mc,P,API,TC,EC)。Ms是由服務端接收的消息集,即服務端消息接口,服務端即為一個可以存放一組TC和EC的服務棧,服務棧相當於一個狀態和行為轉換系統,它包含一個四元組(S,A,T,I),S是組狀態(states)集合;A是一個行為(actions)集合;T是一個轉換(transactions)集合;I是一個初始狀態(initialstates)集合。服務棧的狀態S反映了服務棧內部接受的所有請求的上下文(EC和TC)。集合之間有以下的關係res"",對於任一(sl'"'s2)e7\可以寫成siJ—"。當構件的遠程方法被調用時,運行第一條指令前線程的EC定義為服務棧的初始上下文。Mc是服務端要求客戶接收的消息集,即客戶端消息接口;P是消息傳遞的協議;API是構件交互協議的應用程式的編程接口;TC是構件交互時的事務上下文,存放與調用有關的信息,包括線程的優先級和執行時間,當一個構件使用某個事務上下文時,表明現構件處於這個事務的執行路徑(ExecutionPath)中。EC是構件交互時的執行上下文,存放寄存器組以及線程的狀態信息,包括構件接口是否處於IPC等待狀態信息。我們對採用基於事務的構件交互同步的遠程方法調用進行了測試,測試採用的硬體平臺是PXA255開發板,主要評估的是高優先級事務多次遠程方法調用的平均時間成本,所有的測試都在共享地址空間內進行,我們測試採用四種方法調用的形式(A)傳遞只讀參數,返回結果只需要使用寄存器;(B)允許方法內部改變參數;(C)沒有參數,返回少量結果;(D)B,C兩種方法的總和。我們設定事務的優先級為0-15,0為最高優先級,15為最低優先級,然後隨機的生成10萬個具有隨機優先級(0-15)的事務,讓這些事務去調用同一個構件的遠程方法,測試結果如表l所示,從圖中可以看出,採用基於事務的構件交互模型可以使得高優先級(0-7)事務的響應時間進一步提高20%,而不影響整個系統的交互性能。這種基於構件化嵌入式作業系統的構件交互同步的方法通過引入事務上下文和服務棧解決了獨立構件之間的優先級倒置問題,有效的支持搶佔式的遠程方法調用。表1遠程方法調用的平均時間比較tableseeoriginaldocumentpage9權利要求1.一種基於事務的構件交互同步的方法,該方法包括(1)系統啟動後,交互同步的構件的客戶端向交互同步的構件的服務端發送請求;(2)服務端收到客戶端發送的請求,服務端獲取所述基於事務的交互同步的構件的事務上下文,根據所述的事務上下文確定客戶端的優先級,優先級高的客戶端先服務;(3)在執行請求的過程中,若有優先級更高的客戶端請求,則中斷當前請求,並保存服務端中服務棧的初始狀態,執行優先級高的客戶請求;(4)執行完畢將結果返回給客戶端後,恢復初始狀態,執行原先中斷的請求,執行完畢後將結果返回給客戶端。2.—種基於事務的構件交互模型,由用於交互同步的構件組成,構件通過接口相互通信,其特徵在於該模型基於事務上下文,實現構件之間準確的交互。3.根據權利要求2所述的構件交互模型,其特徵在於所述的交互同步的構件包括以下六元組服務端消息接口,是由服務端接收的消息集,用於接收和處理事務請求;客戶端消息接口,是服務端要求客戶接收的消息集,用於發送事務請求;消息傳遞的協議;構件交互協議的應用程式的編程接口;構件交互時的事務上下文,用於存放與調用有關的信息,包括線程的優先級、執行時間和服務質量;構件交互時的執行上下文,用於存放寄存器組以及線程的狀態信息,包括構件接口是否處於IPC等待狀態信息。4.根據權利要求3所述的構件交互模型,其特徵在於所述的服務端包括一個可以存放一組TC和EC的服務棧,服務棧為一個狀態和行為轉換系統,包含組狀態、一個行為集合、一個轉換集合、一個初始狀態集合四個集合。全文摘要本發明公開了一種基於事物的構件交互同步的方法,該方法通過構件化嵌入式作業系統實現構件的客戶端和服務端之間的數據交互通訊,當服務端收到客戶端發送的請求時服務端獲取所述基於事務的交互同步構件的事務上下文,根據所述的基於事務的構件交互同步機制的事務上下文確定本次構件交互的優先級,以客戶端的優先級運行。本發明還公開了一種基於事務的構件化交互模型,該模型基於事務上下文,實現構件之間準確的交互。本發明方法通過引入基於事務的交互同步構件的事務上下文,解決了獨立構件之間的優先級倒置問題,並在多內核構件化嵌入式作業系統平臺Pcanel上得到了實現,保證了構件之間交互的高效率和低開銷。文檔編號H04L29/06GK101295269SQ20081006164公開日2008年10月29日申請日期2008年5月26日優先權日2008年5月26日發明者剛姚,王寬卿,陳文智申請人:浙江大學