美文网首页常识
安卓binder机制探索

安卓binder机制探索

作者: sk96 | 来源:发表于2017-05-27 15:59 被阅读54次

IPC指进程间通信,安卓系统的每一个application都是由一些activity和service组成的。而activity和service可能在不同的进程中运行,因此他们有进行进程间通信的需求。

为什么选择binder机制?

传统的linux的进程间通信方式有pipe(管道)、signal(信号)、trace(跟踪)、shared memory(共享内存)等方式,但是因为这些方式有的存在约束(只能在父进程与子进程之间通信)、有的数据多次拷贝存在效率问题、有的安全性不够,因此安卓系统中采用了基于OpenBinder的Binder机制。

binder机制原理

对于不同的进程,用户空间是不可共享的,而内核空间是可以共享的,所以安卓是通过可以共享的内核空间进行进程间通信。

Binder其实是提供了远程过程调用功能,client端得到了server端的一个远程接口,接口中的方法与server端的方法一 一对应,client端通过调用远程接口中的方法来与server端进行通信。它们之间传递的数据为Parcel格式。Parcel是一个可以包含数据或者对象引用的容器。

binder机制架构

Binder机制采用C/S架构,主要包含client组件、server组件、service manager组件以及binder驱动程序。其中client组件、server组件、service manager组件运行在用户空间,而binder驱动程序在内核空间。client组件通过在service manager组件上查看server组件注册的服务从而使用它们。

binder的C/S架构示意图


service manager分析

service manager是一个守护进程,在安卓系统启动之后,就运行起来,管理系统的service。

下面是service manager的主函数


int main(int argc, char **argv)

{

struct binder_state *bs;

void *svcmgr = BINDER_SERVICE_MANAGER;

bs = binder_open(128*1024);

if (binder_become_context_manager(bs)) {

LOGE("cannot become context manager (%s)\n", strerror(errno));

return -1;

}

svcmgr_handle = svcmgr;

binder_loop(bs, svcmgr_handler);

return 0;

}


主函数中,主要是进行了/dev/binder驱动程序的打开,通知binder自己变成了context_manager(如果失败也返回结果),以及不断查看binder,看是否有请求需要处理。

相关文章

  • 安卓binder机制探索

    IPC指进程间通信,安卓系统的每一个application都是由一些activity和service组成的。而ac...

  • 安卓Binder机制学习笔记

    Binder是什么 Binder是安卓中的一种跨进程通信的机制。我们知道安卓系统提供了各种各样的系统服务,如AMS...

  • Android--Binder机制与AIDL

    关于安卓中的Binder机制,该博客很值得一看:Android Binder设计与实现 - 设计篇[https:/...

  • 知识总结 插件化学习 Binder机制原理

    Binder是android系统特有IPC方式,安卓平台中的各种服务交互基本都是Binder机制实现,理解和掌握B...

  • IPC之AIDL分析

    AIDL用法及代码分析 AIDL为安卓接口定义语言的简称,作用是利用binder机制,实现IPC。 1、AIDL用...

  • Android-Binder机制的理解

    安卓中Binder机制是一种跨进程通信的方式,在日常应用开发中四大组件底层通信机制、Activity传递对象以及A...

  • Binder 通信机制

    Binder 是什么?安卓中的一种IPC的通信机制,了解他的思想,也是贯穿framework源代码很多地方,能够帮...

  • 01. Android Binder图解 小米系统

    很多BAT也不一定能懂的binder机制!我同事从小米跳槽过来,干安卓framework层10年,是小米的专家级别...

  • 02. Android Binder图解 小米系统

    很多BAT也不一定能懂的binder机制! 我同事从小米跳槽过来,干安卓framework层10年,是小米的专家级...

  • 2021/8/5招银网络科技安卓一面

    跨进程通信 1。安卓内部的共享内存机制 3.讲一下Binder 3.自己实现AIDL的类,怎么写 4.AIDL中s...

网友评论

    本文标题:安卓binder机制探索

    本文链接:https://www.haomeiwen.com/subject/yfqqfxtx.html