并發(fā)控制(二)

信號量

信號量是一個特殊變量,里面有一個整型量??梢猿跏蓟粋€唯一的非負(fù)整數(shù),帶有原語操作,用來解決臨界區(qū)問題以及實(shí)現(xiàn)進(jìn)程在多處理器環(huán)境下的進(jìn)程同步。
信號量標(biāo)志原語:wait信號量,signal信號量,不可中斷的
設(shè)置信號阻塞隊(duì)列
一種信號量表示一種資源,信號量的值表示可用資源的個數(shù)。

信號量類型

計數(shù)型(兩個域,一個為整型,一個域?yàn)殛?duì)列,其元素為等待該信號量的阻塞進(jìn)程)
互斥信號量
用于申請或釋放資源的使用權(quán),常初始化為1
資源信號量
用于申請或歸還資源,常初始化為大于1的正整數(shù),表示資源可用個數(shù)
s.count>=o:表示還可執(zhí)行wait(s)而不會阻塞的進(jìn)程數(shù)
s.count<o :表示阻塞隊(duì)列中阻塞進(jìn)程的數(shù)量

wait 操作用于申請資源(使用權(quán)),可能會阻塞
signal操作釋放資源,有責(zé)任喚醒阻塞進(jìn)程

當(dāng)僅有兩個進(jìn)程并發(fā)共享臨界資源時,互斥信號量僅能取值0.1.-1
其中:
s.count=1時:有一個臨界資源可用,一個進(jìn)程可進(jìn)入臨界區(qū)
s.count=0時:臨界資源已分配,一個進(jìn)程已進(jìn)入臨界區(qū)
s.count=-1時:已有一個進(jìn)程等待進(jìn)入臨界區(qū)

當(dāng)s來實(shí)現(xiàn)N個進(jìn)程的互斥時,s.count的取值范圍為1~ -(n-1)

wait 與signal操作

typedef struct 
{
    int value;
    struct process_control_block *list;
}semaphore;
wait(semaphore *S){
    S->value--;
    if (S->value<0) block(S->list);
}
signal(semaphore *S){
    S->value++;
    if (S->value<=0) wakeup(S->list);
}

當(dāng)S->value初始值 >0 時,每進(jìn)行一個單位的該類資源,
使得系統(tǒng)中可供分配的該類資源減少一個,描述為S->value–
反之:當(dāng)S->value<0時,block(S->list)進(jìn)行了自我阻塞,
放棄處理機(jī)并插入到了信號鏈表中;
備注:
s的初值為1,取指為1~-(n-1)。
s=1時:有一個臨界資源可用,一個進(jìn)程可進(jìn)入臨界區(qū)。
s=0時:臨界資源已分配,一個進(jìn)程已進(jìn)入臨界區(qū)。
s<0時:臨界區(qū)已被占用,|s|個阻塞進(jìn)程正在等待進(jìn)入。

回顧

臨界資源:一次僅允許一個進(jìn)程獨(dú)自占有使用的不可剝奪資源。
臨界區(qū):進(jìn)程訪問臨界資源的那一段代碼。
互斥:當(dāng)一個進(jìn)程正在臨界區(qū)中訪問臨界資源時,其他進(jìn)程不能進(jìn)入臨界區(qū)。
死鎖:多個進(jìn)程全部阻塞,形成等待資源的循環(huán)鏈。
饑餓:一個就緒進(jìn)程被調(diào)度程序長期忽視、不被調(diào)度執(zhí)行。

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

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

  • 文/蘇懷亮 常說 人生就一眨眼的過程 所以我一直 目不轉(zhuǎn)睛 在沒有光明的夜晚 睡覺只是睜眼的另一種狀態(tài) 白天的一切...
    蘇懷亮文字閱讀 208評論 0 0
  • 2018年6月1日,青島十七中2015級卓越班在悠揚(yáng)的音樂聲中召開高三最后一次班會,也是高三畢業(yè)分享會。安伯貞校長...
    鶑鵅閱讀 911評論 0 5
  • 我是一名小學(xué)老師,一名非常普通的小學(xué)數(shù)學(xué)老師。最近在網(wǎng)上看到家長討論家庭作業(yè)要家長批改一事,家長質(zhì)疑作業(yè)家長...
    懿磊媽閱讀 366評論 0 1
  • 《十日談》是小伙伴送我的書,放了幾個月,才拿出來看。不知道是因?yàn)榉g的原因還是我不懂欣賞,總覺得那些故事,有點(diǎn)平淡...
    小考拉俱樂部閱讀 871評論 0 1

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