進程同步與非同步-軟體實現(演算法)

來源:互聯網
上載者:User

標籤:blog   問題   div   代碼   linux   log   演算法   sp   

一,初步設想

  讓兩個進程實現同步與互斥訪問臨界資源。

  虛擬碼:

turn 。。0 1P0while turn=1 do{nothing}<臨界區>turn := 1P1while turn=0 do{nothing}<臨界區>turn := 1

 問題:

  turn 為0時,進程P0在進入臨界區前(在臨界區外),如果發生失敗,則會影響其他進程的執行。同理,反過來,turn 為1時,進程P1也會影響進程P0的執行。

  此外,其中的另一個進程在臨界區內失敗,從而沒能將turn的值改變,也會影響其他進程的執行。  

  總之,無論進程在臨界區內還是臨界區外,都會影響其他進程的執行。並且,他們必須交錯執行。

第一次改進:

  “初步設想”,留下一個問題,就是上面說的。究其原因,就是其中一個進程的執行,要依託另外一個進程的執行。為瞭解決“初步設想”中遺留的問題,我們用一個標誌flag,標誌臨界區是否處於被佔用狀態。

  flat[0],flat[1] 為ture時,分別表示P0,P1他們佔用臨界區;當他們為false時,分別表示P0,P1沒有佔用臨界區。至於為什麼要這樣設定,我個人把這種思想,定義為"數組法","數組法",這個名稱,當然是為了讓我理解。(當然可能有別的更好的名稱)。

  在這裡我不得不先提到我在 學習Linux的時候,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.