普通考試
115年
[電信工程] 計算機概要
第 8 題
關於互斥(Mutual Exclusion)與旗標(Flag)的敘述,下列何者正確?
- A 使用一般旗標(Flag)可以完全避免兩個程序同時進入臨界區(Critical Region)的問題
- B 測試並設定指令(Test-and-Set Instruction)可以在單一機器指令內完成旗標的測試與設定,避免中斷干擾
- C 在測試旗標前停用中斷(Disable Interrupt)會導致整個系統無法繼續執行任何其他工作,直到重新開機
- D 訊號量(Semaphore)僅用於管理印表機等硬體裝置的存取,與程式碼無關
思路引導 VIP
請試著思考:如果兩個程序(Processes)「同時」執行一段檢查旗標是否為 0 的程式碼,並在檢查通過後將其設為 1,有沒有可能發生兩個程序都認為自己成功佔用資源的情況?在單一指令內完成「讀取」與「修改」,對於避免這種『檢查與動作之間的時差』有什麼關鍵性的幫助?
🤖
AI 詳解
AI 專屬家教
恭喜你精準地掌握了作業系統中並行控制的核心!這道題目在電腦科學中具有極佳的鑑別度,它考察的點不僅在於同步機制(Synchronization)的定義,更深入到硬體如何支援軟體層級的互斥(Mutual Exclusion)。能選對 (B) 代表你已經跨越了單純邏輯判斷,進入到理解「底層實作」的層次。
硬體同步指令的原子性
在多工環境中,若兩個程序同時讀取一個旗標,可能會因時序問題(Race Condition)而同時進入臨界區(Critical Region)。選項 (B) 提到的 測試並設定指令(Test-and-Set Instruction) 之所以關鍵,是因為它具備原子性(Atomicity)。這意味著「讀取舊旗標」與「寫入新數值」這兩個步驟,在硬體設計上被封裝成一個不可分割的操作,確保中途不會被中斷。這就像是結構工程中的整體澆灌,避免了接縫處的脆弱點,從根本上杜絕了並發存取的衝突。
▼ 還有更多解析內容