Android : 跟我学Binder --- (3) C程序示例

 


 

目录:

 

一、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

 

 

 Android : 跟我学Binder --- (3) C程序示例

 

Android : 跟我学Binder --- (3) C程序示例

 



 

 

 

  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测试代码

 

 

 

二、编写程序

三、测试与总结

 

Android : 跟我学Binder --- (3) C程序示例

Android : 跟我学Binder --- (3) C程序示例

上一篇:android Intent


下一篇:iOS weak底层实现原理