整型信號(hào)量
信號(hào)量定義為一個(gè)整型量 ? ?根據(jù)初始情況賦相應(yīng)的值 ? ?僅能通過(guò)兩個(gè)原子操作來(lái)訪問(wèn)
P操作:
wait(s):
? ? while s<=0 do no-op;
? ? s:s-1;
V操作:
signal(s):
? ? s:=s+1;
記錄型信號(hào)量
整型信號(hào)量符合”有限等待“原則 ? ?但不符合”讓權(quán)等待“原則
改進(jìn):
? ? 條件不符時(shí)應(yīng)能夠主動(dòng)放棄
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)
信號(hào)量的基本應(yīng)用
1、實(shí)現(xiàn)進(jìn)程互斥?

2、實(shí)現(xiàn)進(jìn)程間的前驅(qū)關(guān)系(有序)

AND型信號(hào)量
出現(xiàn)原因:
????一些應(yīng)用往往需要兩個(gè)或多個(gè)共享資源,而不是前述的一個(gè)資源。進(jìn)程同時(shí)要求的共享資源越多,發(fā)生死鎖可能性越大。
解決思想:
? ? ?一次性分配給進(jìn)程所需資源,用完一起釋放。Wait操作時(shí)對(duì)它所有需要的資源都要判斷,有AND條件,故稱“AND同步”、“同時(shí)wait”。
信號(hào)量機(jī)制的不足
信號(hào)量的控制分布在多個(gè)進(jìn)程中
? ? 1、正確性分析困難;
? ? 2、分散的P、V操作;易出錯(cuò),使用不當(dāng)可能導(dǎo)致死鎖。
? ? 3、修改、維護(hù)困難;易讀性差,任一修改都可能影響全局;測(cè)試期間發(fā)現(xiàn)錯(cuò)誤困難,及時(shí)發(fā)現(xiàn)也不容易定位出錯(cuò)位置。