• 正文
    • 1 信號量
    • 2 PV原語
    • 3 信號量與PV操作的應(yīng)用
    • 4 總結(jié)
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

嵌入式基礎(chǔ)知識-信號量、PV原語與前趨圖

2024/03/04
3382
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本篇來介紹信號量與PV原語的一些知識,并介紹其在前趨圖上的應(yīng)用分析。本篇的知識屬于操作系統(tǒng)部分的通用知識,在嵌入式軟件開發(fā)中,同樣會用到這些知識。

1 信號量

信號量是最早出現(xiàn)的用來解決進(jìn)程同步與互斥問題的機(jī)制(可以把信號量視為一個加鎖標(biāo)志位,實(shí)現(xiàn)對臨界資源互斥的訪問)。

信號量是一個整數(shù):

    當(dāng)信號量S>=0時,代表可供并發(fā)使用的資源數(shù)量當(dāng)信號量S<0時,代表已經(jīng)沒有可用資源,S的絕對值表示當(dāng)前等待該資源的進(jìn)程數(shù)

利用信號量可以實(shí)現(xiàn)進(jìn)程的互斥與同步

2 PV原語

2.1 P原語(wait)

P原語(申請資源,相當(dāng)于wait,阻塞進(jìn)程)操作的動作是:

sem減1

    • 若sem減1后仍>=0,則執(zhí)行P操作的進(jìn)程繼續(xù)執(zhí)行

若sem減1后<0,則執(zhí)行P操作的進(jìn)程被阻塞

    后進(jìn)入與該信號相對應(yīng)的隊列中,然后轉(zhuǎn)進(jìn)程調(diào)度

2.2 V原語(signl)

V原語(釋放資源,相當(dāng)于signal,激活進(jìn)行)操作的動作是:

sem加1

    • 若sem加1后>0,則執(zhí)行V操作繼續(xù)執(zhí)行若sem加1后仍<=0(表明有進(jìn)程阻塞在該類資源上),則從該信號的

等待隊列中喚醒一等待進(jìn)程

    ,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度

注意:PV操作對于每一個進(jìn)程來說,都只能進(jìn)行一次,而且必須成對使用。在PV原語執(zhí)行期間不允許有中斷的發(fā)生。

2.3 P、V操作

PV原語的執(zhí)行順序

    執(zhí)行P操作,信號量減一然后進(jìn)行對共享資源的訪問V操作,信號量加一

PV操作中關(guān)于信號量的計算

某系統(tǒng)有n個進(jìn)程,共享資源R,R是可用數(shù)為m,其中n>=m。若采用PV操作,則信號量S的取值范圍是多少?

分析:

    信號量的最大值,即可用資源的數(shù)據(jù),即m信號量的最小值,即最多能阻塞的進(jìn)程數(shù)量,然后取負(fù)數(shù),本例中,最大阻塞數(shù)為n-m所以,信號量S的取值范圍是 -(n-m)~m

3 信號量與PV操作的應(yīng)用

3.1 實(shí)現(xiàn)進(jìn)程互斥

為使多個進(jìn)程互斥的訪問某臨界資源(例如一臺打印機(jī)):

    須為該資源設(shè)置一個互斥信號量mutex,并設(shè)其初值為1然后各進(jìn)程訪問資源的臨界區(qū)CS置于wait(mutx)和signal(mutex)之間即可
semaphore mtuex = 1; //表示打印機(jī)(互斥/共享資源)

void process1() //進(jìn)程1
{
    //...
    wait(mutx); //P操作,信號量-1
    //使用打印機(jī)
    signal(mutex); //V操作,信號量+1
    //...
}

void process2() //進(jìn)程2
{
    //...
    wait(mutx);//P操作,信號量-1
    //使用打印機(jī)
    signal(mutex);//V操作,信號量+1
    //...
}

這里簡單分析一下

只有一臺打印機(jī),所以信號量初值是1

wait(mutx),即P操作,信號量減1,例如:

      • 當(dāng)?shù)谝粋€進(jìn)程使用打印機(jī)時,信號量減為0,沒有進(jìn)程阻塞當(dāng)?shù)诙€進(jìn)程也使用打印機(jī)時,信號量再減1變?yōu)?1,小于0了,說明有進(jìn)程阻塞(就是第二個進(jìn)程阻塞)當(dāng)?shù)谌齻€進(jìn)程也使用打印機(jī)時,信號量再減1變?yōu)?2,也小于0了,說明有進(jìn)程阻塞(就是第三個進(jìn)程阻塞)

signal(mutex),即V操作,信號量加1,例如:

    • 當(dāng)?shù)谝粋€進(jìn)程使用打印機(jī)完畢時,信號量加1變?yōu)?1,仍小于0,說明激活一個進(jìn)程后,仍有進(jìn)程阻塞(例如第二個進(jìn)程可以使用打印機(jī)了,第三個進(jìn)程仍在等待)當(dāng)?shù)诙€進(jìn)程使用打印機(jī)完畢時,信號量加1變?yōu)?,說明激活一個進(jìn)程后,沒有進(jìn)程阻塞(第二個進(jìn)程可以使用打印機(jī)了)當(dāng)?shù)谌齻€進(jìn)程使用打印機(jī)完畢時,信號量加1變?yōu)?

3.2 實(shí)現(xiàn)前趨關(guān)系(前趨圖)

這里先簡單介紹下前趨圖:

前趨圖是為了描述一個程序的各部分間的依賴關(guān)系,或者是一個大的計算的各個子任務(wù)間的因果關(guān)系的圖示。

前趨圖中的每個結(jié)點(diǎn)可以表示一條語句、一個程序段或一個進(jìn)程

結(jié)點(diǎn)間的有向邊表示兩個結(jié)點(diǎn)之間存在的偏序(Partial Order)或前趨關(guān)系

3.2.1 例子1

進(jìn)程P1~P5的前趨圖如下所示,若用PV操作控制進(jìn)程P1~P5并發(fā)執(zhí)行的過程,需要設(shè)置5個信號量S1~S5,且信號量的初值都是0。

根據(jù)以上描述,下圖中的a~e處分別該填什么:

分析,根據(jù)文字描述,對照圖中信息,可先將P(S1)和P(S3)在圖中標(biāo)注出來,進(jìn)而可推出信號量S1和S3以及V操作V(S1)和V(S3)。

然后假設(shè)P1到P3使用的信號量S3,P3到P5使用的信號量S4,P4到P5使用的信號量S5,即可推導(dǎo)出剩余的PV操作。

3.2.2 例子2

進(jìn)程P1~P6的前趨圖如下所示,若用PV操作控制進(jìn)程P1~P6進(jìn)程同步與互斥的程序如下,則呈現(xiàn)中中的①~⑥處分別該填什么:

分析:根據(jù)程序中的描述,對照圖中信息,可先將程序中已表示的PV操作標(biāo)注出來,并標(biāo)注出①~⑥在圖中的位置。

然后假設(shè)P1到P2使用的信號量S1,P4到P6使用的信號量S7,P5到P6使用的信號量S8,即可推導(dǎo)出剩余的PV操作

4 總結(jié)

本篇介紹了信號量與PV原語的基礎(chǔ)知識點(diǎn),并介紹了PV操作的一些應(yīng)用,實(shí)現(xiàn)進(jìn)程互斥和實(shí)現(xiàn)前趨關(guān)系,前趨關(guān)系中使用前趨圖來實(shí)例分析PV操作影響信號量變化的具體運(yùn)行過程。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
SFH203FA 1 OSRAM GmbH FIBER OPTIC PHOTODIODE DETECTOR, PLASTIC PACKAGE-2

ECAD模型

下載ECAD模型
$0.64 查看
LAN8710AI-EZK 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32, 5 X 5 MM, 0.90 MM HEIGHT, ROHS COMPLIANT, QFN-32

ECAD模型

下載ECAD模型
$1.56 查看
ECS-3951M-1000-BN-TR 1 ECS International Inc Oscillator, 1.8MHz Min, 125MHz Max, 100MHz Nom,

ECAD模型

下載ECAD模型
$32.94 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄