1. 程式人生 > >第六章—併發性:死鎖和飢餓【計算機作業系統】

第六章—併發性:死鎖和飢餓【計算機作業系統】

6.1 給出可重用資源和可消費資源的例子。

可重用資源:處理器,I/O通道,主存和輔存,裝置以及諸如檔案,資料庫和訊號量之類的資料結構。

可消費資源:中斷,訊號,訊息和I/O緩衝區中的資訊。

6.2 可能發生死鎖所必須的三個條件是什麼?

互斥,佔有且等待,非搶佔。

6.3 產生死鎖的第4個條件是什麼?

迴圈等待。

6.4 如何防止佔有且等待的條件?

可以要求程序一次性地請求所有需要的資源,並且阻塞這個資源直到所有請求都同時滿足。

6.5 給出防止無搶佔條件的兩種方法。

第一種,如果佔有某些資源的一個程序進行進一步資源請求被拒絕,則該程序必須釋放它最初佔用的資源,如果有必要,可再次請求這些資源和另外的資源。

第二種,如果一個程序請求當前被另一個程序佔有的一個資源,則作業系統可以搶佔另一個程序,要求它釋放資源。

6.6 如何防止迴圈等待條件?

可以通過定義資源型別的線性順序來預防。如果一個程序已經分配到了R型別的資源,那麼它接下來請求的資源只能是那些排在R型別之後的資源型別。

6.7 死鎖避免,檢測和預防之間的區別是什麼?

死鎖預防是通過間接地限制三種死鎖必要條件的至少一個或是直接地限制迴圈等待的發生來避免死鎖的出現。死鎖避免允許可能出現的必要條件發生,但是採取措施確保不會出現死鎖的情況。而死鎖檢測允許資源的自由分配,採取週期性的措施來發現並處理可能存在的死鎖情況。