複製鏈接
請複製以下鏈接發送給好友

臨界資源

鎖定
多道程序系統中存在許多進程,它們共享各種資源,然而有很多資源一次只能供一個進程使用。一次僅允許一個進程使用的資源稱為臨界資源。許多物理設備都屬於臨界資源,如輸入機、打印機、磁帶機等。
中文名
臨界資源
硬件有
打印機、磁帶機
軟件有
消息緩衝隊列、變量
含    義
採取互斥的方式,實現共享的資源

目錄

臨界資源簡介

各進程採取互斥的方式,實現共享的資源稱作臨界資源。
屬於臨界資源的硬件有打印機、磁帶機等,軟件有消息緩衝隊列、變量、數組、緩衝區等。 諸進程間應採取互斥方式,實現對這種資源的共享。
進程中用於實現進程互斥的那段代碼稱為臨界區。顯然,若能保證諸進程互斥地進入自己的臨界區,便可實現諸進程對臨界資源的互斥訪問。為此,每個進程在進入臨界區之前,應先對欲訪問的臨界資源進行檢查,看它是否正被訪問。如果此刻該臨界資源未被訪問,進程便可進入臨界區對該資源進行訪問,並設置它正被訪問的標誌;如果此刻該臨界資源正被某進程訪問,則本進程不能進入臨界區。
在操作系統中,有臨界區的概念。臨界區內放的一般是被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訪問和修改,那麼就可以避免上述的錯誤結果。 [1] 
參考資料