Android跨进程通信,RPC,IPC

Android跨进程通信,RPC,IPC

RPC(基于IPC实现)

Android binder就是一个RPC框架,在已经启动的一个进程a中,访问到进程b中的方法或者函数。

IPC

跨进程数据传输,在b进程中,a进程可以访问到b进程中的数据,

1.IPC原理

在linux系统中每个进程都有自己的虚拟内存地址空间,分用户空间和内核空间,不同进程间的用户空间是不能互相访问的,但是不同进程的内核空间可以映射到物理内存地址上,可以共享的。

假设b进程中的内核空间有一个数据,那么它可以映射到我们的物理内存地址上,才有用,因为linux里面的是虚拟地址,a进程可以通过内存映射找到b进程存数据的内存地址。

那么用户空间也可以通过内存拷贝到内核空间通过copy_from_user拷贝,在a进程的内核空间也就可以查找到b的内核空间通过用户空间传递的内存里面的数据了,但是a进程的用户空间还拿不到这个数据,要调用copy_to_user拷贝到用户空间才行。

拷贝两次如何优化?

内存映射,在a进程中的用户空间和内核空间找一个内存地址,把这个内存地址同时映射为同一块物理内存,调用mmap函数,系统调用函数,进程b中,内核空间和a的内核空间映射同一个内存地址,那么a进程的用户空间就可以通过一次copy_from_user拷贝就拿到了b进程内存的数据,

2.RPC原理

程内存的数据,

2.RPC原理

数据打包和解析的工作,客户端想要访问在服务端的方法,那么就要把数据集合起来,通过binder驱动,ipc机制传递给b进程,服务端拿到数据进行解析,如何再去调用对应的服务端的函数,handle是一个句柄,指定了数据要发送给哪个进程,code代表一个int型,代表要调用的服务端的哪个函数,传递函数参数,binder协议–告诉驱动,帮客户端把这些数据发送给服务端处理,,,

相关推荐

  1. Android进程通信,RPC,IPC

    2023-12-07 01:08:02       49 阅读
  2. Android进程通信之广播

    2023-12-07 01:08:02       38 阅读
  3. android进程通讯方式

    2023-12-07 01:08:02       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 01:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 01:08:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 01:08:02       82 阅读
  4. Python语言-面向对象

    2023-12-07 01:08:02       91 阅读

热门阅读

  1. EOS的eosjs的演进

    2023-12-07 01:08:02       65 阅读
  2. 谨慎使用android.view.SurfaceView.setVisibility方法

    2023-12-07 01:08:02       58 阅读
  3. localForage使用 IndexedDB / WebSQL存储

    2023-12-07 01:08:02       53 阅读
  4. 【MySQL工具】my2sql-快速解析binlog

    2023-12-07 01:08:02       41 阅读
  5. MySQL Binlog Digger 4.31

    2023-12-07 01:08:02       61 阅读
  6. C++线段求交:计算两条线段的交点

    2023-12-07 01:08:02       46 阅读
  7. 【C/C++指针】指针*与引用&的区别

    2023-12-07 01:08:02       60 阅读
  8. 【微服务】分布式限流如何实现

    2023-12-07 01:08:02       65 阅读
  9. Windows 安装 flash-attention 和 bitsandbytes

    2023-12-07 01:08:02       51 阅读
  10. 编写bat脚本执行msyql建库sql

    2023-12-07 01:08:02       52 阅读
  11. 在windows下编译libiconv库

    2023-12-07 01:08:02       59 阅读
  12. vue2 组件内路由守卫使用

    2023-12-07 01:08:02       57 阅读