【问题标题】:How is the heap divided up among processes?堆是如何在进程之间分配的?
【发布时间】:2022-01-16 08:44:07
【问题描述】:

我知道每个进程都有自己的独立堆,与线程不同(它们共享一个公共堆,因此会减慢堆内存分配,因为 malloc 等函数需要使用锁进行同步)。但是,如何确定分配给每个进程的内存的位置和数量,以及如何确保这不会与分配给其他进程的内存冲突?

我无法通过搜索找到明确的答案,但如果存在,请提供一个链接,我将不胜感激。谢谢!

【问题讨论】:

    标签: memory-management process operating-system heap-memory dynamic-memory-allocation


    【解决方案1】:

    为了回答这个问题,您需要了解虚拟内存。在虚拟内存中,内存对于用户进程可以看到的内容是连续的。堆被赋予了非常大的虚拟内存,它仅受物理 RAM 数量和交换空间的限制,以支持分配。进程本身只看到一个连续的虚拟地址空间。在 Linux 上,内存分配是使用伙伴算法完成的,内核为每个页面保留一个页面结构。因此,task_struct 中的页面结构和进程的内存映射允许 Linux 内核跟踪哪些页面是空闲的,哪些不是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2020-12-06
      • 2011-08-13
      • 2011-07-06
      • 2023-03-15
      • 2011-03-05
      • 1970-01-01
      相关资源
      最近更新 更多