操作系統第二章(四)

2.7進程通信

1.低級通信:在進程間交換數據量少的進程通信方式。一般只傳送一個和幾個字節的信息,達到控制進程執行速度的作用(例如進程的同步與互斥)。信號量機制就是一種低級通信方式,它作爲同步工具是卓有成效的,但作爲通信工具則不夠理想。(傳輸效率低。通信對用戶不透明)

2.高級通信:用戶可以直接利用操作系統所提供的一組通信命令,高效地傳送大量數據的一種通信方式。 (傳輸效率高。通信過程對用戶是透明的)

3.三種基本通信方式:

(1)共享存儲系統:設置一個共享空間,互斥地訪問共享空間。其存在兩種結構:基於數據結構(低級);基於存儲區的共享(高級)

(2)消息傳遞系統:傳遞結構化的消息。系統提供“發送/接受”原語。消息傳遞共兩種方式:直接通信方式(消息直接發送到消息隊列),間接通信方式(消息先發送到中間體)。

(3)管道通信方式:寫滿時,不能再寫;讀空時,不能再讀。沒寫滿,不能讀;沒讀空,不能寫。

2.8死鎖問題

哲學家進餐:

 

產生死鎖的原因:

(1)競爭臨界資源:當系統中供多個進程共享的臨界資源(如打印機、公用隊列等)的數目不能滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖。這個問題在多道程序系統中是無法解決的。可剝奪性資源: CPU和主存;不可剝奪性資源:磁帶機、打印機等

(2)進程推進順序不當:進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致死鎖的產生。這個問題在多道程序系統中是可以解決的。

產生死鎖的必要條件:

1.互斥條件:每一資源被分配給一個進程,或者空閒。    

2.佔有並請求條件:已分配到了一些資源的進程可以申請新的資源。    

3.不可剝奪條件:進程所獲得的資源在未使用完畢之前,資源申請者不能強行地從資源佔有者手中奪取資源,而只能由該資源的佔有者進程自行釋放。    

4.循環等待條件:鏈中的每一個進程都在等待相鄰進程所佔用的資源。

死鎖的防止:

1.靜態資源分配法

2.摒棄“不可剝奪條件” :進程在需要資源時才提出請求。

3.有序資源使用法(摒棄“循環等待條件”)

 

銀行家算法:

描述:每當進程提出資源請求且系統的資源能夠滿足該請求時,系統將判斷如果滿足此次資源請求,系統狀態是否安全,如果判斷結果爲安全,則給該進程分配資源,否則不分配資源,申請資源的進程將阻塞。

數據結構:

(1)可利用資源向量Available:(剩餘或可用資源量),記錄系統中各類資源的當前可利用數目。如果Available[j]=k, 表示系統中現有Rj類資源k個。

(2) 最大需求矩陣Max:每個進程對各類資源的最大需求量  

(3)Allocation:已爲每個進程分配的數量或者說每個進程對各類資源當前的佔有量。  

(4)需求矩陣Need:某進程對各類資源尚需要的數目。Need=Max-Allocation  

(5)請求向量Request:它記錄某個進程當前對各類資源的申請量,是銀行家算法的入口參數。

 

通過對於系統資源的分配找到一種安全序列(安全序列不唯一)使得系統按照順序進行資源分配能夠完成對所有的訪問。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章