C 我们可以通过mmap()分配物理上连续的内存吗?
我需要aarch64 Linux 4.15中的物理连续内存用于实验目的 我猜想,如果所需的大小小于页面大小,则分配的内存可能在物理上是连续的,如下所示C 我们可以通过mmap()分配物理上连续的内存吗?,c,linux,memory,mmap,C,Linux,Memory,Mmap,我需要aarch64 Linux 4.15中的物理连续内存用于实验目的 我猜想,如果所需的大小小于页面大小,则分配的内存可能在物理上是连续的,如下所示 void*p=mmap(0,getpagesize()-1,PROT_READ | PROT_WRITE,MAP_SHARED,0,0); 分配后,我将通过/proc/self/pagemap识别其物理地址 但是,我找不到任何有关这方面的文档。 我可以分配连续内存吗 谢谢。您几乎无法控制物理内存位置。在一个页面中,内存是连续的(它或多或少是一个
void*p=mmap(0,getpagesize()-1,PROT_READ | PROT_WRITE,MAP_SHARED,0,0);
分配后,我将通过/proc/self/pagemap
识别其物理地址
但是,我找不到任何有关这方面的文档。
我可以分配连续内存吗
谢谢。您几乎无法控制物理内存位置。在一个页面中,内存是连续的(它或多或少是一个页面的定义)。但是在虚拟地址空间中连续的不同页面在物理地址空间中不必连续(并且在物理地址空间中连续的页面在虚拟地址空间中不必连续) 除非您将在内核内存管理的最低级别工作,否则您将无法快速发现物理连续性 如果内存在Linux和其他设备之间进行双端口传输,则可能会出现问题,但仅使用
mmap()
无法解决这些问题