分配给进程的虚拟内存

时间:2014-02-15 18:26:35

标签: memory-management operating-system

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

  1. 创建进程时,虚拟地址空间大小是多少?

  2. 不同流程的尺寸是否不同?如果是,那该怎么决定?

  3. 如果进程在运行期间需要更多的虚拟地址空间,分配给它的额外内存量是多少?

2 个答案:

答案 0 :(得分:2)

我会按你要求的顺序回答。

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

答案 1 :(得分:2)

这是杰森的精彩简短解释。只是添加它并带来更多的清晰度,我建议你也理解可执行映像的格式,例如ELF本身。 ELF executable explained是获得基本理解的好地方。您可能还会发现connection between ELF (segments - loadable sections of an ELF executable) and VM有用。

对基本可执行映像的理解以及它的各个组成部分将补充Jason的答案以及您对如何确定分配给进程的虚拟内存的确切程度的理解。 / p>

我知道我对你问这个问题的答案很晚,但希望它有所帮助。如果您发现更有趣和富有洞察力的内容,请在此处分享,以便其他人也接受教育。