我們從討論所謂的臨界區問題開始考慮進程同步。
假設某個系統有 n 個進程 {P
0,P
1,…,P
n-1}。每個進程有一段程式碼,稱為臨界區,進程在執行該區時可能修改公共變數、更新一個表、寫一個檔案等。該系統的重要特徵是,當一個進程在臨界區內執行時,其他進程不允許在它們的臨界區內執行。也就是說,沒有兩個進程可以在它們的臨界區內同時執行。
臨界區問題是設計一個協定以便共同作業進程。在進入臨界區前,每個進程應請求許可。實現這一請求的程式碼區段稱為
進入區;臨界區之後可以有
退出區,其他程式碼為
剩餘區。一個典型進程 P
i 的通用結構如圖 1 所示。
圖 1 典型進程 P
i 的通用結構