47 何謂"持有並等待"?
(A) 程序持有某資源後必須等待
(B) 程序在等待時必須持有資源
(C) 程序持有至少一個資源並等待其他資源
(D) 程序必須等待所有資源都可用
統計: A(2), B(0), C(6), D(0), E(0) #3399894
詳解 (共 2 筆)
【第一步:找關鍵字】
持有並等待(Hold and Wait)
→ Hold(持有)+ Wait(等待)
? 重點:
-
已經拿著資源
-
同時還在等別的資源
關鍵觀念:
? 這是「死結(Deadlock)」的四大條件之一
【第二步:白話翻譯】
這題在問:
?「一個程式已經拿了一些資源,但還不放手,又在等其他資源,這種情況叫什麼?」
【第三步:解題思路】
這題在考什麼觀念?
? Deadlock(死結)的必要條件之一:Hold and Wait
解題步驟
-
拆解英文:
-
Hold → 手上有資源
-
Wait → 還在等其他資源
-
組合意思:
?「一邊拿著,一邊等」
-
找最符合的選項
→ 必須同時包含「已持有 + 還在等」
原理與規則
Deadlock(死結)是什麼?
→ 多個程序互相卡住,誰也動不了
死結四大條件(必背):
-
互斥(Mutual Exclusion)
-
持有並等待(Hold and Wait)
-
不可搶奪(No Preemption)
-
循環等待(Circular Wait)
生活比喻:
兩個人吃飯:
-
A 拿了筷子,等碗
-
B 拿了碗,等筷子
? 兩個人都「持有並等待」
? 結果卡住 → 死結
【第四步:選項分析】
-
(A) 程序持有某資源後必須等待
❌ 錯
→ 太模糊,沒有說「還在等其他資源」
-
(B) 程序在等待時必須持有資源
❌ 錯
→ 這只是描述一部分,不夠完整
-
(C) 程序持有至少一個資源並等待其他資源
✅ 正確
→ 完整符合「Hold + Wait」
-
(D) 程序必須等待所有資源都可用
❌ 錯
→ 這比較像「避免死結的方法」,不是定義
【觀念補充與延伸】
核心觀念定位
這題屬於:
? 作業系統 → 死結(Deadlock)
? 超高頻必考題
法條或定義
Hold and Wait(持有並等待)
→ 程序在持有至少一個資源的同時,等待其他資源
白話:
?「手上拿著,還想再拿」
觸類旁通(舉一反三)
對比概念(避免死結):
-
一次拿齊所有資源
? 就不會發生 Hold and Wait
變化題型:
-
問四大條件是哪一個
-
問如何避免 deadlock
-
給情境判斷是否符合 Hold and Wait
【記憶口訣】
?「拿著不放,還要再要」
或:
?「一手抓、一手等 → 死結會發生」
【常見陷阱】
學生最容易搞混的地方
-
只看到「等待」就選
-
忘記一定要「已經持有」
心理盲點
看到 wait 就急著選
? 但題目重點是「同時發生」
避坑指南
解題檢查:
✔ 有沒有「已經持有」
✔ 有沒有「還在等待」
? 兩個都要有才是正解