【问题标题】:Equivalent of dwAllocationGranularity in Linux?相当于Linux中的dwAllocationGranularity?
【发布时间】:2014-07-18 07:12:35
【问题描述】:

Linux 中dwAllocationGranularity 的等价物是什么?在 Windows 中,它被定义为:

可以分配虚拟内存的起始地址的粒度。

请注意,这PAGE_SIZE 相同,后者是物理页面的粒度。
(在 Windows 上,x86 上的虚拟地址粒度是 64 KiB,而页面大小当然是 4 KiB。)

【问题讨论】:

  • 也许没有;也许粒度总是保证在 Linux 上是 PAGE_SIZE?您是否有需要这样一个数字的特定情况?
  • @flodin:是的,我面前确实有一个具体案例,但这里的代码不相关。如果没有,请将其发布为答案。

标签: c++ linux memory allocation granularity


【解决方案1】:

Linux 上最接近 VirtualAlloc 的等价物是 mmap,它与 VirtualAlloc 类似,允许您指定所分配内存的所需分配目标地址。在 Windows 上,此地址必须在分配粒度上对齐。在 Linux 上,我引用 mmap 手册页:

如果 addr 不为 NULL,则内核将其作为提示 放置映射;在 Linux 上,映射将在附近创建 页面边界

据我所知,不存在分配粒度高于系统页面大小的情况,所以应该可以放心使用PAGE_SIZE作为替代。

【讨论】:

    猜你喜欢
    • 2016-09-04
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多