美文网首页
Binder - 概念简介

Binder - 概念简介

作者: w达不溜w | 来源:发表于2022-03-01 22:51 被阅读0次
    1、Binder是什么?
    • 进程间通信机制
    • 是一个驱动
    • Binder.java 实现了IBinder接口,具有跨进程的能力
    2、使用场景

    自己创建的:webview、音视频播放、大图浏览、推送
    系统服务:打电话、闹钟

    3、优点

    内存:每个app分配的内存是有限的,多进程相当于加内存
    风险隔离:crash不会影响主app进程

    4、Linux进程通信有哪些

    管道、信号量、socket、共享内存等
    Android为什么要增加Binder?

    Binder 共享内存 Socket
    性能 1次拷贝 无需拷贝 2次拷贝
    特点 基于C/S架构,易用性高 控制复杂,易用性查 基于C/S架构,通用接口,传输效率低,开销大
    安全性 为每个APP分配UID,同时支持实名和匿名,安全 依赖上层协议,访问接入点是开放的,不安全 依赖上层协议,访问接入点是开放的,不安全
    5、内存划分

    内存被操作系统划分为:用户空间和内核空间,用户空间是用户程序代码运行的地方,内核空间是内核代码运动的地方,为了安全,用户空间和内核空间是隔离的。


    binder内存划分.png
    6、MMAP与Binder数据传输

    内存映射:将一个虚拟内存区域与一个磁盘上的对象关联起来,这个过程称为内存映射(Memory Mapping)


    mmap.png

    1)Binder驱动创建一块接收缓存区
    2)根据需要映射的接收进程的信息,实现内核缓存区接受进程用户空间地址同时映射到一个共享缓存区
    3)发送进程通过系统调用copy_form_user(),发送数据到虚拟内存区域(需要拷贝1次)
    4)由于内核缓存区和接收进程用户存在映射关系,相当于也发送到了接收进程的用户空间,实现了跨进程通信

    相关文章

      网友评论

          本文标题:Binder - 概念简介

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