【发布时间】:2019-01-15 21:49:47
【问题描述】:
我正在阅读mmap()的源代码,发现Linux内核会将文件映射到vma结构中。 vma 只代表内存区域。那么,操作系统会在mmap()之后立即为进程分配物理内存吗?
【问题讨论】:
标签: linux-kernel mmap
我正在阅读mmap()的源代码,发现Linux内核会将文件映射到vma结构中。 vma 只代表内存区域。那么,操作系统会在mmap()之后立即为进程分配物理内存吗?
【问题讨论】:
标签: linux-kernel mmap
不,Linux可能会推迟mmap 请求的物理内存分配,直到该内存将被访问。
当应用程序访问未映射的内存时,page fault异常被触发;在处理此异常时,Linux 可能会映射访问的内存,从而允许应用程序继续运行。
【讨论】:
vma 中列出可以在页面错误时映射未映射的内存。但是该页面错误是由对任何未映射的内存的访问引起的,无论是否在vma 中。这就是我的帖子所讨论的。