Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我们可以通过mmap()分配物理上连续的内存吗?_C_Linux_Memory_Mmap - Fatal编程技术网

C 我们可以通过mmap()分配物理上连续的内存吗?

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识别其物理地址 但是,我找不到任何有关这方面的文档。 我可以分配连续内存吗 谢谢。您几乎无法控制物理内存位置。在一个页面中,内存是连续的(它或多或少是一个

我需要aarch64 Linux 4.15中的物理连续内存用于实验目的

我猜想,如果所需的大小小于页面大小,则分配的内存可能在物理上是连续的,如下所示

void*p=mmap(0,getpagesize()-1,PROT_READ | PROT_WRITE,MAP_SHARED,0,0);
分配后,我将通过
/proc/self/pagemap
识别其物理地址

但是,我找不到任何有关这方面的文档。 我可以分配连续内存吗


谢谢。

您几乎无法控制物理内存位置。在一个页面中,内存是连续的(它或多或少是一个页面的定义)。但是在虚拟地址空间中连续的不同页面在物理地址空间中不必连续(并且在物理地址空间中连续的页面在虚拟地址空间中不必连续)

除非您将在内核内存管理的最低级别工作,否则您将无法快速发现物理连续性

如果内存在Linux和其他设备之间进行双端口传输,则可能会出现问题,但仅使用
mmap()
无法解决这些问题