操作系统-信号量的使用
簡述信號(hào)量
當(dāng)有多個(gè)進(jìn)程存在時(shí),為了避免當(dāng)一個(gè)進(jìn)程正在執(zhí)行的時(shí)候,其他進(jìn)程不斷詢問cpu是否空閑(比較消耗時(shí)間)(他們此刻處于等待狀態(tài)-》沒鎖,當(dāng)可以使用cpu時(shí)就可以上鎖(鎖是鎖的cpu和進(jìn)程(可認(rèn)為是綁定使用))。其中的詢問操作就可以使用信號(hào)量機(jī)制將其簡化。
P操作->臨界區(qū)-v操作
- 說明:P為上鎖過程,v為解鎖過程
信號(hào)量使用的s(信號(hào)量的具體變量)當(dāng)沒有使用時(shí)為0 當(dāng)用了之后就為1
正常狀態(tài):
從上一個(gè)結(jié)束狀態(tài)的1由p操作使得信號(hào)量(s-=1)變?yōu)?,如果沒有其他進(jìn)程在等待則正常使用V操作(+1)又得到1
s變量的變化過程(1-0-1)
特殊狀態(tài):
當(dāng)有進(jìn)程在等待(判斷依據(jù): 當(dāng)p操作連續(xù)執(zhí)行了不止一次之后會(huì)導(dǎo)致s<0, 然后通過判斷s變量是否小于0來判斷當(dāng)前是否為有多個(gè)進(jìn)程進(jìn)行p操作,如果是則先要對這些進(jìn)程進(jìn)行阻塞操作(block) 。這種情況下當(dāng)最開始進(jìn)入的進(jìn)程退出時(shí)因?yàn)閟不再為1所以會(huì)先將原來阻塞的進(jìn)程使用喚醒語句,將等待的進(jìn)程喚醒執(zhí)行
s變量的變化過程(1-0–1--2…–2--1-0-1)
對于信號(hào)量:
當(dāng)s>=0時(shí)表示該類可用資源的數(shù)量,或者首表示可以執(zhí)行p操作而不會(huì)被阻塞的進(jìn)程數(shù)目
當(dāng)s<0時(shí)其絕對值表示信號(hào)量s的阻塞隊(duì)列中的進(jìn)程數(shù)
注意:P,v操作才能控制s信號(hào)量
總結(jié)
以上是生活随笔為你收集整理的操作系统-信号量的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程的资源共享
- 下一篇: 数据库-DQL练习(附答案)