android Binder 学习

来源:互联网 发布:js继承面试题详解 编辑:程序博客网 时间:2024/06/08 19:00

一、面向过程调用与面向对象调用的区别

        1、面向过程调用同一时刻只能服务一个客户,而且该过程必须具有锁功能,如果有其他客户想要访问,则需要等待前一客户完成操作。

        2、面向对象则能同时服务多个客户,类似把过程调用进行了多次复制供多个客户使用。

二、为什么需要Binder驱动

       1、为了进行进程间通讯,传统的做法是socket、pipe(匿名管道)、fifo(命名管道)、semaphore(信号量)、消息队列等,但是它们的性能都很差,它们的主要原理是

            A进程写数据到某公共区域C后,通知B数据写好了,然后B进入C取数据;这一流程存在两个步骤:1、A复制数据到C 2、C复制数据到B。并且C只能是内核空间,因为只有在内核空间,才能看得见A和B的内存区域。传统的IPC方式其实都是内核驱动。

       2、binder是特制用于android进程间通讯的IPC方式。

             1、具有面向对象远程调用的功能

             2、为了提高数据传输效率,Binder为每个进程创建了一块缓存区,A进程通过Binder驱动直接将数据复制到B进程的缓存区,这样就比传统的IPC方式少了一步。

0 0
原创粉丝点击