Q81.
(本題刪題)下列有關監督器(Monitor)敘述,那些為正確?
電腦軟體設計共同科目 · 乙級 · Q81
難易度分析
4 / 5
本題為複選題,要求全面掌握監督器的互斥與封裝特性。由於涉及多個正確選項的判定,且包含易與相似同步機制混淆的陷阱選項,需要對核心概念有精確的區分能力,因此難度較高。
正確答案 (複選):①, ②
- ① 在某段時間內,只有一個程式可呼叫監督器中的程式:監督器(Monitor) 的核心特性是 互斥執行(Mutual Exclusion),在任一時刻僅允許一個執行緒進入監督器內執行程序,確保共享資料的一致性。
- ② 監督器中的程式只能處理區域性的資料及實際參數:監督器內的程序僅能存取 監督器內部聲明的共享變數(區域性資料) 以及呼叫時傳入的 實際參數,此為封裝原則的體現,防止外部直接存取內部狀態。
錯誤選項解析
- ③ 一個程式發出一訊號,若無其他程式等待此訊號,則會發出等待訊號:此描述錯誤。在 Hoare 語意監督器 中,若發出 signal 而無其他執行緒在條件變數上等待(wait),該訊號會直接 被忽略(Lost),不會產生等待行為。此與 信號量(Semaphore) 的累加特性不同。
- ④ 監督器可設定區域性程式,並提供外面的程式使用:此描述混淆了監督器的封裝概念。監督器提供的是 公開的進入點程序(Entry Procedures) 供外部呼叫,而非將「區域性程式」直接暴露給外部使用,內部實現細節應被隱藏。
Learning Tip
"監督器 vs 信號量 為 併發程式設計 的高頻考點。監督器屬於 高階同步機制,由編譯器自動處理互斥鎖;而 signal 遺失問題 是常考陷阱,需切記監督器的條件變數訊號不會累積,與 Semaphore 的 V 操作會遞增計數器完全不同。"
學員答題分佈
①在某段時間內,只有一個程式可呼叫監督器中的程式0%
②監督器中的程式只能處理區域性的資料及實際參數0%
③一個程式發出一訊號,若無其他程式等待此訊號,則會發出等待訊號0%
④監督器可設定區域性程式,並提供外面的程式使用0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!