物理内存的对齐方式是如何保证的?

3

malloc()函数返回适合任何内置类型的内存,但在需要更具体对齐要求(例如16或32字节)的情况下,应该在应用程序级别进行。但是这种对齐是在虚拟内存层面上实现的。

如何保证底层物理内存也处于相同的对齐方式?


1
虚拟内存页面总是与物理内存页面对齐,因为虚拟内存的工作方式如此。 - Barmar
1个回答

3
虚拟内存是在页面级别上实现的,因此每个虚拟内存页面在加载到内存时都会映射到一个物理内存页面。因此,所有比页面更细粒度的内容在虚拟内存和物理内存之间也将等效对齐。

我猜问题变成了如何保证虚拟内存页的4字节对齐起始地址在物理内存中也是4字节对齐而不是2字节对齐?这是由内核的虚拟内存子系统完成的吗? - Manohar
内存页面的大小是2的幂,通常为1024或4096字节。由于它是4的倍数,因此在虚拟内存中4字节对齐的任何内容也将在物理内存中4字节对齐。 - Barmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接