程序互斥的軟體實現方法

2021-10-07 19:52:24 字數 923 閱讀 3292

1.單標誌法

缺點:turn 表示當前允許進入臨界區的程序號,而只有當前允許進入臨界區的程序在訪問了臨界區之後,才會修改turn的值。也就是說,對於臨界區的訪問,一定是p0->p1->p0->p1…這樣輪流訪問。這種必須「輪流訪問」帶來的問題是,如果此時允許進入臨界區的程序是p0,而p0一直不訪問臨界區,那麼雖然臨界區空閒,但是並不允許p1訪問。

因此,但標誌法存在的主要問題是:違背了「空閒讓進」原則

2.雙標誌先檢查法

原因:進入區的「檢查」和「上鎖」倆個處理不是一氣呵成的。「檢查」後,「上鎖」前可能發生程序切換。

違反了忙則等待的原則

3.雙標誌後檢查法

4.peterson演算法

解決了空閒讓進,忙則等待,和有限等待的原則,但是違反了讓權等待的原則

就算進不去臨界區但是還是會在while中,所以還是會占用cpu資源

總結:單標誌法的精髓:用了乙個turn變數表示謙讓的動作

雙標誌發的精髓:用了乙個flag陣列表示自己進去臨界區的意願

peterson演算法則是兩個綜合

其實雙標誌先檢查法的演算法思想很好,但是不可以一氣呵成的完成檢查和上鎖,所以如果是並行的話就會出錯。如果可以讓檢查和上鎖一氣呵成的話,這個演算法就沒有問題了.可以利用硬體的實現方法解決這個問題。

程序互斥的軟體實現方法

演算法思想 兩個程序在訪冋完臨界區後會把使用臨界區的許可權轉交給另乙個程序。也就是說每個程序進入臨界區的許可權只能被另乙個程序賦予 turn的初值為0,即剛開始只允許0號程序進入臨界區。若p1先上處理機執行,則會一直卡在 直到p1的時間片用完,發生排程,切換p0上處理機執行。不會卡住p0,p0可以正...

軟體方法實現互斥

一.單標誌法 輪流交替使用。缺點 當有乙個程序不再進入臨界區,便不能修改公共變數的turn,來標識另外乙個程序可以進入臨界區。因此另外乙個程序將永久不能進入臨界區,違背 空則讓進 的原則 a程序 while turn a critical section 臨界區 turn b remainder s...

linux Mutex實現程序間的互斥

在linux的ipc程序通訊中,semaphore是可以實現程序間共享互斥的,然而對於mutex,rwlock,spinlock預設的都是程序內的執行緒間的同步互斥 雖然也是process假裝的 本篇通過修改mutex預設屬性來實現程序間的mutex。pthread process private ...