阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104 專技高考_電子工程技師:電子計算機原理#41860
科目:計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)
年份:104年
排序:0

題組內容

五、

申論題內容

⑴何謂程序的關鍵部分(critical section)?(5 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

程序的關鍵部分(Critical Section)是指在多線程或多進程環境中,需要互斥訪問的那段代碼或區域。在這段代碼中,只有一個線程或進程可以進入並執行,以避免競爭條件(Race Conditions)和數據不一致性。關鍵部分的主要目的是確保共享資源的正確性和一致性。

關鍵部分的特性

  1. 互斥性(Mutual Exclusion):在任意時刻,最多只能有一個線程或進程進入關鍵部分,確保沒有其他線程或進程能同時進入。

  2. 進入條件(Entry Condition):當某個線程或進程想要進入關鍵部分時,必須滿足一定的條件,這些條件通常由同步機制(如鎖、信號量)來實現。

  3. 退出條件(Exit Condition):當一個線程或進程完成對關鍵部分的訪問後,必須釋放資源,使其他等待的線程或進程能夠進入。

典型的實現方法

  1. 鎖(Locks):通過鎖機制來保證只有一個線程能夠進入關鍵部分。當一個線程獲取到鎖時,其他線程必須等待鎖的釋放。

  2. 信號量(Semaphores):使用信號量來控制進入關鍵部分的線程數量。二元信號量(binary semaphore)通常用於互斥,而計數信號量(counting semaphore)則可允許多個線程同時訪問。

  3. 自旋鎖(Spinlocks):當一個線程嘗試獲取鎖時,如果鎖已經被其他線程持有,它會在等待時不斷自旋,直到鎖被釋放。

  4. 屏障(Barriers):屏障用於同步多個線程,保證所有線程都達到某一點後才繼續執行。