打印 | Print.wpf_wrappertitle: 一张图看明白手机设备内存管理%s/!\[image\](/&\/wp-content\/uploads\/2015\/07\//by Chen Jie ofTinyLab.org2015/7/12一张源自『Memory Management in Tizen (pdf)』的图,介绍了地道的手机设备内存管理:相机、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 设备达到同样的目的。~原创有您,更持久!期待您的支持~00打印 | Print.wpf_wrapper