【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
生活随笔
收集整理的這篇文章主要介紹了
【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一. 信號(hào)量機(jī)制
- 整型信號(hào)量
- 記錄型信號(hào)量
- 例子:
- 總結(jié)
- 二. 用信號(hào)量實(shí)現(xiàn)互斥、同步
- 互斥
- 同步
- 前驅(qū)
- 總結(jié)
一. 信號(hào)量機(jī)制
- 信號(hào)量:一個(gè)用于表示系統(tǒng)中某種資源的數(shù)量的變量(整數(shù) or 記錄型變量)
- 一對(duì)原語:wait(S) 和 signal(S),S為參數(shù)。簡(jiǎn)稱P、V操作,因此也可寫成 P(S)、V(S)
整型信號(hào)量
- 僅三種操作:初始化、P操作、V操作
- 原子性避免并發(fā)、異步導(dǎo)致的問題
- 問題:不滿足“讓權(quán)等待”,會(huì)發(fā)生“忙等”
記錄型信號(hào)量
- 結(jié)構(gòu)體取代整型,加入等待隊(duì)列
- block 原語:把進(jìn)程從運(yùn)行態(tài) => 阻塞態(tài),并掛入信號(hào)量的等待隊(duì)列
- wakeup原語:把進(jìn)程從“阻塞態(tài) => 就緒態(tài)”,從信號(hào)量的等待隊(duì)列中喚醒
例子:
- 圖文不便描述。建議還是看視頻,走一遍流程便于理解。p21的20分鐘附近
- S.value 表示 系統(tǒng)某種資源的數(shù)目
- 不會(huì)出現(xiàn)忙等情況,遵循讓權(quán)等待原則
總結(jié)
二. 用信號(hào)量實(shí)現(xiàn)互斥、同步
互斥
- 不同臨界資源,設(shè)置不同互斥信號(hào)量
- P、V 操作成對(duì)出現(xiàn):缺P不能保證互斥訪問,缺V會(huì)導(dǎo)致資源永遠(yuǎn)不被釋放
同步
- 前操作之后,執(zhí)行 V
- 后操作之前,執(zhí)行 P(要取,保證在【前操作存之后】才能跑)
前驅(qū)
- 每一對(duì)前驅(qū)關(guān)系設(shè)置一個(gè)同步變量
- 在此基礎(chǔ)上走上面的【同步】的 PV 設(shè)定方式
總結(jié)
- 互斥:信號(hào)量初值1
- 同步:信號(hào)量初值0
- 前驅(qū):本質(zhì)上就是更復(fù)雜的同步問題
總結(jié)
以上是生活随笔為你收集整理的【学习笔记】第二章——信号量机制 用信号量实现互斥、同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 派生类构造的时候一定要调用_没钱的时候,
- 下一篇: 【总结记录】面向对象设计OOP三大特性(