美文网首页
[Binder 一]Binder浅析

[Binder 一]Binder浅析

作者: 慎独静思 | 来源:发表于2024-01-06 00:14 被阅读0次

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

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

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

  • Binder 驱动在内核空间创建一个数据接收缓存区;
  • 然后在内核空间开辟一块内核缓存区,建立内核缓存区和内核中数据接收缓存区之间的映射关系,以及内核中数据接收缓存区和接收进程用户空间地址的映射关系;
  • 发送方进程通过系统调用 copy_from_user() 将数据拷贝到内核中的内核缓存区,由于内核缓存区和接收进程的用户空间存在内存映射,因此也就相当于把数据发送到了接收进程的用户空间,这样便完成了一次进程间的通信。

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机制

相关文章

  • 浅析Binder

    Binder浅析 1. 背景知识 Binder在Android系统中是用来进行进程间通信的,所以在介绍Binder...

  • Android Binder通信原理文章汇总

    Android Binder浅析 — CameraService往ServiceManager添加服务 Andro...

  • Android Binder

    Binder Binder是什么? Binder是一种进程间通信机制为什么是Binder? Binder架构 Bi...

  • Binder驱动

    数据结构 binder_proc binder_thread binder_transaction binder_...

  • Android中Binder

    根据鸿洋的博文:Android aidl Binder框架浅析,用Google 的 Gliffy应用绘制。

  • Android Binder实现浅析-Binder驱动

    简介 Android是如何实现跨进程通信的,大家熟悉的Binder是什么,怎么设计的,进程间的数据如何发送接收的。...

  • Android IPC机制(1)——Binder

    Binder Binder是什么? Binner是一种进程间通讯机制为什么是Binder? Binder简单实现 ...

  • Android framework学习索引

    binder基础 启动流程要求对于binder机制有了解,要有binder的学习基础binder机制https:/...

  • 浅析Binder(一)——开篇

    Binder是Android系统提供的一种IPC(进程件通信)机制,由于Android基于Linux,所以除了Bi...

  • Binder原理讲解(一)

    binder框架 1、Binder到底是什么? binder是进程间通信机制。也是一个驱动。Binder.java...

网友评论

      本文标题:[Binder 一]Binder浅析

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