一,ION简介
ION(Interprocess Communication Over Non-Contiguous Memory)即“跨进程非连续内存通信”。是Android系统中负责内存管理的关键子系统,由 Google 在 Android 4.0 ICS 中引入,旨在解决当时 Android 设备中存在的多样化内存管理机制所带来的问题,也就是用归一化的思想来解决不同 Android 设备上内存管理接口分散的问题。
在系统级芯片 (SoC) 硬件上,通常有许多不同的设备具有直接内存访问 (DMA) 功能。然而,这些设备可能具有不同的能力,并且可以在不同的约束下查看和访问内存。例如,一些设备可能处理散列-聚集列表,而其他设备可能只能访问内存中物理上连续的页面。一些设备可能可以访问所有内存,而其他设备可能只能访问较小部分的内存。最后,一些设备可能位于I/O内存管理单元 (IOMMU) 后面,这可能需要配置以使设备访问内存中的特定页面。
如果你有一个缓冲区想要与设备共享,但缓冲区没有分配在设备可以访问的内存中,就必须使用中转缓冲区将该内存的内容复制到其他设备可以访问的位置。这可能非常昂贵并且严重影响性能。因此,能够在所有使用缓冲区的设备可访问的位置分配缓冲区非常重要。
目前在使用 NVIDIA Tegra 的 Android 设备上,有 "NVMAP";在使用 TI OMAP 的 Android 设备上,有 &#