《UNP》-IPC學習筆記(1):IPC綜述

來源:互聯網
上載者:User
1. 《UNP》是《UNIX Network Programming》,unix網路編程這本書的簡稱。作者是:W.Richard Stevens,他是unix與網路方面的專家,他寫了幾本書,都是unix和網路方面的經典:
(1). 《APUE》一卷,《AdvancedProgramming in the UNIX Environment》中文稱為unix環境進階編程。是一本詳細描述unix類系統調用的書,unix的C編程中的經典。
(2). 《UNP》二卷,第一卷是關於Unix 網路方面的API詳細描述;第二卷寫的是IPC,就是interprocess communication(處理序間通訊)。是關於Unix網路編程方面的經典。
(3). 《TCP/IP詳解》三卷,第一卷寫的是TCP/IP協議,第二卷寫TCP/IP協議在BSD中的C實現,第三卷寫事務和HTTP協議等。

這六本書,可以說一出書以來就是UNIX類駭客的最愛和必讀之書。

在學習Stevens先生的書時,先對先生的在天之靈說聲謝謝,由於他,我才能方便的學到這些知識。

我現在在看的是《UNP》的第二卷,IPC的應用。第一卷還沒有翻過呢,打算看了第二卷之後有時間能學習第一卷的東西。

這些書中的源碼可以到 Stevens 先生的首頁:http://www.kohala.com/start/ 裡面去下載哈。

2、IPC簡介

IPC是處理序間通訊,就是不同進程如何傳遞訊息和同步資源。IPC從來就是UNIX中的一個雜亂不堪的領域,雖然方案很多,但沒有一個是完美的。

IPC通常分為4個領域:
(1)、資訊傳遞(管道,fifo,訊息佇列)
(2)、同步(互斥鎖,條件變數,讀寫鎖,訊號量)
(3)、共用記憶體區(匿名共用區,有名共用區)
(4)、RPC--遠程調用(Solaris門,Sun RPC)

這裡的IPC適用於單個進程中多個線程間的訊息通訊和多個進程間的訊息通訊。下面只說進程,如果要線程,把進換成線即可(呵呵)

3、資訊共用方式

(1)、通過檔案分享權限設定,線程之間通過訪問同一個檔案來共用檔案裡面的資訊。要點:這樣要訪問檔案則要穿越核心訪問磁碟;當檔案需要更新時,某種形式的同步是必須的。
(2)、通過共用在核心中的某些資訊,對這些資訊的訪問操作要調用一次系統調用。如管道、System V訊號量和System V 訊息佇列
(3)、設定一個共用記憶體區,如此,就不用通過核心而直接存取此記憶體區。需要某種形式上的同步機制。

4、書中的IPC例子:
(1)、檔案伺服器: C/S模式的程式,客戶向伺服器發送一個檔案的路徑名(請求),伺服器向客戶發送該檔案的內容或者是出錯資訊。
(2)、生產者-消費者:一個或多個稱為生產者的進程將資料放到共用緩衝區內,另外有一個或多個稱為消費者的進程從緩衝區裡面取資料出來。
(3)、序號持續加1:一個或多個進程給同一個共用序號持續加1,這個序號在檔案或者是在共用記憶體中。

第一個例子分析的是各種形式的訊息傳遞,第二、三個例子分析的是共用記憶體和各種同步機制。

聯繫我們

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