对于android而言,是跨进程传输的通道,是封装好的java类,可以直接继承和使用。
从组成、模型来讲,我认为是连接Server层、Client层、ServerManager层的纽带,也是驱动。
进程空间:用户空间(不可共享)和内核空间(可共享)。
linux本身用copy_from_user()与copy_to_user(),用俩次拷贝进行跨进程通讯。
copy_from_user():将A进程的用户空间的数据拷贝到内核空间。
copy_to_user():将内核空间的数据拷贝到B进程的用户空间。
以上需要拷贝2次,而Binder只需要拷贝1次。
service端在binder注册服务到serverManager,client端通过binder获取serverManager里的服务。
Binder.c :连接进程,调用mmap()方法,创建内核缓存区和接受数据缓存区。
ServiceManager.c:通过binder_loop()创建循环请求队列,获取数据和解析binder,关机才会退出循环。
1.ContentProvider,内部有个ContentProviderNavite与Binder通信
2.Aidl
上一篇:ES6特性总结