0

谁能告诉我是否有任何Linux内核API可以给我免费的连续页面列表,起始页面地址是8字节对齐的?

我需要获得连续的物理内存,而不是虚拟内存。

4

1 回答 1

3

正如 Paul R 所说,使用kmalloc.
如果您分配的页面少于一个页面,那么您的分配将按其大小对齐,向上取整为 2 的幂(即分配 40 个字节将为您提供一个按 64 个字节对齐的地址)。如果分配一页或更多页,则地址在页上对齐,即 4096 字节。
您获得的内存是虚拟的,但被 1-1 映射到物理内存,因此您获得了连续的物理页面。
请注意,在 Linux 2.6.22 之前,它被限制为 128KB(取决于架构和配置)。从 2.6.22 开始,限制为 4MB(同样,取决于架构和配置)。

于 2012-07-06T07:55:42.293 回答