《深入理解Android内核设计思想》第6章
来源:互联网 发布:科瑞明软件 编辑:程序博客网 时间:2024/05/18 11:39
总结:
同一个程序中的两个函数之间能直接调用的根本原因是处于相同的内存空间(同一个内存空间)。
同一进程间的对象传递都是通过引用来做的,因而本质上是传递了一个内存空间。
Binder节点并不对应真实的硬件设备。binder驱动运行于内核态。提供open(),ioctl(),mmap()等常用的文件操作。binder注册成misc device驱动。
Linux中的字符设备通常要经过alloc_chrdev_region(),cdev_init()等一系列操作才能在内核中注册自己。 而misc类型驱动则相对简单。 只需要调用misc_register()就可以解决。
mmap()可以把设备指定的内存块直接映射到应用程序的内存空间中。
对于应用程序而言,通过mmap()返回值得到一个内存地址(虚拟地址)这个地址通过虚拟内存转换后最终将指向物理内存的某个位置。对于binder而言,他也有一个指针(binder_proc->buffer)指向某个虚拟内存地址,而经过虚拟内存转换后,它和应用程序中指向的物理内存处于同一个位置。这时binder和应用程序就拥有了若干共用的物理内存块。另一个程序和binder拥有共同内存,这样,就做到A,B两进程 共享同一块内存。
binder_ioctl实现了应用进程与binder驱动之间的命令交换,承载了binder驱动中的大部分业务。
如果要访问SM(binder server)的服务,流程是:打开binder设备,执行mmap,通过binder驱动向SM发送请求。获得结果。
未完待续.....
0 0
- 《深入理解Android内核设计思想》第6章
- 《深入理解Android内核设计思想》
- 深入理解Android内核设计思想
- 《深入理解Android内核设计思想》第五章
- 深入理解Android内核设计思想——读书笔记
- 《深入理解Android内核设计思想》读书有感
- 《深入理解Android内核设计思想》学习笔记
- 读后感--第二章android源码下载及编译--深入理解android内核设计思想
- 《深入理解Android内核设计思想》学习笔记:第五章 Android进程、线程管理
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
- android学习的几本书:深入理解Android内核设计思想
- <深入理解Android内核设计思想>读书笔记:Looper,Handler,Runnable,MessageQueue,ActivityThread
- 本书版权输出到台湾地区,《深入理解Android内核设计思想》诚挚感谢大家一直以来的支持!
- 夯实java基础,深入理解Android设计思想
- 《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~
- 深入理解EventBus的设计思想
- 深入理解Android卷III 第6章 深入理解控件系统 (节选)
- 深入理解Android卷二 第6章 深入理解ActivityManagerService
- linux 添加内核模块和应用程序
- 第一章 游戏之乐 中国象棋将帅问题
- 【Javascript基础】Javascript的简介
- IO_STACK_LOCATION与IRP的一点笔记
- 100道动态规划——14 UVA 1412 Fund Management 从刘汝佳dalao的代码里学到了很多。。。。
- 《深入理解Android内核设计思想》第6章
- Sql Server 将截断字符串或二进制数据
- 计算机组成原理(1)实验2
- java图形用户界面基础
- Leetcode453. Minimum Moves to Equal Array Elements
- Maven项目中的pom.xml
- (配置超过64K方法的应用程序)com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- 【三】设计模式——代理模式(Proxy Pattern)
- HDU 1533 Going Home