2011-04-13 52 views
2

最近我在看書操作系統概念第六章關於臨界區問題,在6.2節中,我們知道解決同步問題的算法必須滿足三個要求:1。互相排斥2.進步3.有限的等待。 顯然,如果一個算法滿足第二個要求(Progress),它並不一定意味着該算法由於處理速度或調度問題而滿足有界等待。關於考慮臨界區問題的三個需求的問題

但是,我的問題是,如果一個算法滿足有界等待的要求,那麼我們可以從中暗示這個算法是否也滿足Progress的要求? 如果不是,條件是什麼? 如果是,爲什麼我們不提出第三個要求,刪除第二個要求,因爲第三個要求可能包含第二個要求。 順便說一句,任何人都可以解釋第二個和第三個之間的關係(和差異)嗎?

回答

4

進步的概念和有限的等待是完全不同的。

有界的等待意味着一個進程最終可以獲得鎖/互斥量。進度條件意味着流程可以完成其執行。有一種稱爲live-lock(對應於死鎖)的情況,其中兩個或多個進程被組織爲一個進程組,所有進程都可以獲取或釋放鎖,這滿足有界等待,但進程組無法進展(或爲什麼我們稱之爲活鎖。:-))。

好運和問候

0

的第一個要求是晶瑩剔透的,因爲Mutal排除的主要目標是......嗯,相互排斥,對不對?

從某種意義上說,第二個要求(進展)是誤用。假設一個給定的系統有一堆併發運行的進程,比如說P1,P2,P3,P4和P5,並且它們都沒有執行臨界區(CS)。最終,在給定的時刻,進程P1,P2和P3變得對同時執行CS感興趣。在這種情況下,進展要求規定,只有P1,P2和P3有權選擇誰進入CS(決不允許P4和P5會影響這樣的決定)。順便說一下,這個要求也決定了這樣一個決定不能永久存在,因此它的名字(「進展要求」)我認爲這是一個非描述性的術語;「封閉要求」更合適,因爲只有感興趣的過程纔有權決定誰將執行CS)。我的理解是,這項要求旨在防止活鎖(所有流程都是「相互交流」,「彼此執行,相互交替」)。

第三個要求(有界等待)與第二個要求密切相關。雖然進展要求說有關過程必須在有限的時間內作出決定,但有界等待規則規定任何過程都不得不無限期地等待,從而防止飢餓:在Pn提出進入CS的請求之後,只有一個有限數量的進程可以繞過Pn。鑑於其定義並與第二個相反,這一要求被命名爲(有界等待或有時是有界的旁路,如here)。 如果你懂葡萄牙語,在這裏不用我發現here定義:

Øprimeiro requisitoéóbvio,興趣點éØobjetivo本金達solução。 O segundo diz que senãoháprocesso dentro deregiãocríticae existem processos desejando entrar,entãoapenas os processos que desejam entrar participam nadecisãode quem entra e essadecisãonãoé postergada indefinidamente。第三個要求是,希望進入關鍵區域 的流程不應該無限期地輪流等待;也就是說,當有一些過程 等待進入,應該有對的次數限制,在和 其他進程離開臨界區。