一種實現快速數據傳遞的方法
2023-10-10 05:21:44 1
專利名稱:一種實現快速數據傳遞的方法
技術領域:
本發明涉及在多任務系統中,尤其是在高效率的實時系統中,實現快速數據傳遞的方法。
背景技術:
對於高效的實時多任務系統,尤其是在有大量任務間數據傳遞的軟體系統,如通訊系統中,數據傳遞效率的高低,將直接影響到系統的性能,並往往成為決定系統開發成敗的關鍵性因素。
在多任務系統中,任務間數據傳遞的最常用的工具是隊列,在現有技術的大多數情況下,作業系統都提供用於數據傳遞的隊列。在進行數據傳遞時,一般採取兩種方法一發送任務將數據塊拷貝到隊列中,然後通知數據接收任務從隊列中將數據拷貝到自己的數據區中。使用這種方法,由於數據拷貝的次數較多,不可避免帶來效率低下的缺點。同時,當傳遞的數據塊大小不確定時,隊列的每個節點佔用內存的大小也不好確定,實現這樣的隊列往往也將影響程序運行的效率。
方法二發送任務動態申請一塊內存,然後將數據拷入這塊內存中。發送任務將內存的指針放入隊列,此後由接收任務在適當的時候從隊列中將指針取出,通過該指針去獲取所需的數據。使用此種方法,數據拷貝的次數比方法一要少,但是動態內存的申請和次數增加。由於動態內存的管理和隊列的實現較複雜,並且動態內存的方式和隊列的實現相對孤立,不能利用兩者的一致性提高數據傳遞的效率,因而還是往往不能滿足快速數據傳遞的要求。
發明內容
為了克服上述方法的缺點,本發明提出了一種可用於實現任務間快速數據傳遞的方法,以實現在軟體系統中,尤其是在有大量消息傳遞的通信系統中的快速數據傳遞,達到提高通信效率,增強系統對數據傳遞處理能力的目的。
本發明所提出的快速數據傳遞方法是一種綜合的數據傳遞策略,它是在提出了三種快速數據傳遞的子方法的基礎上,根據實際情況合理地對方法加以選擇,從而達到最大限度地提高數據傳遞效率的目的。
一種實現快速數據傳遞的方法,包括以下步驟確定一個給定大小的數組,並分別以HeadIndex、TailIndex表示頭、尾索引號,並將HeadIndex和TailIndex初始化為任意一個合法值;判斷數組中數據存放是否已超過數組容量的上限,如果已超過數組容量的上限,則認為是「錯誤處理」;否則,發送任務將數據放入尾索引相對應的數組元素中,將尾索引指向數組下一元素,通知數據接收任務;判斷接收任務是否有可接收數據,如不是,則結束;如是,則繼續;數據接收任務從數據傳遞數組中獲取頭索引所對應的數據;將頭索引指向數據傳遞數組的下一個元素。
通過對本發明的附圖和詳細說明的了解,將有助於理解本發明所描述的快速數據傳遞方法的特性和優點。
圖1是本發明數據快數傳遞的實現過程的流程圖。
具體實施例方式
本發明中的方法是利用數組來傳遞任務間的數據,故又稱數組法。此方法效率要高於鍊表法,但是傳送數據的流量要受數組大小的限制。當數據傳遞量可以確定一個上限時,就可以使用本發明的數組法來完成數據的傳遞。此時要求在任一時刻,發送任務已經發出而未被接收任務獲取的數據量必須小於一個給定的上限。
圖1描述了本發明數據快速傳遞的實現步驟。為了進行數據的傳輸,首先確定一個給定大小的數組(步驟301)。數組的大小決定於最大傳輸數據量的大小。然後定義兩個索引HeadIndex和TailIndex,分別用於表示存放第一個和最後一個有效數據的數組元素的下標。在使用該數組之前,需要將HeadIndex和TailIndex初始化為「0」值(步驟301)。
在需要進行數據傳遞時,發送任務首先判斷數組中存放的數據量是否已經達到數組能夠存放數據數量的上限。(步驟302)。如果是,則進行相應的錯誤處理(步驟303)。
當判斷出數組中還存在可以存放數據的空閒元素後,發送任務將數據放入TailIndex所對應的數組元素中(步驟304),然後TailIndex將指向下一個數組元素(步驟305)。當TailIndex等於數組的大小時,TailIndex將被賦為「0」,從而重新指向數組的起始元素,實現對數組的循環操作。
數據發送任務通知數據接收任務接收數據。(步驟306)數據接收任務獲得通知信息後,首先判斷數組中是否有有用數據,如果有,則將HeadIndex所對應的數組元素取出,即可獲得數據發送任務發出的數據。數據接收任務取出HeadIndex所對應的數組元素後,HeadIndex將指向下一個數組元素。當HeadIndex等於數組的大小時,HeadIndex將被賦為「0」,以實現對數組的循環操作。
權利要求
1.一種實現快速數據傳遞的方法,其特徵在於,包括以下步驟步驟1、確定一個給定大小的數組,並分別以HeadIndex、TailIndex表示頭、尾索引號,並將HeadIndex和TailIndex初始化為任意一個合法值;(301)步驟2、判斷數組中數據存放是否已超過數組容量的上限,(302)如果已超過數組容量的上限,則認為是「錯誤處理」(303);否則,步驟3、發送任務將數據放入尾索引相對應的數組元素中,將尾索引指向數組下一元素,通知數據接收任務;(304、305、306)步驟4、判斷接收任務是否有可接收數據(307),如不是,則結束;如是,則繼續;步驟5、數據接收任務從數據傳遞數組中獲取頭索引所對應的數據(308);步驟6、將頭索引指向數據傳遞數組的下一個元素(309)。
2.如權利要求1所述的實現快速數據傳遞的方法,其特徵在於所述步驟5數據接收任務從數據傳遞數組中獲取頭索引所對應的數據,是將HeadIndex所對應的數組元素取出,之後,HeadIndex將指向下一個數組元素;當HeadIndex等於數組的大小時,HeadIndex將被賦為「0」,以實現對數組的循環操作。
全文摘要
本發明提出的快速數據傳遞方法,根據所傳遞數據的特點,當數據接收任務只使用來自發送任務的最新數據時,採用緩存法;本發明根據實際情況合理地對方法加以選擇,最大限度地提高數據傳遞效率,尤其在有大量消息傳遞的通信系統中,能提高通信效率,增強系統對數據傳遞處理能力。
文檔編號H04L12/56GK1694433SQ20051005226
公開日2005年11月9日 申請日期2001年3月30日 優先權日2001年3月30日
發明者劉和興 申請人:中興通訊股份有限公司