Android Binder
SZ laoluo
大数据处理,Spring组件,分布式架构,微服务
展开
-
android Binder设计与实现二
4 Binder 协议 Binder协议基本格式是(命令+数据),使用ioctl(fd, cmd, arg)函数实现交互。命令由参数cmd承载,数据由参数arg承载,随cmd不同而不同。下表列举了所有命令及其所对应的数据: 表 2 Binder通信命令字 命令 含义 arg BINDER_WRITE_READ 该命令向Bin原创 2012-02-07 14:02:56 · 592 阅读 · 0 评论 -
android Binder设计与实现七
8 数据包接收队列与(线程)等待队列管理 通常数据传输的接收端有两个队列:数据包接收队列和(线程)等待队列,用以缓解供需矛盾。当超市里的进货(数据包)太多,货物会堆积在仓库里;购物的人(线程)太多,会排队等待在收银台,道理是一样的。在驱动中,每个进程有一个全局的接收队列,也叫to-do队列,存放不是发往特定线程的数据包;相应地有一个全局等待队列,所有等待从全局接收队列里收数据的线程在该队列里原创 2012-02-07 14:10:45 · 548 阅读 · 0 评论 -
android Binder设计与实现一
摘要 Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统 IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和 B原创 2012-02-07 14:02:07 · 681 阅读 · 0 评论 -
android Binder设计与实现五
5.3 Binder 在驱动中的表述 驱动是Binder通信的核心,系统中所有的Binder实体以及每个实体在各个进程中的引用都登记在驱动中;驱动需要记录Binder引用 ->实体之间多对一的关系;为引用找到对应的实体;在某个进程中为实体创建或查找到对应的引用;记录Binder的归属地(位于哪个进程中);通过 管理Binder的强/弱引用创建/销毁Binder实体等等。 驱动里的Binder是原创 2012-02-07 14:08:22 · 536 阅读 · 0 评论 -
android Binder设计与实现四
5 Binder 的表述 考察一次Binder通信的全过程会发现,Binder存在于系统以下几个部分中: · 应用程序进程:又分为Server进程和Client进程 · Binder驱动:Server和Client有不同表述形式 · 传输数据:由于Binder可以跨进程传递,需要在传输数据中予以表述 在系统不同部分,Binder实现的功能不同,表现形式也不一样的。接下来逐一探讨Binde原创 2012-02-07 14:07:12 · 637 阅读 · 0 评论 -
android Binder设计与实现六
6 Binder 内存映射和接收缓存区管理 暂且撇开Binder,考虑一下传统的IPC方式中,数据是怎样从发送端到达接收端的呢?通常的做法是,发送方将准备好的数据存放在缓存区中,调用 API通过系统调用进入内核中。内核服务程序在内核空间分配内存,将数据从发送方缓存区复制到内核缓存区中。接收方读数据时也要提供一块缓存区,内核将数据从内核缓存区拷贝到接收方提供的缓存区中并唤醒接收线程,完成一次数据发原创 2012-02-07 14:09:07 · 556 阅读 · 0 评论 -
android Binder设计与实现三
4.3 struct binder_transaction_data :收发数据包结构 该结构是Binder接收/发送数据包的标准格式,每个成员定义如下: 表 5 Binder收发数据包结构:binder_transaction_data 成员 含义 union { size_t handle; void *ptr; } target;原创 2012-02-07 14:05:58 · 704 阅读 · 0 评论