<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 臨界區 1. 訪問共享資源的程序片段 2. 資源并不能被同時使用(如:打印機) ## 解決臨界區的辦法 ### 互斥 最簡單的辦法是讓臨界區互斥( mutual exclusion),就是同時不會有兩段程序在臨界區。嚴格說,應該滿足4個條件: 1. 任何兩個進程不同時在臨界區 2. 不對 CPU 數量和速度做任何假設 3. 臨界區外運行的進程不得阻塞其他進程 4. 不得使進程過長等待臨界區 #### 將臨界區上鎖 #### 進程在臨界區屏蔽中斷 屏蔽中斷可以**阻止進程切換**。將屏蔽中斷的能力下放給用戶進行臨界區管理。 (并不推薦) #### Perterson 算法(互斥算法-嚴格輪換法) 初始化 ``` int turn = 0 ; ``` 進程1 ``` while(ture){ while(turn != 0){ // 臨界區 turn=1; // 非臨界區 } } ``` 進程2 ``` while(ture){ while(turn != 1){ // 臨界區 turn=0; // 非臨界區 } } ``` 問題:如果進程2的非臨界區運算很慢,會出現什么情況? 答: 進程2不在臨界區中,但是由于非臨界區執行慢,會影響 如果改進 - 每個線程進入臨界區之前都標記自己對臨界區資源感興趣 - 進程執行完臨界區后,不應該主動交出控制權(設置turn),而是觀察其他進程對臨界 區的資源感不感興趣 #### 改進 Peterson 算法 雖然現在都是依靠硬件來實現互斥,但是此方案可用于分布式執行等其他領域提供靈感 ``` int[] interested = new int[2]; int turn = 0; void enterRegin(int pod){ int other = 1- pid interested[pid]=true; turn = pid; while(turn == pid && interested[other]); } void leaveRegion(int pid) {interested[pid]==false;} ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看