泰晓科技 -- 聚焦嵌入式 Linux - 追本溯源,见微知著!
网站地址:http://tinylab.org
微信公众号关注我们新浪微博


扫一扫

关注 @泰晓科技
原创服务 | 实验云台 | 共享书籍 | 开放源码
请稍侯

一张图看明白手机设备内存管理

Chen Jie 创作于 2015/07/15

by Chen Jie of TinyLab.org 2015/7/12

一张源自『Memory Management in Tizen (pdf)』的图,介绍了地道的手机设备内存管理:

image

相机、codec、radio,由内核 V4L2 子系统处理,使用 VB2 (Video Buffer 2) 接口来管理设备内存。GPU 由 DRM 子系统处理,使用 GEM (the Graphics Execution Manager) 接口来管理设备内存。

跨子系统的设备内存共享,例如显示相机的一帧,从 V4L2 经 相机 App 到 DRM,借助 DMA-Buf(DMA buffer sharing) 机制。

当设备内存可以共享时,同步问题也随之而来。由此对 DMA-Buf 进一步引入了 DMA Fence

对于手机而言,并无专用内存,即所有设备内存均从系统内存分配。因此落实上述设备内存,通常使用 CMA(Contiguous Memory Allocator),@teawater 同学对 CMA 贡献了诸多改进,可参阅『Buddy 和 CMA 简介,以及在 Android 中实际使用 CMA 遇到问题的改进』。

CMA 用来分配连续物理内存,因此还有较大的限制。如果硬件足够高大上,即支持 IOMMU 机制,就可以摆脱这种限制。就像借助 MMU 单元,CPU 可以虚拟分页访问物理内存一样;借助 IOMMU 单元,IO 设备达到同样的目的。


Read More: