處理序間通訊1. 基本原理

來源:互聯網
上載者:User

      通常情況下,程式只能訪問自身的資料,和其它進程沒有溝通,每個進程都是一個單獨存在的個體,進程之間不需要協作就可以完成自身的任務了。但隨著需要解決問題複雜性的增加,一個進程不可能完成所有的工作,必須由多個進程之間互相配合才能更快、更好、更強的解決問題,如同人與人之間的協作可以做出更大的事情一樣。

      但是,處於安全性的考慮,OS會限制進程只能訪問自身的資料,不能把“手”伸到其它進程的內部,這怎麼辦呢?進程間的溝通問題怎麼解決呢?

      有問題,就需要溝通;需要溝通,就需要有溝通的媒介;為了公平和公正,溝通的媒介的控制權不應該屬於溝通的任何一方。以此推論下去,在電腦系統中,承擔溝通媒介控制任務的就只有OS自身了。

      所以,處理序間通訊的基本原理就是:OS提供了溝通的媒介供進程之間“對話”用。既然要溝通,如同人類社會的溝通一樣,溝通要付出時間和金錢,電腦中也一樣,必然有溝通需要付出的成本。出於所解決問題的特性,OS提供了多種溝通的方式,每種方式的溝通成本也不盡相同,使用成本和溝通效率也有所不同。我們經常聽到的 管道、訊息佇列、共用記憶體都是OS提供的供進程之間對話的方式。

     既然是溝通,必然是溝通雙方有秩序的說話,否則就成吵架了,誰也聽不到對方說什麼。如同法庭中法官控制控辯雙方的發言時機和發言時間一樣,OS也必須提供此類的管制方式使得進程的溝通顯的有序和諧。我們經常聽到的 互斥鎖、條件變數、記錄鎖、檔案鎖、號誌均屬此列。

     溝通的媒介是什嗎?

     上面我們提到管道、訊息佇列、共用記憶體都是OS所提供的對話的方式,進程所說出去的“話”至少需要暫時儲存在某個地方,然後才能被別的進程取走(聽到)。不同的實現對話方式,儲存中間資訊的媒介從邏輯上分有檔案系統,核心和記憶體三個部分。其實儲存在核心中也是儲存在記憶體中的,只是這部分記憶體只能OS自己訪問,普通進程不能直接讀寫。

     

聯繫我們

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