【问题标题】:What's the purpose of page-aligned allocation?页面对齐分配的目的是什么?
【发布时间】:2018-06-29 18:30:52
【问题描述】:

我正在查看似乎正在分配与页面大小对齐的内存的 C 代码:

_aligned_malloc( size, PAGESIZE )

其中PAGESIZE 是一个设置为 4096 的变量。暂时忽略该页面大小的值可能与 4096 不同,我只想知道为什么要将内存分配与页面大小对齐。它提供了哪些性能优势(如果有)?它除了性能还有其他用途吗?

【问题讨论】:

标签: c malloc


【解决方案1】:

它可能与pagingvirtual address space 有关。页面大小与MMU 相关,因此通常受硬件限制。

在某些操作系统上,某些函数或system calls 需要(即要求)页面对齐指针。例如,在 Linux 上,mmap(2)(尤其是与MAP_FIXED 一起使用时,它需要一个真正的页面对齐地址)、mprotect(2)madvise(2)mlock(2)mremap(2),还有相关的shm_overview(7) .

一些非常低级的 IO 操作可能更喜欢(例如运行得更快)与页面对齐的缓冲区(可能是send(2),或者直接write(2) 到某个块设备...),因为内核可能会避免一些块复制(例如做一些DMA) 并且可以特殊情况的页面对齐数据。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多