6.1 給出可重用資源和可消費資源的例子。
可重用資源:處理器,I/O通道,主存和輔存,設備以及諸如文件,數據庫和信號量之類的數據結構。
可消費資源:中斷,信號,消息和I/O緩衝區中的信息。
6.2 可能發生死鎖所必須的三個條件是什麼?
互斥,佔有且等待,非搶佔。
6.3 產生死鎖的第4個條件是什麼?
循環等待。
6.4 如何防止佔有且等待的條件?
可以要求進程一次性地請求所有需要的資源,並且阻塞這個資源直到所有請求都同時滿足。
6.5 給出防止無搶佔條件的兩種方法。
第一種,如果佔有某些資源的一個進程進行進一步資源請求被拒絕,則該進程必須釋放它最初佔用的資源,如果有必要,可再次請求這些資源和另外的資源。
第二種,如果一個進程請求當前被另一個進程佔有的一個資源,則操作系統可以搶佔另一個進程,要求它釋放資源。
6.6 如何防止循環等待條件?
可以通過定義資源類型的線性順序來預防。如果一個進程已經分配到了R類型的資源,那麼它接下來請求的資源只能是那些排在R類型之後的資源類型。
6.7 死鎖避免,檢測和預防之間的區別是什麼?
死鎖預防是通過間接地限制三種死鎖必要條件的至少一個或是直接地限制循環等待的發生來避免死鎖的出現。死鎖避免允許可能出現的必要條件發生,但是採取措施確保不會出現死鎖的情況。而死鎖檢測允許資源的自由分配,採取週期性的措施來發現並處理可能存在的死鎖情況。