1. 程式人生 > >Android : 跟我學Binder --- (3) C程式示例 Android : 跟我學Binder --- (1) 什麼是Binder IPC?為何要使用Binder機制?

Android : 跟我學Binder --- (3) C程式示例 Android : 跟我學Binder --- (1) 什麼是Binder IPC?為何要使用Binder機制?

 


 

目錄:

 

一、Binder框架分析

  1、IPC、LPC和RPC的概念:

    IPC:  (Inter Process Communication )跨程序通訊,泛指程序之間任何形式的通訊行為,它不僅包括各種形式的訊息傳遞,還可以指共享資源,以及同步物件;

    LPC: Local Procedure Call 本地過程呼叫,用在多工作業系統中,使得同時執行的任務能互相會話。這些任務共享記憶體空間使任務同步和互相傳送資訊;(IPC的封裝)

    RPC:(Reomote Procedure Call )遠端過程呼叫,類似於LPC,只是在網上工作。RPC開始是出現在Sun微系統公司和HP公司的執行UNIX作業系統的計算機中;

 

  2、通訊架構:

    Client/Server <---> service manager 互動流程:

      server ---------addservice-------> service manager

      client  ---------getservice--------> service manager

 

 

 

 

 



 

 

 

  2、原始碼框架

 

    (1)android_5.0.2_32\frameworks\native\cmds\servicemanager\service_manager.c  //管理server註冊的服務(程序)

      a. binder_open
      b. binder_become_context_manager
      c. binder_loop(bs, svcmgr_handler);
         c.1 res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr);
         c.2 binder_parse
              // 解析
              // 處理  : svcmgr_handler
                       SVC_MGR_GET_SERVICE/SVC_MGR_CHECK_SERVICE : 獲取服務
                       SVC_MGR_ADD_SERVICE : 註冊服務          
              // 回覆         

    ②android_5.0.2_32\frameworks\native\cmds\servicemanager\binder.c  //封裝好的Binder驅動庫

    ③android_5.0.2_32\frameworks\native\cmds\servicemanager\bctest.c  //client測試程式碼

 

 

 

二、編寫程式

三、測試與總結