OS 關於信號量處理中的忙等待問題

直接看圖:

下面這張圖堪稱神奇:

問題描述–>套娃行爲
在這裏插入圖片描述
信號量爲了時臨界區問題不發生忙等待,使用臨界區mutex進行處理。臨界區mutux的value需要被P1和P2的wait()指令進行操作,然而能否保證對mutex.value進行互斥的操作是一個問題。wait()操作理論上是需要原子的(atomically),實際上是有一些代碼構成,實現起來並不能保證互斥。這就產生了mutex.value訪問控制的問題。也就產生了CS1’和CS2‘。
保證互斥的算法有以下:
1、硬件指令 TestAndSet Swap 會發生忙等待
2、開關中斷忙等待切只適用於單處理系統
3、paterson算法 麪包店bakery算法等 也有忙等待
由此可見 ,信號量解決進程互斥的時候忙等待不可避免。

使用信號量的目的一個時因爲方便簡單,另一個就是能夠解決忙等待問題

那麼爲什麼使用信號量,是因爲圖中對用戶進程P1和P2的共享數據S進行忙等待處理的效率比較低,而操作系統的臨界區的忙等待的時間比較短,效率高。而且適當的忙等待並非無益(多處理機下,和進程的context上下文切換有關)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章