android 怎么实现不同用户对应不同的数据_Android Binder实现浅析-Binder驱动

简介Android是如何实现跨进程通信的,大家熟悉的Binder是什么,怎么设计的,进程间的数据如何发送接收的。本文将以及解析,并对Binder驱动实现、Native层实现、Java层实现三块做一个总结分析。Binder学习思路Binder与传统IPC的区别Binder驱动的内部设计、数据结构Binder驱动与应用程序进程(C/S)之间的通信过程Android应用程序通过Binder驱动进行通信的...
摘要由CSDN通过智能技术生成

简介

Android是如何实现跨进程通信的,大家熟悉的Binder是什么,怎么设计的,进程间的数据如何发送接收的。本文将以及解析,并对Binder驱动实现、Native层实现、Java层实现三块做一个总结分析。

Binder学习思路

  1. Binder与传统IPC的区别
  2. Binder驱动的内部设计、数据结构
  3. Binder驱动与应用程序进程(C/S)之间的通信过程
  4. Android应用程序通过Binder驱动进行通信的流程
  5. Android开发人员如何使用Binder通信(AIDL、Java层架构)

基础知识理解

  1. Unix内核和应用程序进程所使用的物理内存是分开的,内核使用1G的物理内存,其他应用程序有各自的3G物理内存(32位操作系统)
  2. 因为内核和应用程序的物理内存是分开的,所以两者之间传递数据需要进行数据拷贝
  3. 内存映射(mmap)可以将两个虚拟内存地址空间(不同进程)映射到同一物理内存段上。实现多进程(或者内核与进程)之间公用一块内存,减少数据拷贝次数
  4. Unix驱动程序是一个运行在内核态(使用内核对应的物理内存)的程序
  5. Binder也是一种IPC的实现方式,其与传统的Unix IPC有一定的差别(使用了mmap)

理解Binder驱动的存在

因为要实现跨进程通信,那么,数据是如何传输的,怎么组织的。两个进程之间是如何知道对方的标识(引用)的,这一系列问题,都由Binder驱动解决,每个进程需要为其他进程提供服务(API调用),都需要向Binder驱动注册,其他进程才能知道自己的数据传向哪里。这里大家先忽略ServiceManager的特殊身份。只讨论Binder驱动的觉得定位即可。

这样看来,其实Binder驱动就是一个多个进程之间的中枢神经,支撑起了Android中进程间通信,它内部的设计,与应用程序进程中的业务,不存在任何耦合关系,只负责实现进程间数据通信。可以用如下图来理解Binder驱动与应用程序进程之间的关系。

bf6d01578348e052a29a61eb470ffad1.png

当然,Android里的Binder架构应该还有ServiceManager这个系统服务。

ServiceManager的存在

ServiceManager下文简称SM,是一个Android操作系统提供的一个系统进程。那么为什么要单独提他呢,因为这个进程里,记录了所有Binder实体(提供服务的Binder实现对象)的信息。

也就是说,SM是用来给应用程序查找其他应用程序的数据中心与校验中心,保障进程间通信的安全新,合法性。

SM是系统服务&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值