mmap 文件与 malloc 中的 mmap

mmap 文件与 malloc 中的 mmap

我有点困惑mmap

好吧,我知道当我们使用malloc大内存时,我们将调用该函数mmap,该函数将在内存中分配一个区域。在这种情况下,mmap只需为某个进程分配一些内存即可。

然而,我听说这mmap是一种技术,它允许我们将位于硬盘驱动器上的文件映射到内存,这样与普通 IO(读和写)相比,我们可以获得更好的性能。

对我来说,以上两件事完全是两个独立的故事:一个是关于内存分配,另一个是关于以更好的方式读写文件。

但为什么叫他们两个呢mmap?这只是巧合还是它们实际上是相同的技术?

答案1

mmap提供了一种方法映射内存页在Linux中(除其他外),这些内存页面可以有不同的后备设备:特别是文件,什么也没有(对于匿名映射MAP_ANONYMOUS),或者更确切地说是交换设备或文件。

虽然用例完全不同,但有一个共同的主题:为进程分配地址空间,并定义如何将页面映射到那里。

还有其他用例mmap,特别是共享内存。

相关内容