【问题标题】:Does Linux immediately allocate memory for process after mmap()?Linux 是否在 mmap() 之后立即为进程分配内存?
【发布时间】:2019-01-15 21:49:47
【问题描述】:

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

【问题讨论】:

    标签: linux-kernel mmap


    【解决方案1】:

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

    当应用程序访问未映射的内存时,page fault异常被触发;在处理此异常时,Linux 可能会映射访问的内存,从而允许应用程序继续运行。

    【讨论】:

    • 上面所说的“未映射内存”应该是在vma中分配的区域,而不是在页表中映射的。 :-)
    • 是的,在vma 中列出可以在页面错误时映射未映射的内存。但是该页面错误是由对任何未映射的内存的访问引起的,无论是否在vma 中。这就是我的帖子所讨论的。
    猜你喜欢
    • 2023-04-08
    • 2013-11-07
    • 2018-09-07
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 2016-06-03
    • 2013-07-14
    相关资源
    最近更新 更多