vxworks任務通訊機制

來源:互聯網
上載者:User

VxWorks支援各種任務間通訊機制,提供了多樣的任務間通訊方式,主要有如下幾種:

Ÿ         共用記憶體,主要是資料的共用;

Ÿ         訊號量,用於基本的互斥和任務同步;

Ÿ         訊息佇列和管道,單CPU的訊息傳送;

Ÿ         Socket和遠端程序呼叫,用於網路間任務訊息傳送;

Ÿ         二進位訊號,用於異常處理。

 

在多處理器之間的任務也可採用共用記憶體對象來實現任務間通訊,只是在系統配置上有所不同.

1.1.1.共用儲存區

任務間通訊的最簡單的方法是採用共用儲存區,也即相關的各個任務分享屬於它們的地址空間的同一記憶體地區。因為所有任務都存在於單一的線性地址空間,任務間共用資料。全域變數、線性隊列、環形隊列、鏈表、指標都可被運行在不同內容相關的代碼所指向。

1.1.2.互斥

當某一地址空間用於資料交換時,為了避免衝突,對於記憶體的鎖定是非常重要的。兩個或多個任務讀寫某些共用資料時,最後的結果取決於任務啟動並執行精確時序,有可能得到錯誤值,這樣必須以某種手段確保當一個任務在使用一個共用變數或檔案時,其他任務不能做同樣的操作。主要有關中斷、搶佔禁止和用訊號量鎖定資源等方法。(vxworks任務調度機製為中斷搶佔,優先順序搶佔(需要觸發條件,觸發條件就是中斷)和任務使用taskdelay直接放棄CPU)一般來說,關中斷是最有效解決互斥的方法。但這對於即時應用來說,它阻止系統對外來事件的響應,無法滿足即時性的要求。同樣,中斷延遲也是不能接受。

1.1.3.訊號量

 VxWorks訊號量提供最快速的任務間通訊機制,它主要用於解決任務間的互斥和同步。針對不同類型的問題,有以下三種訊號量:

Ÿ         二進位訊號量使用最快捷、最廣泛,主要用於同步或互斥;

Ÿ         互斥訊號量 主要用於優先順序繼承、安全刪除和回溯;

Ÿ         計數器

VxWorks還提供POSIX訊號量和多處理器上訊號量的應用。

1.1.1.訊息佇列

現實的即時應用由一系列互相獨立又協同工作的工作群組成。訊號量為任務間同步和聯鎖提供了高效方法。單一處理器中任務間訊息的傳送採用訊息訊息佇列。訊息機制使用一個被各有關進程共用的訊息佇列,任務之間經由這個訊息佇列發送和接收訊息。 任務間全雙工系統資訊傳送

1.1.2.管道

管道用VxWorks的I/O系統提供一種靈活的訊息傳送機制,它是受磁碟機pipeDrv(VxWorks所提供)管理的虛擬I/O裝置。任務能調用標準的I/O函數開啟、讀出、寫入管道。當任務試圖從一個空的管道中讀取資料,或向一個滿的管道中寫入資料時,任務被阻塞。和訊息佇列類似,ISR能向管道中寫入資訊,但不能從中讀取。象I/O裝置一樣,管道有一個訊息佇列所沒有的優勢----調用select(),任務等待一系列I/O裝置上的資料。

1.1.3.系統實現

Wind訊號量對於各種類型的訊號量的控制提供了同一正常化的介面,僅建立函數要特別指明訊號量類型。

semBCreate()           建立(產生並啟用)一個二進位訊號量 

semMCreate()           建立(產生並啟用)一個互斥訊號量

semCCreate()           建立(產生並啟用)制一個計數訊號量

semDelete()            中止並自由訊號量

semTake()              獲得訊號量

semGive()              給出訊號量

semFlush()             解鎖所有正等待某一訊號量的任務

 

 Wind 訊息佇列管理:

msgQCreate()           建立(產生並啟用)訊息佇列 

msgQDelete()           中止並自由訊號量

msgQSend()             向訊息佇列發送訊息

msgQReceive()          從訊息佇列接收訊息

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.