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

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

二、编写程序

三、测试与总结

原文地址:https://www.cnblogs.com/blogs-of-lxl/p/10165045.html

时间: 2024-11-02 22:24:43

Android : 跟我学Binder --- (3) C程序示例的相关文章

Android : 跟我学Binder --- (4) 驱动情景分析

目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 Android : 跟我学Binder --- (3) C程序示例 Android : 跟我学Binder --- (4) 驱动情景分析 Android : 跟我学Binder --- (5) server的多线程实现(未写) Android : 跟我学Binder --- (6) c++实现_(

Android : 跟我学Binder ---- (1) 什么是Binder机制?

一.引言 如果把Android系统比作一幅精美绝伦的画,那Binder则是其浓墨重彩的独特一笔.初步了解过的人应该知道Binder是Android核心进程间通信(IPC:Internet Process Connection)手段之一,它是基于开源的 OpenBinder 实现,OpenBinder 起初由 Be Inc. 开发,后由 Plam Inc. 接手.从字面上来解释 Binder 有胶水.粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信.而日常开发中涉及到的如:AIDL.插件化编

android开发难学吗? Android开发学习方法

Android开发难学吗?新手应该如何怎样学好android开发?现在学习android开发晚了吗?这些都是想学android开发(http://www.maiziedu.com/course/android-px/)的新手提出的疑惑,其中有些问题不是我们应该担心,既然喜欢了,那就去做,不做怎么知道学了android开发会不会给自己带来变化,那么新手应该如何学好android开发呢?现在就随着小编一起来看看. 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些.Andro

深入理解Android IPC机制之Binder机制

Binder是Android系统进程间通信(IPC)方式之一.Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection): 管道(Pipe).信号(Signal)和跟踪(Trace).插口(Socket).报文队列(Message).共享内存(Share Memory)和信号量(Semaphore).本文详细介绍Binder作为Android主要IPC方式的优势. Binder机制概述: 基于Client-Server的通信方式广泛应用于从互联网和数据

Android系统中基于Binder的IPC流程框架分析

前言: Activity.Service.BroadcastReceiver.Content Provider是Android的四大应用程序组件,构成一个完整的应用程序的这些组件可以在同一个进程,也可以不在同一个进程,而当这些组件不在同一个进程,需要进行数据交互时就需要一种IPC(Inter-Process Communication)进程间通信机制来完成,而Binder就是提供了IPC功能的一个框架.实现IPC的整个Binder框架包含几个重要组成部分,它们分别是Binder Driver.C

Android上方便地开发的C程序

如果你基于没有一个专门的开发板练手,那你的Android手机也可以开发大多数C应用程序,安装好后编译C的编译器.本文只写一个Hello World的运行过程.优点是:不需要eclipse,不需要Android源码,不需要Android.mk,不需要NDK.一个C程序员就可以很好的利用Android了,需要一个编译器和一个adb要把程序放到Android系统中. 1.安装adb sudo apt-get install android-tools-adb 2.安装交叉工具链 sudo apt-ge

(转)关于android中bitmap过大导致的程序crash问题

第一种方法--及时回收bitmap内存: 一般而言,回收bitmap内存可以用到以下代码 if(bitmap != null && !bitmap.isRecycled()){ bitmap.recycle(); bitmap = null; } System.gc(); bitmap.recycle()方法用于回收该bitmap所占用的内存,接着将bitmap置空,最后,别忘了用System.gc()调用一下系统的垃圾回收器. 在这里要声明一下,bitmap可以有多个(以为着可以有多个i

android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)

如有错漏请不吝拍砖指正,转载请注明出处,很感谢 桌面便签软件是android上经常使用软件的一种,比方比較早的Sticky Note,就曾很流行, Sticky Note的介绍能够參见 http://www.tompda.com/c/article/11778/ 而实际上使用android平台对widget开发的支持,桌面便签类软件是很易于开发的. 本文通过逐步实现一个简单的桌面便签软件,和大家分享进行widget开发的过程和方法. 1.MyNote的终于实现效果 为了提起大家阅读本文的兴趣,先

Android:让Link始终保持在程序的WebView中跳转

在Android的WebView中,当点击调用网页的链接时,默认的动作是跳转到系统设定的默认浏览器中.如果想让链接始终在当前WebView中跳转的话,就需要添加以下代码: 1 WebView webView = (WebView) findViewById(R.id.webView1); 2 webView.setWebViewClient(new WebViewClient()); 如果只是想让特定的URL保持在WebView中跳转的话,可以通过重写WebViewClient来实现,示例如下: