[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
一张图看明白手机设备内存管理
by Chen Jie of TinyLab.org 2015/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 设备达到同样的目的。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |