【问题标题】:Data Structure Used by OS to Implement Heap for Dynamic Memory Management? [closed]操作系统使用的数据结构来实现动态内存管理的堆? [关闭]
【发布时间】:2012-11-07 22:30:27
【问题描述】:

操作系统使用哪种数据结构来实现动态内存管理中使用的堆内存?

【问题讨论】:

  • 到目前为止您在哪里搜索过?你发现了什么?你有什么想法?
  • 我已经用谷歌搜索过了,目前还不知道。
  • 这是一个概念性问题,而不是一个我可以付出任何努力的编程问题。
  • Linux page table management 的内部结构或malloc.hmalloc.c 的来源对您有帮助吗? malloc 完成的动态内存管理实际上不是由操作系统完成的。操作系统唯一知道的是非常简单的内存页面。无论如何,您的问题并没有表明您为解决自己的问题付出了任何努力。
  • 操作系统堆管理不是 C 语言的一部分。 C 语言不需要专门的堆管理。此外,操作系统内存管理是特定于操作系统的,并且可能因操作系统而异。

标签: c data-structures heap-memory


【解决方案1】:

我发现链表的派生是一个很好的堆管理候选者。

在有限内存区域非常小的嵌入式系统上,不同的内存池效率更高。一个内存池可以用于小(字节单元)分配,并使用位向量来判断分配了哪些块。另一个用于中等或经常分配的块的内存池和用于不经常分配的块的剩余区域。

这个想法是以低内存开销有效地分配内存块并减少碎片。

某些操作系统使用虚拟内存的概念,其中内存被分页到外部设备,例如硬盘驱动器。当操作系统收到一个page fault,表示访问内存页面之外,它会从外部设备加载一个页面。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多