分配给进程的虚拟内存

我一直在阅读虚拟内存,分页等。我对此有一些疑问。

  • 当一个进程被创建时,它的虚拟地址空间大小是多少?

  • 不同流程的尺寸是否有所不同? 如果是,那么它是如何决定的?

  • 如果进程在运行过程中需要更多的虚拟地址空间,那么分配给它的额外内存量是多少?


  • 我会尽量按照你问的顺序来回答。

  • 过程没有固定的初始大小
  • 是的,映射到进程的内存量取决于可执行文本/数据部分的大小,链接对象,初始堆栈大小和初始堆大小。 由于引用堆栈上的地址会导致页面错误,堆栈会自动增长。
  • 额外的非堆栈内存通过系统调用(sbrk(),mmap()等等)通过对操作系统的请求映射到进程...)

  • 这是杰森杰出的简短解释。 为了增加它并使其更清晰,我建议你也了解可执行映像的格式,例如ELF本身。 解释ELF可执行文件将是获得基本理解的好地方。 您也可能会发现ELF(段 - ELF可执行文件的可加载部分)和VM之间的连接有用。

    对基本可执行映像的理解以及它的各种组件将会补充Jason的答案,并且您将了解如何决定将多少虚拟内存分配给一个进程。

    我知道我的回答很晚,就你问这个问题本身而言,但希望它有帮助。 如果你发现更有趣和更有见地的东西,请在此分享,以便其他人也能接受教育。

    链接地址: http://www.djcxy.com/p/80187.html

    上一篇: Virtual memory allocated to a process

    下一篇: What are the differences between virtual memory and physical memory?