Operating System-进程/线程内部通信-临界区(Critical Regions)
生活随笔
收集整理的這篇文章主要介紹了
Operating System-进程/线程内部通信-临界区(Critical Regions)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇文章講述了進程之間的競爭條件:多個進程同時進入一個共享區域,導致了數據的不一致,本文主要介紹如何解決這個問題。
一、臨界區介紹
解決這個問題就是阻止多個進程同時進入這個共享區域,換句話說,進程之間針對這塊共享區域需要排他(Mutual Exclusion)。問題的根源是進程B在進程A沒有從共享區域返回之前就進入了共享區域。
在大部分情況下兩個進程之間是不會共享變量的,只會有一部分步驟會使用到共享變量,在程序設計中,可以把這部分訪問共享變量程序單獨設計出來,這部分程序叫做臨界區(Critical Regions)。如果保證兩個進程永遠只有一個進程進入這塊臨界區域,那么進程之間的條件競爭也就迎刃而解。
達到上面的結果需要以下條件:
- 沒有兩個進程同時進入臨界區域
- 對CPU的速度或者數量不做要求
- 被Block在臨界區域之外的等待的進程會block其他進程,比如,進程A在臨界區域內,那么這個時候進程B來訪問臨界區,進程B就會被Block到臨界區外,這個時候的進程B不應該Block其他進程
- 沒有進程會被永遠Block到臨界區之外
二、臨界區演示
圖示
?
- 在T1時間Process A進入臨界區域
- T2時間,Process B嘗試進入臨界區域
- 因為A在臨界區域,所以B被Block
- T3時間A離開臨界區域,B進入臨界區域時間
- T4時間,B離開臨界區域
使用臨界區域的概念有什么好處呢?
- 如果進程A和B在大部分時間內沒有使用到共享資源,那么在這段時間內內A、B是可以并行執行的。
- 只有針對臨界區域的訪問才不能并行。
- 最大限度讓進程并行工作,且高效的使用共享數據
三、總結
- 抽象臨界區域
- 對臨界區域進行排他
- 如歌實現排他呢?下一篇文章進行介紹。
轉載于:https://www.cnblogs.com/Brake/p/Operating_System_Interprocess_Communication_Critical_Regions.html
總結
以上是生活随笔為你收集整理的Operating System-进程/线程内部通信-临界区(Critical Regions)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取iOS系统版本
- 下一篇: iOS ReactiveCocoa 最全