VxWorks實驗八 訊號

2021-08-29 00:23:53 字數 1526 閱讀 9187

實驗八訊號

1 實驗目的

1.學習使用訊號

2 實驗內容

在實驗一建立的 project 中,編寫一段訊號處理程式,將其與sigint 相關連,

使用kill()傳送sigint 訊號並呼叫訊號處理程式。觀察執行結果。

3 實驗裝置及工具

1.硬體:

a) pc 機

2.軟體:

a) pc 機作業系統windows2000 或windowsxp

b) tornado2.2

4 實驗原理

訊號可以用來通知任務處理特定的事件。當引起乙個訊號的事件發生時,訊號產生(generated)。當處理事件的任務啟用時,訊號釋放(delivered)。訊號的

生命期是從產生到釋放之間的時間。乙個已經產生但還沒有釋放的訊號是掛起的(pending)。訊號的生命期可能比較長。vxworks 允許軟體訊號功能。訊號將非同步地改變任務的控制流。任何任務都可以向乙個特定任務傳送訊號。被訊號通知的任務立即掛起它當前的執行執行緒,在下次任務被排程執行的時刻,指定的訊號處理程式將獲得處理器。甚至儘管任務處於阻塞狀態,其訊號處理程式仍可以被呼叫執行。訊號處理程式是由使用者提供並與特定的訊號相聯絡,用於執行當訊號發生時必要的處理工作。訊號適用於錯誤和異常處理,很少用於任務間通訊。wind 核心提供了兩種訊號介面:bsd4.3 和posix 訊號介面。posix 介面提供比bsd4.3 介面更強大的標準介面。應用程式僅能使用其中乙個。vxworks 提供31 種不同的訊號。程式可以呼叫kill()產生乙個訊號,與中斷和硬體異常類似;呼叫sigaction()將訊號與指定的訊號處理程式相對應。當訊號處理程式執行時,其他訊號被阻塞。通過呼叫sigprocmask(),任務可以阻止一些訊號的出現,如果當訊號產生時被阻塞,它的訊號處理程式將在訊號解除阻塞時呼叫。訊號處理程式通常定義形式為:

資料結構 struct sigaction 包含處理程式的資訊,sigaction()含有三個引數:需要捕獲的訊號編號、指向新的處理資料結構的指標(型別為struct sigaction),指向舊的處理資料結構的指標(型別為struct sigaction)。如果程式不需要舊的處理資料結構的指標(*poact),那麼可以傳遞乙個空指標null。當需要把乙個訊號傳送給乙個任務時,可以呼叫kill()函式,第乙個引數是任務的id 號,第二個引數是欲傳送訊號。

附c源程式如下:

1 #include"

vxworks.h

"2 #include"

siglib.h

"3 #include"

tasklib.h

"4 #include"

stdio.h"5

6sem_id semmutex;

7int sigflag=0;8

9static

void catchsigint(int

signal)

1014

15static

void sigcatcher(void)16

3233

void s8(void)34

執行的主要步驟如下:

Vxworks訊號量分析

vxworks訊號量分析 wind 核心中有二進位制訊號量 計數訊號量和互斥訊號量三種型別,為了使應用程式具有可移植性,還提供了 posix 可移植作業系統介面 訊號量。在 vxorks 作業系統中,訊號量是實現任務同步的主要手段,也是解決任務同步問題的最佳選擇。關於互斥的實現 使用二進位制訊號量可...

vxworks訊號量分析

vxworks的訊號量機制分析 vxworks訊號量是提供任務間通訊 同步和互斥的最優選擇,提供任務間最快速的通訊。也是提供任務間同步和互斥的主要手段。vxworks提供3種訊號量來解決不同的問題。二進位制訊號量 最快的最常用的訊號量,可用於同步或互斥。互斥訊號量 為了解決內在的互斥問題如優先順序繼...

VxWorks訊號量分析 轉貼

wind核心中有二進位制訊號量 計數訊號量和互斥訊號量三種型別,為了是運用程式具有可移植性,還提供了posix 可移植作業系統介面 訊號量 在vxworks中,訊號量是實現任務同步的主要手段,也是解決任務同步的最佳選擇。關於互斥的實現 使用二進位制訊號量可以很方便的實現互斥,互斥是指多工在訪問臨界資...