我在阅读 Mel Gorman 的《Understanding the Linux Virtual Memory Manager》一书时遇到了一个问题,即为什么进程的页表会因为访问 vmalloc()ed 区域而被更新。这是他用来解释此过程的图表的链接:
Vmalloc 由一个进程完成,另一个进程访问 vmalloc()ed 区域
在这种情况下更新的页表是主参考内核页表,而不是进程 A 的页表。我的问题是为什么进程 B 甚至访问进程 A 的 vmalloc() 区域。现实世界是什么一个进程将访问另一个进程分配的内存区域的场景?问题基本上归结为:如果进程 A 分配了虚拟内存,它将在某个时候开始写入由该虚拟内存支持的物理内存。为什么另一个进程要访问那块内存?