LONGEPASS
Q100.

號誌(Semaphore)可以用來解決多行程同步的問題,請問在下列方法中,若將號誌sync 的初值設為1,則S1、S2 這兩段程式碼執行的先後順序?電腦軟體設計共同科目 乙級 第 100 題 題目 圖片

電腦軟體設計共同科目 · 乙級 · Q100

難易度分析

3 / 5

本題考查對號誌初值及其功能(互斥與同步)的理解。由於題目設定的初始狀態僅能確保資源不被同時存取,而無法限制行程執行的先後依賴關係,考生需能區分互斥鎖定與執行順序控制的差異方能正確作答。

正確答案:④無先後順序關係

④ 無先後順序關係:當 sync 初值設為 1 時,此號誌僅提供互斥鎖定功能,兩個行程的執行先後完全取決於 CPU 排程演算法,因此 S1 與 S2 無固定的先後順序關係。

錯誤選項解析

  • ① S1 在S2 之前:號誌初值為1時僅作為二元互斥鎖(Mutex)使用,用於保護臨界區段(Critical Section)的獨佔存取,但無法強制規定哪個行程必須先執行,因此不能保證 S1 一定在 S2 之前。
  • ② S2 在S1 之前:同理,互斥號誌的目的在於防止多個行程同時進入臨界區段,而非控制執行順序,因此也無法保證 S2 一定在 S1 之前。
  • ③ S1、S2 同時執行:S1 與 S2 不會同時執行,因為號誌 sync=1 確保了互斥性(Mutual Exclusion),同一時刻只有一個行程能進入臨界區段,但進入的順序由作業系統排程器決定。
Learning Tip

"此類題型常考 互斥(Mutual Exclusion) 與 同步(Synchronization) 的差異。號誌初值為 1 時僅實現互斥,若要控制執行順序,需使用多個號誌並設定不同的初值(如一個為 0、一個為 1)來達成程序間的先後依賴。實務上應注意區分:互斥是「保護資源」,同步是「控制順序」,兩者不可混淆。"

學員答題分佈

①S1 在S2 之前0%
②S2 在S1 之前0%
③S1、S2 同時執行0%
④無先後順序關係0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目