Linux 是否在 mmap() 之后立即为进程分配内存?

Does Linux immediately allocate memory for process after mmap()?

我正在阅读 mmap() 的源代码,我发现 Linux 内核会将文件映射到 vma 结构中。 vma只代表内存区域。那么,OS是否会立即为mmap()之后的进程分配物理内存?

不,Linux可以推迟物理内存的分配,由mmap请求,直到该内存被访问。

当应用程序访问未映射的内存时,会触发页面错误异常;当处理这个异常时,Linux 可能映射访问的内存,允许应用程序继续。