C 页面对齐分配的目的是什么?

C 页面对齐分配的目的是什么?,c,malloc,C,Malloc,我看的是come C代码,它似乎是根据页面大小分配内存的: _对齐的\u malloc大小,页面大小 其中PAGESIZE是一个设置为4096的变量。目前,忽略页面大小可能有一个不同于4096的值,我只想知道为什么要将内存分配与页面大小对齐。它提供了哪些性能优势(如果有的话)?除了性能之外,它还有其他用途吗?它可能与和有关。页面大小与硬件有关,因此通常受到硬件的限制 在某些操作系统上,某些函数或命令需要页对齐指针。例如,在Linux上,尤其是在使用MAP_FIXED时,它需要一个真正的页面对齐地

我看的是come C代码,它似乎是根据页面大小分配内存的:

_对齐的\u malloc大小,页面大小

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

它可能与和有关。页面大小与硬件有关,因此通常受到硬件的限制

在某些操作系统上,某些函数或命令需要页对齐指针。例如,在Linux上,尤其是在使用MAP_FIXED时,它需要一个真正的页面对齐地址,,,也相关

一些非常低级的IO操作可能更喜欢,例如,使用页面对齐的缓冲区运行得更快,或者直接到某些块设备。。。因为内核可能会避免某些块复制,例如执行某些操作,并且可以使用特殊情况下的页面对齐数据。

它可能与和相关。页面大小与硬件有关,因此通常受到硬件的限制

在某些操作系统上,某些函数或命令需要页对齐指针。例如,在Linux上,尤其是在使用MAP_FIXED时,它需要一个真正的页面对齐地址,,,也相关


一些非常低级的IO操作可能更喜欢,例如,使用页面对齐的缓冲区运行得更快,或者直接到某些块设备。。。因为内核可能会避免某些块复制,例如执行某些操作,并且可以使用特殊情况下的页面对齐数据。

共享内存更喜欢整个页面。另外,更改内存块的保护通常涉及整页。读取可能是个好主意。共享内存更喜欢整页。另外,更改内存块的保护通常涉及整个页面。阅读可能是个好主意。