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

 

二、编写程序

三、测试与总结

猜你喜欢

转载自www.cnblogs.com/blogs-of-lxl/p/10165045.html