UCOS學習筆記 訊號量集

2021-06-20 00:09:13 字數 708 閱讀 4422

實際應用中,任務常常需要與多個事件同步,就需要使用多個訊號量。ucos為實現多個訊號量組合的功能定義了一種特殊的資料結構——訊號量集。

一. 訊號量集的結構

由兩部分組成,一是訊號量標誌組,存放各個訊號量;二是等待任務鍊錶,存放等待訊號量的的任務。

1. 訊號量集的標誌組

ucos不是使用事件控制塊的結構描述訊號量集,而是使用乙個標誌組的機構來描述訊號量集os_***_grp

2. 等待任務鍊錶

與其他事件不同,訊號量集採用乙個雙向鍊錶來組織等待任務。標誌組os_***_grp的成員osflagwaitlist指向訊號量集的這個等待任務鍊錶。

等待任務鍊錶中的節點os_flag_node中的成員osflagnodeflags相當於乙個過濾器,它可以將請求任務需要的訊號篩選出來,不需要的訊號遮蔽掉。

對等待任務鍊錶的操作:新增節點和刪除節點

二. 訊號量集的操作

建立;請求;傳送訊號;釋放訊號;查詢;刪除

UCOS之訊號量

c os ii 中的訊號量由兩部分組成 乙個是訊號量的計數值,它是乙個 16 位的無符號整數 0 到65,535之間 另乙個是由等待該訊號量的任務組成的等待任務表。使用者要在 os cfg.h中將os sem en開關量常數置成1,這樣 c os ii 才能支援訊號量。當訊號量不為0時,任務即可獲得...

ucos 計數訊號量

1 計數訊號量 1.1 建立訊號量 當事件控制塊os event中的oseventtype os event type sem時,則表示此處建立的事件為訊號量。上面為計數訊號量的建立函式,建立函式不能在中斷中呼叫,在全域性的事件控制塊列表中取出乙個事件控制塊pevent,對pevent進行初始化操作...

筆記 訊號量集

訊號量集,主要作用是保證共享記憶體的使用不發生衝突。訊號量 semaphore 實際是乙個整數,它的值由多個程序進行測試 test 和設定 set 就每個程序所關心的測試和設定操作而言,這兩個操作是不可中斷的,或稱 原子 操作,即一旦開始直到兩個操作全部完成。測試和設定操作的結果是 訊號量的當前值和...