【Android系统】【博客收藏】Binder

本文详细探讨了传统IPC与Android Binder机制的区别。传统IPC由于用户空间与内核空间的隔离,需要两次复制数据进行通信,而Binder通过内存映射实现进程间共享,减少了复制次数,提高了效率。博主清晰地解释了这一过程,对于理解Android系统底层通信机制非常有帮助。
摘要由CSDN通过智能技术生成
看了好几本书上的binder章节,上来就是直接框架,贴实现代码和binder驱动代码,讲的云里雾里.

雨里雾里是指:

       1. 很多书并没说清楚传统IPC是怎么实现的,基本都是一句实现复杂带过。(啥玩意?)
       
       2. 没有讲明白,传统IPC为什么需要两次复制?binder为什么只要一次?的问题

       3.书上讲的有些东西,偏向代码讲解一样,翻译一遍代码,不适合基础知识阅读 
                                                        (为什么,是什么,怎么干,应该三步走)


我反正看书觉得书上讲的好难理解,看过好几本书,可能是自己智商不够...


偶然看到一篇介绍binder的博客,前因后果写的很清楚,觉得是写的最好的,值得一看

    

      https://blog.csdn.net/lzverygood/article/details/103078490

 

一些概括:
 
为什么传统IPC通信要复制两次,binder只要一次 ?

答:
    传统IPC:
            1.应用处于用户空间,内核处于内核空间。两个进程通信,需要内核空间作为中转。  
  
            2.驱动中实现了copy_from_user, copy_to_user系统调用,也就是先从一个进程的用户空间复制到内核空间,

            然后从内核空间复制到另一个进程的用户空间。

            3.所以是两次

    binder:
            binder的实现,书上说的是内存共享。底层实现是内存映射mmap()。
            
            也就是内核中两个进程共享一块内存。一块内存分别映射到两个用户空间,一个用户进程对内存的读写,

            就等同于对另一个用户进程的用户空间的读写。宏观上是直接一次的。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值