[Binder 一]Binder浅析

2024-01-06  本文已影响0人  慎独静思

Binder是android系统中的一种进程通信方式,Android开发以及源码中大量使用了这种方式。
进程空间分为:用户空间和内核空间,用户空间不共享,内核空间是共享。

image.png
Binder驱动运行在内核空间,相比于其他的进程通信方式如管道,socket等,Binder通信方式只需要进行一次数据拷贝,而其他方式需要进行两次数据拷贝。
两次数据拷贝分别是:
copy_from_user() //将数据从用户空间拷贝到内核空间
copy_to_user() //将数据从内核空间拷贝到用户空间
image.png
Binder只有一次数据拷贝的原因是内存映射 image.png

一次完整的Binder IPC 通信过程通常是这样:

Binder内容分布在Android系统的Java层,Native层和驱动层。
Binder通信采用C/S结构,主要的角色包括:Client,Server,Service Manager和Binder驱动。


image.png

Service Manager是服务管理类,一个Service想要在Android系统生效,必须在Service Manager进行注册,也就是调用它的addService方法,之后客户端可以通过getService获取对应的服务,然后客户端和服务端可以进行通信。
步骤1,2,3都使用Binder通信进行跨进程通信。

文章大部分内容和所用图片来自参考内容3

参考:

  1. 《深入理解Android卷1》
  2. 《深入理解Android卷2》
  3. Android——Binder机制
上一篇 下一篇

猜你喜欢

热点阅读