【Android Binder 系统】一、Binder 系统核心 ( IPC 进程间通信 | RPC 远程调用 )
文章目錄
- 一、Binder 系統兩個核心
- 二、IPC 進程間通信
- 三、RPC 遠程過程調用
一、Binder 系統兩個核心
Binder 系統 最重要的兩個核心是 IPC 和 RPC ;
IPC ( Inter-Process Communication ) 進程間通信 : 數據在 不同的進程 之間傳遞 ; 如 : 進程 A 發送數據到進程 B ;
RPC ( Remote Procedure Call ) 遠程過程調用 : A 進程通過 IPC 發送數據到 B 進程 , B 進程調用自己本地的相關邏輯 , A 進程通過 RPC 調用了 B 進程的代碼 ;
RPC 是在 IPC 基礎上進行的封裝 , IPC 負責數據的跨進程傳輸 ;
二、IPC 進程間通信
數據傳輸需要由 333 個要素組成 , 數據源 ( 進程 A ) , 目的地 ( 進程 B ) , 數據 ;
IPC 目的端進程標識 : 那么如果要實現 IPC 跨進程通信 , 源端 進程 A 如何 標識 目的端 進程 B , 進程 A 應該向哪個進程發送數據 , 如何進行標識 ;
服務注冊與查詢 : 進程 B 向 ServiceManager 注冊服務 , 進程 A 從 ServiceManager 查詢進程 B 注冊的服務 , 得到一個 Handle , 該 Handle 指向進程 B ;
在 Android 系統中 , 進程 A 就是 Client 客戶端 , 進程 B 就是 Server 服務端 ,
Client 客戶端 如何 標記 Server 服務端 , 這里引入 ServiceManager , 這三者之間的通信 , 通過 Binder 驅動 實現 ;
如下圖所示 :
三、RPC 遠程過程調用
RPC ( Remote Procedure Call ) 遠程過程調用 可以理解為 調用其它某個進程的函數 ;
RPC 涉及到的函數相關問題 : 這里有涉及到識別問題 , 如何 標識 遠程調用目的進程的某個 函數 , 給函數傳遞哪些 參數 , 該函數如何返回 返回值 ;
標識函數 : 需要 Client 客戶端 向 Server 服務端 發送要調用的 函數的編號 ;
傳遞參數 : 遠程過程調用 的參數放在 IPC 數據中的緩沖區 中 ;
返回返回值 : 函數執行完畢后 , Server 服務端需要將返回值通過 IPC 發送給 Client 客戶端 , 該返回值也是存放在 IPC 數據緩沖區 中傳遞回去 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【Android Binder 系统】一、Binder 系统核心 ( IPC 进程间通信 | RPC 远程调用 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenGL】六、Visual Stu
- 下一篇: 【OpenGL】七、桌面窗口搭建 ( 导