深入理解Linux RPC - 从Linux RPC到Android Binder
Posted 宋宝华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Linux RPC - 从Linux RPC到Android Binder相关的知识,希望对你有一定的参考价值。
课程简介
随着项目复杂度的增加,现实中的很多项目都会涉及到远程过程调用(RPC)的问题,这些远程过程也许是同一设备上的不同进程,也许分属于物理上分割的不同设备。如何灵活高效地实现这些远程调用,是很多项目都会面临的挑战。
本课程首先通过对远程过程调用一般性原理的解释和基本框架的介绍,使大家理解远程过程调用的整体结构和主要流程。
接下来本课程会对RPC发展过程中的部分重要方案进行介绍,使大家了解这些不同方案的设计思想、主要特点和适用范围,在不同的项目中能够根据需求进行合理抉择。
最后,我们会将android Binder作为具体案例进行解剖,对其整体架构、运作机制等进行全面、深入、详尽的学习,使大家深入了解其实现细节,理解Binder的设计特点,掌握Binder的运作原理。在牢固掌握其实现的基础上,可以对类似技术做到触类旁通,快速掌握。
课程共4节课,全长约4小时,课程已全部上线,无需等候。
上课形式:
视频课程(可无限次数回看)
课后实战,练习和解答(在自己的电脑上进行实际操作)
加入课程讨论答疑群。
老师简介
曾昭毅:武汉理工大学计算机应用技术硕士毕业
曾在群硕软件、深圳仙苗科技有限公司担任软件开发经理、软件研发总监等职,是在实战中成长起来的从单板嵌入式到大型企业级应用系统集成的全栈式工程师。
具有丰富的Arm体系Linux及Android系统移植经验,对基于I2C、SPI、USB、AC97、I2S、SDIO/EMMC、UART等总线的各种设备如LCD、触摸屏、3G/4G模块、Wifi、GPS、摄像头、HDMI、CODEC等驱动移植有深厚的掌握。
远程过程调用
什么是RPC
什么是IPC
本课程RPC的定义——跨进程过程调用
Linux RPC实例
RPC整体架构
RPC各组成部分功能及运作原理
IDL/Interface
Client/Server
Proxy/Stub
Server register
其他
部分远程过程调用方案
RPC模式
支持语言
主要结构
关键特性
ONC RPC
Corba
EJB
Web service
Dubbo
Json-RPC
IPC模式
Android Binder
D-Bus
各方案主要特性对比
实例分析——Android Binder详解
Binder主要特点
整体结构
Native层(C++/C)
Service注册
隐含ServiceManager接口获取过程
ServiceManager启动流程
App/Zygote启动时Binder相关初始化
ServiceManager类结构
掌控全局的IInterface.h
关键类结构
系统启动准备工作
Binder调用流程
Native层(C++/C)
Service注册流程
Service接口获取流程
Service调用过程
Binder调用流程(续前)
Binder线程管理
Binder一次数据拷贝机制
Java层
关键类结构
Java service获取流程 - ServiceManager
Service注册流程
Java service获取流程 - ActivityManager
AIDL
实验、练习和解答
用Linux RPC实现加法和greet函数,greet函数接收一个字符串格式的名字如“Mike”,返回字符串“Hello Mike”。(提示:Linux RPC只支持单参数,传递多参数可利用struct实现)
a. 用D-Bus实现加法和greet函数;b. 参照Linux RPC格式,根据自己对RPC机制的理解,手动实现对2.a.中所完成接口的RPC封装。
利用WebService实现上述加法和greet函数。
分析Binder在进程间通过一次拷贝机制传递数据时,发送方是否需要将待发送数据放入自己与binder驱动进行mmap的内存区域?放与不放有什么影响?
创建一个Android应用,利用AIDL生成对应的Java类,画出生成类的类图。
报名方法:
详情也可扫描如下二维码添加客服咨询:
以上是关于深入理解Linux RPC - 从Linux RPC到Android Binder的主要内容,如果未能解决你的问题,请参考以下文章