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

資源衝突

鎖定
在計算機中,由於系統要運行多道程序,而系統沒有足夠相應的資源如打印機、公共隊列使每個程序都有一個。當一個進程請求使用打印機時,打印機已經被其他進程所佔有,這種現象可以稱之為資源衝突,是指一個對象請求使用一個資源,而該資源已經被其他對象所佔有。引起資源衝突主要原因有:資源競爭和系統資源有限。
中文名
資源衝突
外文名
Resource conflict
學    科
計算機
原    因
資源競爭和系統資源有限
定    義
多個對象請求一個資源
領    域
計算機設計

資源衝突基本介紹

資源衝突簡單來説一個對象請求的資源已經被其他對象佔有。例如流水線上的一個指令需要使用已經被另一個指令佔據的資源。資源衝突主要是指計算機中硬件資源的衝突。一般把資源衝突分進程級資源衝突和指令級資源衝突。前者是引起死鎖的主要原因,後者影響流水線的加速比。

資源衝突進程級

資源衝突死鎖

死鎖(Deadlock),是指多個進程在運行過程中因爭奪資源而造成的一種僵局(DeadlyEmbrace),當進程處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。
產生死鎖的原因可歸結為如下兩點:
(1) 競爭資源。當系統中供多個進程共享的資源如打印機、公用隊列等,其數目不足以滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖。
(2) 進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致產生進程死鎖。

資源衝突資源分類

可剝奪非剝奪性資源
可把系統中的資源分成兩類,一類是可剝奪性資源,是指某進程在獲得這類資源後,該資源可以再被其他進程或系統剝奪。例如,優先權高的進程可以剝奪優先權低的進程的處理機。又如,內存區可由存儲器管理程序把一個進程從一個存儲區移到另一個存儲區,此即剝奪了該進程原來佔有的存儲區。甚至可將一個進程從內存調出到外存上。可見,CPU和主存均屬於可剝奪性資源。另一類資源是不可剝奪性資源,當系統把這類資源分配給某進程後,再不能強行收回,只能在進程用完後自行釋放,如磁帶機、打印機等。 [1] 

資源衝突資源衝突方式

競爭非剝奪性資源
在系統中所配置的非剝奪性資源,由於它們的數量不能滿足諸進程運行的需要,會使進程在運行過程中,因爭奪這些資源而陷入僵局。例如,系統中只有一台打印機 R 1 和一台磁帶機 R 2 ,可供進程 P 1 和 P 2 共享。假定 P 1 已佔用了打印機 R 1 ,P 2 已佔用了磁帶機 R 2 。此時,若 P 2 繼續要求打印機,P 2 將阻塞;P 1 若又要求磁帶機,P 1 也將阻塞。於是,在 P 1 與P 2 之間便形成了僵局, 兩個進程都在等待對方釋放出自己所需的資源。 但它們又都因不能繼續獲得自己所需的資源而不能繼續推進, 從而也不能釋放出自己已佔有的資源,以致進入死鎖狀態。
進程推進順序非法
是指進程推進順序不是正常運行順序,導致一個進程請求使用本已經釋放的資源,仍然沒有釋放,這導致了資源衝突。

資源衝突指令級衝突

資源衝突流水線

流水線,亦稱管線,是現代計算機處理器中必不可少的部分,是指將計算機指令處理過程拆分為多個步驟,並通過多個硬件處理單元並行執行來加快指令執行速度。其具體執行過程類似工廠中的流水線,並因此得名。
如果作出類比,則計算機指令就是流水線傳送帶上的產品,各個硬件處理單元就是流水線旁的工人。
在使用流水線的處理器中一個指令不是在處理器的一個定時器訊號中完成的,而是被分到多個訊號中去完成,但是與此同時多個指令的分任務被同時處理。由於這些分任務比整個指令要簡單,因此可以通過使用流水線提高定時器頻率。雖然每個指令需要多個訊號後才能完成,但是通過多個指令的並行運算每個訊號內一個指令可以完成,因此通過這個方法整個速度可以提高。

資源衝突資源衝突

圖1 圖1
資源衝突是指當有多條指令進入流水線後在同一機器週期內爭用同一功能部件所發生的衝突。從圖1中可以看出,在時鐘4時,第i條指令的MEM段和第i+3條指令的IF段都要訪問存儲器。通常,由於數據和指令存放在同一存儲器中,且只有一個訪問口,這樣便會發生這兩條指令爭用存儲器資源的相關衝突。解決衝突的方法,一是停頓一拍流水線,通常是將後一條指令停頓一拍後再發動,如圖1所示;另一種方法是再重複設置一個存儲器,使指令和數據分別存放在不同的存儲器中。應該指出的是,圖1中兩條指令同時訪存造成資源相關衝突是由於第6條指令是LOAD指令的緣故,若不是LOAD指令,則由於在MEM段不訪存就不會發生對存儲器的爭用。 [2] 
參考資料
  • 1.    湯子瀛.計算機操作系統:西安電子科技大學出版社,2010
  • 2.    陸鑫達,翁楚良主編.計算機系統結構:高等教育出版社,2008