02.Binder系统—数据结构
创始人
2024-05-31 15:21:55
0
  1. handle是进程A对进程B提供的服务S(hello服务)的引用

B可能提供多个服务,每个服务的handle是不一样的

open("1.txt")的时候得到一个handle,就是引用

service_manager对应服务的handle值

test_server提供的服务

test_client对应服务的handle值

handle值

1

hello服务

2

handle值

2

goodbye服务

1

引用就是binder_ref,binder_ref当中有一个整数,调用驱动程序的时候会对比binder_ref,如果这个整数等于handle,就表示找到了这个引用。

  • 引用使用binder_ref表示
  • 服务使用 binder_node表示
  • 进程使用 binder_proc表示
  • 多线程使用 binder_thread表示
  1. binder_thread 、binder_proc、 binder_node、binder_ref之间的关系

  1. binder节点总结

  1. 数据传输过程

  1. 数据的复制过程

5.1 一般的IPC (比如socket)数据拷贝过程如下:

5.2 binder关键数据拷贝过程如下:

5.3 binder 数据拷贝的全貌(结构变量+数据)

使用ioctl读或写时一定会传入一个结构体binder_write_read类型的变量,而binder中关键内容的内存拷贝则会采用mmap的方式来实现。

数据的跨进程传递,只需要一次拷贝就可以完成的原理:当把同一块物理页面同时映射到进程空间和内核空间,这时在两者之间传递数据,只需要其中任意一方把数据拷贝到物理页面,另一方直接读取即可。

总结:结构变量拷贝两次,内存buf拷贝与映射各一次。

(出处https://blog.csdn.net/vviccc/article/details/90717764)

相关内容

热门资讯

协昌科技7月4日获融资买入53... 7月4日,协昌科技跌0.84%,成交额4221.69万元。两融数据显示,当日协昌科技获融资买入额53...
关于如今的美容整形,你怎样看待... 关于如今的美容整形,你怎样看待?举一个例子:我同事有一个妹妹,长得挺漂亮吧(素颜),已经有一个男朋友...
视声智能7月4日获融资买入14... 7月4日,视声智能跌3.33%,成交额3702.48万元。两融数据显示,当日视声智能获融资买入额14...
盛科通信7月4日获融资买入62... 7月4日,盛科通信涨0.78%,成交额1.13亿元。两融数据显示,当日盛科通信获融资买入额621.4...
开特股份7月4日获融资买入16... 7月4日,开特股份跌1.43%,成交额4946.08万元。两融数据显示,当日开特股份获融资买入额16...
爱科赛博7月4日获融资买入51... 7月4日,爱科赛博涨0.32%,成交额6615.44万元。两融数据显示,当日爱科赛博获融资买入额51...
骑士乳业7月4日获融资买入97... 7月4日,骑士乳业(维权)跌3.76%,成交额2.82亿元。两融数据显示,当日骑士乳业获融资买入额9...
中邮科技7月4日获融资买入12... 7月4日,中邮科技跌4.12%,成交额2.23亿元。两融数据显示,当日中邮科技获融资买入额1207....
纳科诺尔7月4日获融资买入23... 7月4日,纳科诺尔跌1.93%,成交额2.74亿元。两融数据显示,当日纳科诺尔获融资买入额2366....
坤博精工7月4日获融资买入37... 7月4日,坤博精工跌5.01%,成交额1.39亿元。两融数据显示,当日坤博精工获融资买入额375.5...