2-3進程同步(信號量)

信號量是什么?

信號量的基本應(yīng)用

實現(xiàn)多個進程互斥(注意點)

(1)互斥信號量mutex初值為1;

(2)每個進程中將臨界區(qū)代碼置于P(mutex)和V(mutex)原語之間

(3)必須成對使用P和V原語(在同一進程中),不能次序錯誤、重復(fù)或遺漏:

? ? ? ? 遺漏P原語則不能保證互斥訪問

? ? ? ? 遺漏V原語則不能在使用臨界資源之后將其釋放(給其他等待的進程);

實現(xiàn)進程間的前趨關(guān)系(有序)(注意點)

信號量值為0的點是限制的關(guān)鍵所在;

成對使用P和V原語(在有先后關(guān)系的兩個進程中),不能次序錯誤、重復(fù)或遺漏,否則同步順序出錯。

區(qū)別整型、記錄型、AND型信號量以及信號量集

(1)整型信號量(符合“有限等待”原則,不符合“讓權(quán)等待”原則)

信號量定義為一個整型量;

根據(jù)初始情況賦相應(yīng)的值;

僅能通過兩個原子操作來訪問。

P操作 wait(S):

? ? ? ? ? ? ? While S<=0 do no-op;

? ? ? ? ? ? ? S:=S-1;

V操作? signal(S): ?

? ? ? ? ? ? ? S:=S+1;

(2)記錄型信號量

信號量結(jié)構(gòu)信息發(fā)生變化

不僅要有值的處理,還有隊列的處理。

此時形成記錄型數(shù)據(jù)結(jié)構(gòu),包括兩部分:

整型變量value(代表資源數(shù)目)

進程鏈表L(鏈接所有等待進程)

P、V操作也有所變化(熟練使用記錄集型信號量,其wait,signal具體做了什么?)

P操作wait():?S.value = S.value - 1;if? S.value < 0? then? block(S,L)

V操作signal(): S.value = S.value + 1;? if? S.value <= 0 then wakeup(S,L)

(3)AND型信號量

解決思想:一次性分配給進程所需資源,用完一起釋放。Wait操作時對它所有需要的資源都要判斷,有AND條件,故稱“AND同步”、“同時wait”。

(4)信號量集

在大于可分配設(shè)置的下界值t前提下,每次可分配d個。

如何利用記錄型信號量實現(xiàn)互斥關(guān)系?

如何利用記錄型信號量實現(xiàn)前趨關(guān)系?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ** 本文摘自湯小丹主編《計算機操作系統(tǒng)》(第三版)2.3 進程同步 ** 在 OS 中引入進程后,雖然提高了資源...
    劉帥_閱讀 3,242評論 0 0
  • 信號量及PV操作 信號量機制是一種功能較強的機制,可用來解決互斥與同步問題,它只能被兩個標準的原語wait(S)和...
    柳亮亮閱讀 993評論 2 0
  • 2.1進程的基本概念 一、程序順序執(zhí)行時的特征 (一)、順序性:處理機的操作嚴格按程序規(guī)定順序執(zhí)行 (二)、封閉性...
    山隹金易錫閱讀 2,716評論 0 2
  • 轉(zhuǎn)載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,475評論 1 5
  • 09 佛經(jīng)的翻譯方式 不必墨守成規(guī),按照“譯場”,卻要依照認真徹底。 而翻譯佛經(jīng),是最認真最徹底的。 關(guān)于“譯場”...
    咔辣辣閱讀 151評論 0 0

友情鏈接更多精彩內(nèi)容