臨界資源

多道程式系統中存在許多進程,它們共享各種資源,然而有很多資源一次只能供一個進程使用。一次僅允許一個進程使用的資源稱為臨界資源。許多物理設備都屬於臨界資源,如輸入機、印表機、磁帶機等。

基本信息

簡介

各進程採取互斥的方式,實現共享的資源稱作臨界資源。

屬於臨界資源的硬體有印表機、磁帶機等,軟體有訊息緩衝佇列、變數、數組、緩衝區等。 諸進程間應採取互斥方式,實現對這種資源的共享。

每個進程中訪問臨界資源的那段代碼稱為臨界區。顯然,若能保證諸進程互斥地進入自己的臨界區,便可實現諸進程對臨界資源的互斥訪問。為此,每個進程在進入臨界區之前,應先對欲訪問的臨界資源進行檢查,看它是否正被訪問。如果此刻該臨界資源未被訪問,進程便可進入臨界區對該資源進行訪問,並設定它正被訪問的標誌;如果此刻該臨界資源正被某進程訪問,則本進程不能進入臨界區。

在作業系統中,有臨界區的概念。臨界區內放的一般是被1個以上的進程或執行緒(以下只說進程)共用的數據。

臨界區內的數據一次只能同時被一個進程使用,當一個進程使用臨界區內的數據時,其他需要使用臨界區數據的進程進入等待狀態。

作業系統需要合理的分配臨界區以達到多進程的同步和互斥關係,如果協調不好,就容易使系統處於不安全狀態,甚至出現死鎖現象。

事例

例如,印表機不可能同時列印多個進程的結果,若將一個進程的結果列印幾行,再列印另一個進程的結果,這會使列印的結果變得無法使用。所以兩個或兩個以上進程由於不能同時使用同一臨界資源,只能一個進程使用完了,另一進程才能使用。

除了物理設備外,還有很多軟資源如變數、表格、佇列等也都屬於臨界資源,如果同時使用,同樣會引起與時間相關的錯誤。例如,有兩個進程P1和P2共享一個變數count,P1或P2的功能是,每執行完某些操作後,將count的值取出加1,R1和R2是工作暫存器。當兩個進程按下述順序執行時:

P1:操作序列;

Rl=count;

R1=R1+1;

count=R1;

P2:操作序列;

R2=count;

R2=R2+1;

count=R2;

其結果使count的值增加了2;倘若P1和P2按另一種順序執行,例如:

P1:R1=count;

P2:R2=count;

P1:Rl=Rl+1;count=Rl;

P2:R2=R2+1;count=R2;

按此執行序列,雖使P1和P2都各自對count做了加1操作,但最後的count值卻只增加了1,即出現了結果不確定的錯誤。顯然這種錯誤與執行順序有關,又叫與時間相關的錯誤。之所以出現這種錯誤,是由於變數count是臨界資源,P1和P2不能同時使用,即僅當進程P1對count進行修改並退出後,才允許進程P2訪問和修改,那么就可以避免上述的錯誤結果。

相關詞條

相關搜尋

熱門詞條

聯絡我們