当前位置: 首页 > article >正文

Android跨进程通信,RPC,IPC

文章目录

  • Android跨进程通信,RPC,IPC
    • 1.IPC原理
    • 2.RPC原理
    • 2.RPC原理

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协议–告诉驱动,帮客户端把这些数据发送给服务端处理,,,


http://www.kler.cn/a/155881.html

相关文章:

  • 学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
  • 基于碎纸片的拼接复原算法及MATLAB实现
  • linux c/c++最高效的计时方法
  • DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能
  • 论文阅读《BEVFormer v2》
  • Flutter Getx状态管理
  • DBS note7 (end):DB Design
  • 根文件系统构建-对busybox进行配置
  • java中如何将mysql里面的数据取出来然后通过stream流的方式进行数据处理代码实例?
  • 论文阅读——Loss odyssey in medical image segmentation
  • 1.1、Autosar_CP软件集群设计与集成指南说明
  • CentOS7搭建部署NTP服务器
  • 外观模式 rust和java的实现
  • 长度最小的子数组(Java详解)
  • PCL 点云加权均值收缩
  • 【深度学习】神经网络训练过程中不收敛或者训练失败的原因
  • MDETR 论文翻译及理解
  • 搭建 ebpf 开发测试环境
  • 行首行尾的处理
  • 笔记二十二、使用路由state进行传递参数
  • JavaEE 多线程
  • C语言面试之数组指针上篇
  • JS前端逆向
  • 设计模式之原型模式(2)--深拷贝的实现图文讲解
  • llama.cpp部署通义千问Qwen-14B
  • Hdoop学习笔记(HDP)-Part.01 关于HDP