臨界區問題及其解決辦法(搶占式核心和非搶占式核心)

2020-07-16 10:04:40
我們從討論所謂的臨界區問題開始考慮進程同步。

假設某個系統有 n 個進程 {P0,P1,…,Pn-1}。每個進程有一段程式碼,稱為臨界區,進程在執行該區時可能修改公共變數、更新一個表、寫一個檔案等。該系統的重要特徵是,當一個進程在臨界區內執行時,其他進程不允許在它們的臨界區內執行。也就是說,沒有兩個進程可以在它們的臨界區內同時執行。

臨界區問題是設計一個協定以便共同作業進程。在進入臨界區前,每個進程應請求許可。實現這一請求的程式碼區段稱為進入區;臨界區之後可以有退出區,其他程式碼為剩餘區。一個典型進程 Pi 的通用結構如圖 1 所示。

典型進程Pi的通用結構
圖 1 典型進程 Pi 的通用結構