首页 > 编程知识 正文

java类加载机制面试题(binder跨进程)

时间:2023-05-03 22:55:19 阅读:77226 作者:968

文章目录一、进程通信-正常情况(两次复制)二、进程通信- mmap内存映射)三、Binder机制的关键组件)客户端、服务器服务端、服务管理器

一、进程通信-正常情况(两次复制) ) )。

Binder通信机制依赖于共享内核空间;

通常,要在进程之间进行通信,必须通过执行以下操作:进行22次数据复制: 用户空间-内核空间-用户空间;

进程b向进程a发送消息,首先将数据从进程a的用户空间缓冲器写入内核空间缓冲器,然后将数据从内核空间缓冲器写入进程a的用户空间缓冲器;

二、进程间通信- mmap内存映射(一次复制) Binder只需一次复制,即可完成基于内存映射完成的进程间通信;

内存映射基于内存映射函数mmap进行;

参考零拷贝原理【Netty】mmap和sendFile零拷贝原理博客

进程a的存储器中没有向自己的用户空间存储器申请通信的数据缓冲器,而是向内核空间申请了进程a的缓冲器。

三、Binder机制的关键组件(客户端、服务器服务端、服务管理器、Binder驱动) Binder机制是C/S体系结构,客户端Server

服务管理器在用户空间中运行,用于管理服务器服务的注册服务功能

服务服务必须注册,以便客户端可以使用该服务。

客户端、服务端和服务管理器可以从ioctl中调用Binder驱动程序

下图显示了Binder机制的4、4个重要组件、客户端、服务器服务端、服务管理器和Binder驱动程序。

进程a和b之间的通信首先从ServiceManager获取Binder驱动的代理,并使用相应的服务

安卓接口定义语言(aidl )安卓接口定义若干接口,以便两个进程之间相互通信;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。