安卓专有的通信子系统-Binder IPC

一、Binder 是什么

它是一种IPC 通信机制,它比Linux一般的通信方式更加简洁,消耗内存资源更小。实质是一种架构,这种架构可以提供服务器端服务接口,Binder 驱动,客户端服务代理接口,以及一个守护进程Service Manager.提供主要的功能如下:

  • 驱动程序来推进进程间的通信
  • 使用共享内存提高性能
  • 为进程请求分配每个进程的线程池
  • 针对系统中的对象引入了引用计数和跨进程对象引用映射
  • 进程间同步调用

二、Binder 通信原理

采用C/S 模式,也就是Client- Server ,每个需要Binder 通信的进程都必须创建一个Binder接口

Binder 驱动:是一个miscdevice的驱动,主设备号为10,其设备节点dev/binder ,在驱动实现过程中,主要是通过binder_ioctl 函数与用户空间的进程交换数据。负责为上层客户端提供各种操作接口

Service Manager: 负责管理系统服务,监听并相应客户端的请求

Client:一般指的是安卓系统上面的应用程序,他可以请求Server 中的服务

三、Binder 使用实例

客户端发送请求到binder驱动代理对象发送用户请求到服务器进程,服务器进程处理用户请求,并通过Binder 驱动代理返回处理结果到客户端服务器代理,客户接收到服务器返回的结果。

相关推荐
灿飞屋22 分钟前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫1 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine3 小时前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m3 小时前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android
疯华整猫7 小时前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Carson带你学Android8 小时前
AI时代,你的 App 会被 Agent 这三种方式调用
android·ai编程
恋猫de小郭10 小时前
Flutter 下 AOT 一个你怎么都想不出来的 Bug ,JIT 正常的计算,在 AOT 居然算错了
android·前端·flutter
好的佩奇1 天前
Dart 之扩展方法
android·flutter·dart
三少爷的鞋1 天前
换个思路理解:非阻塞挂起
android
好的佩奇1 天前
蓝牙之经典蓝牙
android·flutter·蓝牙