我的云文档怎么没有了(我的云文档怎么找)
576
2022-05-30
文章目录
一、进程通信-正常情况 ( 两次拷贝 )
二、进程通信- mmap 内存映射 ( 一次拷贝 )
三、Binder 机制重要组件 ( Client 客户端 、Server 服务端、Service Manager、Binder 驱动 )
一、进程通信-正常情况 ( 两次拷贝 )
Binder 通信机制 依赖于 共享的 内核空间 ;
正常情况下 , 进行进程间的通信 , 需要进行如下操作 : 进行 2 2 2 次数据拷贝 , 用户空间 -> 内核空间 -> 用户空间 ;
进程 B 发送消息给进程 A , 先将数据 从
进程 A
的
用户空间 缓冲区
写到
内核空间 缓冲区
中 , 然后将数据从
内核空间 缓冲区
写到
进程 A
的
用户空间 缓冲区
中 ;
二、进程通信- mmap 内存映射 ( 一次拷贝 )
Binder 可以只进行
一次拷贝
, 就可以完成跨进程通信 , 该依次拷贝是基于
内存映射
完成的 ;
内存映射 就是 基于 Memory Map 函数 mmap 进行的 ;
参考零拷贝原理 【Netty】mmap 和 sendFile 零拷贝原理 博客 ;
在 进程A 内存中 , 没有在自己的 用户空间 内存中申请 通信的数据缓冲区 , 而是在 内核空间 中申请了一块 进程 A 的缓冲区 ,
三、Binder 机制重要组件 ( Client 客户端 、Server 服务端、Service Manager、Binder 驱动 )
Binder 机制是 C/S 架构的 , Client / Server , 客户端就是进程 , 服务器就是系统的服务 ;
Service Manager 运行在 用户空间 , 负责管理 Server 服务器的 注册服务 功能 ;
Service 服务 需要 先注册 , 客户端 才能获取该 Service 服务 ;
客户端 , 服务端 , Service Manger , 都可以通过 ioctl 调用 Binder 驱动 ;
下图是 Binder 机制中的 4 4 4 个重要组成部分 , Client 客户端 , Server 服务端 , Service Manager , Binder 驱动 ;
进程 A 与 进程 B 之间通信 , 先通过 ServiceManager 获取 Binder 驱动的代理 , 然后使用对应的服务 ;
AIDL ( Android Interface Definition Language ) 安卓接口定义语言 , 定义一些接口 , 让两个进程之间可以进行相互通信 ;
任务调度
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。