美文网首页
binder 进程间通信 学习笔记

binder 进程间通信 学习笔记

作者: 帅不过王力宏 | 来源:发表于2020-09-07 21:25 被阅读0次

为什么要多进程

  • 获得更多的内存 每个进程使用的内存大小通过 getprop dalivk.vm.heapsize可以 得到
  • 风险隔离,每个进程不会影响别的进程

进程间通信 IPC 是为了什么

  • A调用B的方法
  • A获取B的数据
  • A传递数据给B之后再获取数据

linux 进程通信

  • 管道
  • socket
  • 共享内存
  • 信号量
  • 等等

binder 有什么优势(言下之义就是 和另外的进程间通信有什么优势)

  • 性能:
    -- binder:数据只拷贝一次
    -- 共享内存:数据无需拷贝
    -- socket: 拷贝两次
  • 特点:
    -- binder: 基于c/s 架构
    -- 共享内存:同步处理进程数据,比较麻烦
    -- socket: 通用接口,传输效率低,开销比较大
  • 安全性:
    -- binder:实名,匿名, 每个应用分配一个uid
    -- 共享内存:依赖与上层协议,访问点开放不安全
    -- 依赖与上层协议,访问接入点开放不安全

linux 基础 内核空间,用户空间。

内核态与用户态:

(1)当一个任务(进程)执行系统调用而陷入内核代码中执行时,称进程处于内核运行态(内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。

(2)当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。

binder 一次拷贝, 共享内存 无需拷贝 why

binder 一次拷贝
  • binder 数据发送方 准备好数据 内核 通过 copy_from_user() copy 到存放到一块 共享物理内存 内核也mmap到这一块物理内存
  • 数据接收方, 通过mmap 将这块内存映射起来。memory mapping
  • 用户空间 可以操作文件吗? 不可以,用户空间只能操作虚拟内存
  • mmap 可以将一块虚拟内存空间直接映射到一个 磁盘文件或者指定物理内存,当在用户空间修改文件内容时,就相当与直接操作物理内存或者文件。
  • mmap 在驱动中怎么实现的?后续学习
共享内存 无需拷贝
  • 数据接受方,内核空间,数据接受方 全部mmap 到同一块区域


    binder 整体 示意图.jpg

binder驱动 如何启动

  • linux 中 一切皆文件
  • binder 驱动 也是一个文件 可以被mmap

相关文章

  • binder 进程间通信 学习笔记

    为什么要多进程 获得更多的内存 每个进程使用的内存大小通过 getprop dalivk.vm.heapsize可...

  • Binder机制

    进程间通信方式 Android Binder框架图 Android系统框架 IPC 进程通信原理 Binder原理...

  • ServiceManager 的启动过程

    ServiceManager 是 Binder 进程间通信的核心组件之一,扮演者 Binder 进程间通信机制的上...

  • Android Binder机制

    Binder简介 binder使用内存映射(mmap)来实现进程间传递数据,比较传统的进程间通信. binder只...

  • Android 高级之跨进程通信(IPC)

    先看一下 Android 中跨进程通信的方式: Binder Binder 是 Android 系统进程间通信(I...

  • Android--IPC

    Binder IPC (Inter-Process Communication) 进程间通信,支持应用间通信、应用...

  • Android进程间通信之bindService

    在Android中binder是一种非常重要的进程间通信方式。基于binder实现的进程间通信形态非常多,其中An...

  • Binder机制总结

    一、Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的...

  • Android

    ContentProvider 作用 进程间数据共享 即跨进程通信 原理 Binder进程间通信结合匿名共享内存(...

  • Binder进程间通信-JAVA层

    进程间通信基本原理 进程间通信原理 Binder是什么? IPC(Inter-Process Communicat...

网友评论

      本文标题:binder 进程间通信 学习笔记

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