進程同步 讀作業系統概念第六版

來源:互聯網
上載者:User

臨界區問題的解答

1:互斥:如果進程Pi在其臨界區內執行,那麼其他進程都不能在其臨界區執行。

2:有空讓進:如果沒有進程在其臨界區內執行且有進程希望進入臨界區,那麼只有那些不在剩餘區內執行的進程能參加決策,以選擇誰能下一個進入臨界區,且這種選擇不能無限延遲。

3:有限等待:在一個進程做出進入其臨界區的請求被允許期間,其他進程被允許進入其臨界區的次數存在一個上限。

,進程Pi的結構:

個人理解:1,進入臨界區flag[i]=true,出臨界區flag[i]=false;

                  2,進入臨界區時判斷進程j是否在臨界區,用flag[j]==true判斷。

具體流程介紹:

首先進入,falg[i]和flag[j]都設為了true,但是turn只能設為i或j,若為i,則Pi進程進入臨界區,Pj等待。Pi出臨界區,進入剩餘區,flag[i]=false,Pj通過判斷語句進入臨界區。分兩種情況,1:Pi早早執行完剩餘區,等待Pj出臨界區,設定flag[j]=false,Pi進入臨界區,後面基本相同;2:Pj出了臨界區,執行完剩餘區,但是Pi還在剩餘區(則flag[i]=false),則Pj迴圈判斷,flag[i]=false,則Pi不在臨界區,Pj在進入臨界區操作。情況1滿足了互斥,情況2滿足了前進(有空讓進)。

例子介紹:生產者和消費者,上面情況1:生產者製造產品時,消費者不能取產品;而消費者取產品,生產者不能製造產品;上面情況2:消費者取了產品去幹其他事(相當於剩餘區),生產者可以不停製造;

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.