android binder 處理序間通訊機制2,androidbinder
1.Service組件
使用模板類BnInterface描述,稱為Binder本機物件,對應於Binder驅動程式中的Binder實體物件
實現原理圖如下:
當一個Binder代理對象通過Binder驅動程式向Binder本機物件發出一個處理序間通訊請求時,Binder會調用該本機物件的transact函數來處理請求。
對於每一個Binder線程,其內部都有一個IPCThreadState對象,調用它的transact函數和Binder驅動程式互動。
2.Clent組件
使用模板類BpInterface描述,稱為Binder代理對象,對應於Binder驅動程式中的Binder引用對象。
實現原理圖如下:
翻譯以下英語句子,不要翻譯機,是作業要,很急
上交檔案,你必須為你的科學記事本備好你的binder 2。
binder 是一種處理序間通訊的機制,用於安卓系統。
science note book 是一種開放的置於網上的科研項目的原始資料集。
短短一句話包含太多資訊,所以難懂。
處理序間通訊方式
用於進程間通訊(IPC)的四種不同技術:
1. 訊息傳遞(管道,FIFO,posix和system v訊息佇列)
2. 同步(互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,Posix和System V號誌)
3. 共用記憶體區(匿名共用記憶體區,有名Posix共用記憶體區,有名System V共用記憶體區)
4. 程序呼叫(Solaris門,Sun RPC)
訊息佇列和程序呼叫往往單獨使用,也就是說它們通常提供了自己的同步機制.相反,共用記憶體區通常需要由應用程式提供的某種同步形式才能正常工作.解決某個特定問題應使用哪種IPC不存在簡單的判定,應該逐漸熟悉各種IPC形式提供的機制,然後根據特定應用的要求比較它們的特性.
必須考慮的四個前提:
1. 連網的還是非連網的.IPC適用於單台主機上的進程或線程間的.如果應用程式有可能分布到多台主機上,那就要考慮使用通訊端代替IPC,從而簡化以後向連網的應用程式轉移的工作.
2. 可移植性.
3. 效能,在具體的開發環境下運行測試程式,比較幾種IPC的效能差異.
4. 即時調度.如果需要這一特性,而且所用的系統也支援posix即時調度選項,那就考慮使用Posix的訊息傳遞和同步函數.
各種IPC之間的一些主要差異:
1. 管道和FIFO是位元組流,沒有訊息邊界.Posix訊息和System V訊息則有從寄件者向接受者維護的記錄邊界(eg:TCP是沒有記錄邊界的位元組流,UDP則提供具有記錄邊界的訊息).
2. 當有一個訊息放置到一個空隊列中時,Posix訊息佇列可向一個進程發送一個訊號,或者啟動一個新的線程.System V則不提供類似的通知形式.
3. 管道和FIFO的資料位元組是先進先出的.Posix訊息和System V訊息具有由寄件者賦予的優先順序.從一個Posix訊息佇列讀出時,首先返回的總是優先順序最高的訊息.從一個System V訊息佇列讀出時,讀出者可以要求想要的任意優先順序的訊息.
4. 在眾多的訊息傳遞技術—管道,FIFO,Posix訊息佇列和System V訊息佇列—中,可從一個訊號處理常式中調用的函數只有read和write(適用於管道和FIFO).
比較不同形式的訊息傳遞時,我們感興趣的有兩種測量尺度:
1. 頻寬(bandwidth):資料通過IPC通道轉移的速度.為測量該值,我們從一個進程向另一個進程發送大量資料(幾百萬位元組).我們還給不同大小的I/O操作(例如管道和FIFO的write和read操作)測量該值,期待發現頻寬隨每個I/O操作的資料量的增長而增長的規律.
2. 延遲(latency):一個小的IPC訊息從一個進程到令一個進程再返回來所花的時間.我們測量的是只有一個1個位元組的訊息從一個進程到令一個進程再回來的時間(往返時間)
在現實世界中,頻寬告訴我們大塊資料通過一個IPC通道發送出去需花多長時間,然而IPC也用於傳遞小的控制資訊,系統處理這些小訊息所需的時間就由延遲提供.這兩個數都很重要.