當前位置:首頁 » 文件傳輸 » 諸進程訪問臨界區時為什麼要互斥
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

諸進程訪問臨界區時為什麼要互斥

發布時間: 2023-01-27 01:29:59

① 進程的互斥與進程互斥的訪問臨界區的區別

請參閱:
1、不論是硬體臨界資源,還是軟體臨界資源,多個進程必須互斥地對它進行訪問。每個進程中訪問臨界資源的那段代碼稱為臨界區(Critical Section)。
每個進程中訪問臨界資源的那段程序稱為臨界區(Critical Section)(臨界資源是一次僅允許一個進程使用的共享資源)。每次只准許一個進程進入臨界區,進入後不允許其他進程進入。不論是硬體臨界資源,還是軟體臨界資源,多個進程必須互斥地對它進行訪問。
多個進程中涉及到同一個臨界資源的臨界區稱為相關臨界區。
進程進入臨界區的調度原則是: ①如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入。②任何時候,處於臨界區內的進程不可多於一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待。③進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區。④如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現「忙等」現象。
如果有多個線程試圖同時訪問臨界區,那麼在有一個線程進入後其他所有試圖訪問此臨界區的線程將被掛起,並一直持續到進入臨界區的線程離開。臨界區在被釋放後,其他線程可以繼續搶占,並以此達到用原子方式操作共享資源的目的。
臨界區在使用時以CRITICAL_SECTION結構對象保護共享資源,並分別用EnterCriticalSection()和LeaveCriticalSection()函數去標識和釋放一個臨界區。所用到的CRITICAL_SECTION結構對象必須經過InitializeCriticalSection()的初始化後才能使用,而且必須確保所有線程中的任何試圖訪問此共享資源的代碼都處在此臨界區的保護之下。否則臨界區將不會起到應有的作用,共享資源依然有被破壞的可能。

② 什麼是臨界區和臨界資源對臨界區管理的基本原則是什麼

1、臨界區指的是一個訪問共用資源(例如:共用設備或是共用存儲器)的程序片段,而這些共用資源又無法同時被多個線程訪問的特性。

當有線程進入臨界區段時,其他線程或是進程必須等待,有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共用資源是被互斥獲得使用。只能被單一線程訪問的設備,例如:列印機。

2、臨界資源:多道程序系統中存在許多進程,它們共享各種資源,然而有很多資源一次只能供一個進程使用。一次僅允許一個進程使用的資源稱為臨界資源。許多物理設備都屬於臨界資源,如輸入機、列印機、磁帶機等。

3、進程進入臨界區的調度原則是:

(1)如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入。

(2)進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區。

(3)任何時候,處於臨界區內的進程不可多於一個。

(4)如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現「忙等」現象。

(2)諸進程訪問臨界區時為什麼要互斥擴展閱讀

1、臨界區存在的問題

臨界區的退出,不會檢測是否是已經進入的線程,也就是說,可以在A線程中調用進入臨界區函數,在B線程調用退出臨界區的函數,同樣是成功。

臨界區內的數據一次只能同時被一個進程使用,當一個進程使用臨界區內的數據時,其他需要使用臨界區數據的進程進入等待狀態。

2、各進程採取互斥的方式,實現共享的資源稱作臨界資源。

屬於臨界資源的硬體有列印機、磁帶機等,軟體有消息緩沖隊列、變數、數組、緩沖區等。 諸進程間應採取互斥方式,實現對這種資源的共享。

③ 對臨界區管理的基本原則是什麼

臨界區,每個進程中訪問臨界資源的那段程序叫做臨界區,是一個訪問共享資源的程序片段。進程對臨界區的訪問必須互斥,每次只允許一個進程進去臨界區,其他進程等待。
臨界資源:指每次只允許一個進程訪問的資源,分硬體臨界資源、軟體臨界資源。
臨界區管理的基本原則是:
①如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入。②任何時候,處於臨界區內的進程不可多於一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待。③進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區。④如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現「忙等」現象。
1.臨界資源
臨界資源是一次僅允許一個進程使用的共享資源。各進程採取互斥的方式,實現共享的資源稱作臨界資源。屬於臨界資源的硬體有,列印機,磁帶機等;軟體有消息隊列,變數,數組,緩沖區等。諸進程間採取互斥方式,實現對這種資源的共享。
2.臨界區:
每個進程中訪問臨界資源的那段代碼稱為臨界區,每次只允許一個進程進入臨界區,進入後,不允許其他進程進入。不論是硬體臨界資源還是軟體臨界資源,多個進程必須互斥的對它進行訪問。多個進程涉及到同一個臨界資源的的臨界區稱為相關臨界區。使用臨界區時,一般不允許其運行時間過長,只要運行在臨界區的線程還沒有離開,其他所有進入此臨界區的線程都會被掛起而進入等待狀態,並在一定程度上影響程序的運行性能。