在操作系統中有PV原語對進程同步和互斥進行管理,現在假如有三個進程A,B,C,而他們所需的資源系統只有一個,現在A進程運行,他會使用P原語使資源數減一成為0,這時B進程也在申請所以他會被阻塞,這時的資源數為-1,表示有一個進程被阻塞,這時又有C進程申請,他也會被阻塞,也會將資源數減一成為-2。請問這時如果A進程釋放該資源,使資源數成為-1,那麼這時B進程會由調度成為就緒態,但是操作系統怎麼知道這時的資源數-1是什麼意思呢?這時的-1是表示有一個進程被阻塞嗎?那麼這時的資源數又怎麼表示啊???
這裡不是根據-1,-2或者負幾來判斷來調用被阻塞的進程的,而是只要小於0就回去調用阻塞隊列裡的第一個進程。-1就代表一個進程阻塞,-2代表2個進程阻塞。而資源數的問題,你一開始不就說累了資源系統只有一個嗎。你一開始設的初始值1代表著資源數是1,後面那個變量就和資源數沒關系了。