3.9 VMA 应用场景:从匿名内存到 GPU BO mmap

3.7 从结构上解释了 VMA:它是进程虚拟地址空间里的区间对象。现在再从应用场景看,为什么同一个struct vm_area_struct能同时服务匿名内存、普通文件、共享内存、设备 MMIO 和 GPU BO。

关键原因是:VMA 只定义“这段 VA 的规则”,不强行规定 backing 必须是什么。

不同场景通过不同的vm_filevm_pgoffvm_flagsvm_opsvm_private_data,把同一套 VMA 抽象落到不同 backing 上。这里先给张应用场景图,在细说每一个应用。

1 匿名内存:没有 file 的 VMA

最常见的 VMA 是匿名内存,例如:

void*p=mmap