Linux 是否在 mmap() 之后立即为进程分配内存?
Does Linux immediately allocate memory for process after mmap()?
我正在阅读 mmap()
的源代码,我发现 Linux 内核会将文件映射到 vma
结构中。 vma
只代表内存区域。那么,OS是否会立即为mmap()
之后的进程分配物理内存?
不,Linux可以推迟物理内存的分配,由mmap
请求,直到该内存被访问。
当应用程序访问未映射的内存时,会触发页面错误异常;当处理这个异常时,Linux 可能映射访问的内存,允许应用程序继续。
我正在阅读 mmap()
的源代码,我发现 Linux 内核会将文件映射到 vma
结构中。 vma
只代表内存区域。那么,OS是否会立即为mmap()
之后的进程分配物理内存?
不,Linux可以推迟物理内存的分配,由mmap
请求,直到该内存被访问。
当应用程序访问未映射的内存时,会触发页面错误异常;当处理这个异常时,Linux 可能映射访问的内存,允许应用程序继续。