一,ION简介
ION(Interprocess Communication Over Non-Contiguous Memory)即“跨进程非连续内存通信”。是Android系统中负责内存管理的关键子系统,由 Google 在 Android 4.0 ICS 中引入,旨在解决当时 Android 设备中存在的多样化内存管理机制所带来的问题,也就是用归一化的思想来解决不同 Android 设备上内存管理接口分散的问题。
举个例子,在使用 NVIDIA Tegra 的 Android 设备上,有 "NVMAP";在使用 TI OMAP 的 Android 设备上,有 "CMEM";而在使用 Qualcomm MSM 的 Android 设备上,则有 "PMEM"。这三家 SoC 供应商都在向 ION 过渡。
前面我们讨论过dam_buf,那么我们知道dma_buf 是一个通用的缓冲区共享机制,允许不同设备驱动程序共享物理内存缓冲区,而无需复制数据。它通过文件描述符(file descriptor, FD)来引用缓冲区,支持跨设备和跨进程的内存共享。
而ION内存管理器使用 dma_buf 机制来实现其内存共享功能。具体来说,ION 分配的内存可以通过 dma_buf 导出,从而被其他驱动程序和用户空间进程访问。
二,ION与DMABUF对比
ION 和 DMABUF 共享一些共同的概念。dma_buf 概念类似于 ion_buffer,而 dma_buf_attachment 的作用类似于 ion_handle。ION 和 DMABUF 都使用匿名文件描述符作为可以传递的对象,以提供对共享缓冲区的引用计数访问。另一方面,ION 侧重于从预设内存池中分配和释放内存,以一种
标签:dma,ION,8.19,内存,Linux,Android,buf,共享 From: https://blog.csdn.net/huangyabin001/article/details/140479572