操作系统-信号量的使用
生活随笔
收集整理的這篇文章主要介紹了
操作系统-信号量的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡述信號量
當有多個進程存在時,為了避免當一個進程正在執行的時候,其他進程不斷詢問cpu是否空閑(比較消耗時間)(他們此刻處于等待狀態-》沒鎖,當可以使用cpu時就可以上鎖(鎖是鎖的cpu和進程(可認為是綁定使用))。其中的詢問操作就可以使用信號量機制將其簡化。
P操作->臨界區-v操作
- 說明:P為上鎖過程,v為解鎖過程
信號量使用的s(信號量的具體變量)當沒有使用時為0 當用了之后就為1
正常狀態:
從上一個結束狀態的1由p操作使得信號量(s-=1)變為0,如果沒有其他進程在等待則正常使用V操作(+1)又得到1
s變量的變化過程(1-0-1)
特殊狀態:
當有進程在等待(判斷依據: 當p操作連續執行了不止一次之后會導致s<0, 然后通過判斷s變量是否小于0來判斷當前是否為有多個進程進行p操作,如果是則先要對這些進程進行阻塞操作(block) 。這種情況下當最開始進入的進程退出時因為s不再為1所以會先將原來阻塞的進程使用喚醒語句,將等待的進程喚醒執行
s變量的變化過程(1-0–1--2…–2--1-0-1)
對于信號量:
當s>=0時表示該類可用資源的數量,或者首表示可以執行p操作而不會被阻塞的進程數目
當s<0時其絕對值表示信號量s的阻塞隊列中的進程數
注意:P,v操作才能控制s信號量
總結
以上是生活随笔為你收集整理的操作系统-信号量的使用的全部內容,希望文章能夠幫你解決所遇到的問題。