news 2026/10/30 1:39:01

Binder 简述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Binder 简述

Binder

  • Binder使用Client-Server(c/s架构)通信方式。
  • Binder框架定义了四个角色:Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间。ServiceManager,负责把Binder Server注册到一个容器中。
  • 通过代理对象通信:Binder代理对象 Binder引用对象 Binder实体对象 Binder本地对象
  • AIDL(Android Interface Definition Language Android接口定义语言),Android提供的一种Binder实现。

线程池

  • 主线程是由 Zygote母体生成的;
  • 线程池:首次创建第一个Binder线程A,然后监听BR_SPAWN_LOOPER事件,收到后创建第二个Binder线程B,线程B继续监听BR_SPAWN_LOOPER事件,收到后创建第三个Binder线程C。总共创建3个Bindr线程,这是Binder协议决定。根据系统处理器数目以及应用程序的负载强度,线程池的线程数目可以动态调整,这是Binder优化需要考虑的。

Service Manager

  • 是整个Binder通信机制的大管家,是Android进程间通信机制Binder的守护进程,管理Binder机制
  • Client端和Server端通信时都需要先获取Service Manager接口,才能开始通信服务。
  • 所有系统服务都需要在ServiceManager类中进行注册
  • 服务注册、获取和访问过程

通信

  • BpBinder发送端,根据handler,在当前binder_proc中,找到相应的binder_ref
  • 由binder_ref再找到目标binder_node实体
  • 由目标binder_node再找到目标进程binder_proc

销毁

  • 在应用进程创建的过程中有一个attachApplicationLocked方法的过程中便会创建死亡通知。
  • 当binder服务端挂了之后,便会通过binder的DeathRecipient来通知AMS进行相应的清理收尾工作。当该进程会杀,则会回调到binderDied()方法。
  • Crash进程中拥有一个Binder服务端ApplicationThread,而应用进程在创建过程调用attachApplicationLocked(),从而attach到system_server进程,在system_server进程内有一个ApplicationThreadProxy,这是相对应的Binder客户端
  • 当Binder服务端ApplicationThread所在进程(即Crash进程)挂掉后,则Binder客户端能收到相应的死亡通知,从而进入binderDied流程。
  • 进程异常退出的时候,内核保证会释放未正常关闭的它打开的/dev/binder文件,即调用与/dev/binder文件所关联的release回调函数,进而执行清理工作
  • BBinder死亡通知机制
    • Client进程从Binder驱动获得一个BpBinder
    • Client进程向Binder驱动注册一个死亡通知,该死亡通知与上述BpBinder所引用的BBinder相关联
    • Binder驱动监控到BBinder所在进程异常退出的时候,检查该BBinder是否注册有死亡通知
    • Binder驱动向注册的死亡通知所关联的BpBinder所运行在的Client进程发送通知
    • Client进程执行相应的清理工作
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 1:37:20

24G显存部署DeepSeek-R1:Ollama安装、量化选型与知识库排错

简介:《deepseek应用手册》是一份面向深度学习、自然语言处理与API集成学习者的实操型文档,适合希望系统掌握DeepSeek多模型协作、私有知识库搭建及参数调优的初中级用户。压缩包内仅含1个docx文件,体积约207KB,便于轻量下载与随时…

作者头像 李华
网站建设 2026/10/30 1:37:14

Hadoop分布式计算下的朴素贝叶斯文本分类:从MapReduce原理到实现与调优

简介:这是基于Hadoop的朴素贝叶斯文本分类项目,利用MapReduce实现训练与评估,适用于Hadoop课程设计、毕业设计或文本分类入门实践。项目包含词频统计、文档计数、模型构建与测试集分类等核心步骤,并输出精确率、召回率和F1评估结果…

作者头像 李华
网站建设 2026/10/30 1:32:47

高级技巧:Hy-MT2-1.8B-1.25Bit-GGUF支持的6种翻译指令模式详解

高级技巧:Hy-MT2-1.8B-1.25Bit-GGUF支持的6种翻译指令模式详解 【免费下载链接】Hy-MT2-1.8B-1.25Bit-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/tencent/Hy-MT2-1.8B-1.25Bit-GGUF Hy-MT2-1.8B-1.25Bit-GGUF是一款高效的AI翻译模型,专…

作者头像 李华