訊號量及其操作之1

2021-10-11 01:27:19 字數 1697 閱讀 7040

5-3 訊號量及其操作

當事件控制塊成員 oseventtype 的值設定為 os_event_type_sem 時,這個事件控制塊描述就是乙個訊號量。

訊號量有(訊號量計數器)和(等待任務表) 兩部分組成。

這說了啥???

保持冷靜-----訊號量就是兩個任務之間傳遞訊息的。

每當有「任務」 —申請訊號量—時,如果訊號量計數器oseventcnt 的值大於0 ,(也就是這時申請不到訊號量)則把oseventcnt 值減-1 ,使任務繼續執行;

(每當有任務 ----來申請訊號量時---- 就判斷訊號量事件控制塊中----訊號量計算器的值是否大於或等於零----如果大於零—則把計算器減1----並使任務繼續執行)

我為什麼要申請訊號量 ?-----要傳遞資料給別的任務

需要建立訊號量?如果不建立怎麼去**申請?

----肯定是需要建立訊號量,在使用訊號量之前,應用程式必須呼叫

ossemcreate() 來建立乙個訊號量,函式原型如下:

os_event *ossemcreate( int16u cnt); //訊號量計數器的初值

函式返回值為已建立訊號量的指標。

每當有----申請訊號量----- 如果oseventcnt= 0 ,則會將—任務----列入-----等待列表oseventtbl ,而使任務處於等待狀態。

如果正在使用訊號量的任務釋放了該訊號量,則會在任務等待表找出優先順序最高的等待任務,並使他就緒後呼叫排程器引發一次排程;

如果任務等待列表中沒有等待任務,則訊號量計算器只簡單 「 oseventcnt +1 「 .

不能把複雜問題簡單的描述出來,

不是學生的問題一定是老師的問題.

(可惜這樣的老師很少碰到)

每當李老闆來**的時候

光頭強都需要看看熊大熊二在沒有在森林中放哨,

如果這時他兄弟兩個都在,這時候光頭強記錄把每天固定李老闆崔木頭次數減 -1 ;

光頭強繼續偽裝,李老闆也暫時不在傳送命令。

如果李老闆再次過來砍木頭的命令

光頭強檢視了沒有熊大熊二在看守 = 0 ,

光頭強就把這個時間段放在 「等待任務列表中」 ,

(而使任務處於等待狀態)如果工具正好在手邊

則會執行光頭強的任務中優先選擇級別最高的砍樹任務。

如果光頭強的等待列表中沒有等待任務

則光頭強的「訊號量計數器」 + 1 (也就是今天大爺砍過數了少他奶奶的萊煩大爺 +1 憤怒值)

我覺得說的還是不夠好,能不能這樣說

每當 李老闆 有「 任務申請訊號量 」=== 「有申請砍樹的任務時」 (光頭強翻身了)—

如果光頭強的一天計畫工作的事情中 大於 0 也就是「訊號量計數器中」大於 0

李老闆只能要求 光頭強 – 1 個-------- 這天的工作計畫事情

光頭強繼續 執行 現在的任務,不打亂工作未來的 -1 個工作計畫

如果光頭強 這一天的工作事件中 = 0,則會將 李老闆的 「申請砍樹任務」

放在他的------任務等待列表中,

如果這時候 熊大熊二沒有 搗亂----(優先順序考慮)

這時候光頭強就會直接砍倒一棵樹

也就是引發一次排程

如果光頭強的 任務等待列表中沒有等待任務

也就完成了一天的砍樹任務了

李老闆來**

也只是在光頭強的訊號量計算器中 +1 完事

強哥不吊你李老闆,

想讓加班沒門

看來強哥越來越帥

作業系統之程序 訊號量及其操作 (三)

有一環形緩衝池,包含n個緩衝區 0 n 1 有兩組程序 一組生產者程序和一組消費者程序,生產者程序向空的緩衝區中放產品,消費者程序從滿的緩衝區中取走產品 p1 p2 生產者執行緒 各生產出乙個產品,系統共有兩個產品 作業系統實現程序同步的機制,它通常由同步原語組成 訊號量與pv操作 管程訊息傳遞 將...

IPC之 訊號量集 多個訊號量

如果兩個程序不僅需要同步,還要保證先後執行順序,就要用兩個訊號量 互斥鎖 來解決 柵欄模型 實現以下框架中的四個子程序 所有程序做完任務後 在一起執行下一次 include include include include include include include include define ...

linux之訊號量,PV操作

訊號量用一句話來總結就是帶有等待佇列的計數器。訊號量也就是對我們的臨界資源進行計數。就像我們去車站買票一樣 當取票機有票的時候,也就是資源計數 0,那我們就可以直接取票,並且取票機的票數 1 當取票機沒有票的時候,也就是資源計數 0,那我們就得等待取票機補上票,我們才能取票 當票機補一張票,資源計數...