初考-統計資料處理大意111 年第 27 題單選題
多程序(process)在作業系統中執行,要預防死結(deadlock prevention),下列敘述何者錯誤?
A要求程序執行前,請求所有資源並獲得配置
B要求程序未握有資源下,才能請求資源
C若程序已握有資源但無法立即獲得請求資源,放棄握有的所有資源
D指定各種類別資源的整體循環排序,要求程序依序請求資源正確答案
D正確答案
死結預防旨在打破四大必要條件。破壞「循環等待」必須強制資源進行「線性排序」並遞增申請,選項 D 的「循環排序」反而會導致死結。
為什麼答案是 D
本題為反向題,D 為錯誤敘述。要破壞「循環等待 (Circular Wait)」,必須給予資源「線性排序 (Linear Ordering)」,並要求程序依序(通常是遞增)申請。若採用「循環排序」,反而會促成死結的環狀等待條件。
載入中…
完整詳解
Pro · 無限重點 死結預防旨在打破四大必要條件。破壞「循環等待」必須強制資源進行「線性排序」並遞增申請,選項 D 的「循環排序」反而會導致死結。
看到「預防死結」與「循環等待」,秒記關鍵字是「線性排序 (Linear Ordering)」。選項 D 寫「循環排序」是錯的,直接選出答案。
逐選項分析
A✕
此為破壞「持有並等待 (Hold and Wait)」條件的方法之一。要求程序在執行前一次取得所有需要的資源,就不會發生邊持有邊等待的情況。
B✕
此為破壞「持有並等待 (Hold and Wait)」條件的另一種方法。規定程序必須在「空手」狀態下才能申請資源,避免佔用資源不放。
C✕
此為破壞「不可剝奪 (No Preemption)」條件的方法。當程序要不到新資源時,主動吐出(釋放)已持有的舊資源,打破不可剝奪的限制。
D✓ 正確
本題為反向題,D 為錯誤敘述。要破壞「循環等待 (Circular Wait)」,必須給予資源「線性排序 (Linear Ordering)」,並要求程序依序(通常是遞增)申請。若採用「循環排序」,反而會促成死結的環狀等待條件。
死結四大必要條件與預防策略
| 必要條件 | 概念說明 | 預防方法 (打破條件) |
|---|
| 互斥 (Mutual Exclusion) | 資源一次只能被一個程序使用 | 通常無法預防(受限於硬體本質,如印表機) |
| 持有並等待 (Hold & Wait) | 持有部分資源,同時等待其他資源 | 1. 執行前一次拿齊所有資源
2. 未持有資源時才能申請 |
| 不可剝奪 (No Preemption) | 資源只能由持有者自願釋放,不能硬搶 | 申請不到新資源時,必須釋放已持有的所有資源 |
| 循環等待 (Circular Wait) | 程序之間形成首尾相連的環狀等待鍊 | 資源給予「線性排序」,強制程序依遞增順序申請資源 |
出題老師將破壞循環等待的關鍵解法「線性排序 (Linear Ordering)」刻意偷換成「循環排序 (Circular Ordering)」。考生若只憑直覺看到「循環」二字就以為對應,就會掉入陷阱。