臨界區、相關臨界區
1.概念
臨界區:每個程序中訪問臨界資源的那段程式碼稱為臨界區(Critical Section)
臨界資源:臨界資源是一次僅允許一個程序使用的共享資源
每次只准許一個程序進入臨界區,進入後不允許其他程序進入。不論是硬體臨界資源,還是軟體臨界資源,多個進
程必須互斥地對它進行訪問。
相關臨界區:多個程序中涉及到同一個臨界資源的臨界區稱為相關臨界區。
百度百科上對臨界區的定義是:
臨界區指的是一個訪問共用資源(例如:共用裝置或是共用儲存器)的程式片段,而這些共用資源又無法同時被
多個執行緒訪問的特性。當有執行緒進入臨界區段時,其他線程或是程序必須等待(例如:bounded waiting 等待法),
有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共用資源是被互斥獲得使用,例如:
。只能被單一執行緒訪問的裝置,例如:印表機。
2.程式排程法則
程序進入臨界區的排程原則是: 1、如果有若干程序要求進入空閒的臨界區,一次僅允許一個程序進入。 2、任何時候,處於臨界區內的程序不可多於一個。如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的 程序必須等待。 3、進入臨界區的程序要在有限時間內退出,以便其它程序能及時進入自己的臨界區。 4、如果程序不能進入自己的臨界區,則應讓出CPU,避免程序出現“忙等”現象。 3.執行緒同步問題有多個執行緒試圖同時訪問臨界區,那麼在有一個執行緒進入後其他所有試圖訪問此臨界區的執行緒將被掛起,並一直
持續到進入臨界區的執行緒離開。臨界區在被釋放後,其他執行緒可以繼續搶佔,並以此達到用原子方式操作共享資源的
目的。
例題:
若系統中有五個併發程序涉及某個相同的變數A,則變數A的相關臨界區是由( )臨界區構成。
2個
3個
4個
5個
解答:D
這裡的變數A就是上面說的臨界資源(共享資源),而臨界資源一次只允許一個程序使用。相關臨界區的定義是:
相關臨界區:多個程序中涉及到同一個臨界資源的臨界區稱為相關臨界區。這裡一共有5個程序涉及到同一個臨
界資源,所以相關臨界區一共包括5個臨界區。