Mmap

mmap 文件與 malloc 中的 mmap

  • November 23, 2020

我有點困惑mmap

好吧,我知道當我們malloc的記憶體很大時,我們會呼叫函式mmap,它會在記憶體中分配一個區域。在這種情況下,mmap只需為某個程序分配一些記憶體。

但是,我聽說這mmap是一種技術,它允許我們將位於硬碟驅動器上的文件映射到記憶體,以便與普通 IO(讀寫)相比具有更好的性能。

對我來說,上面兩件事完全是兩個獨立的故事:一個是關於記憶體分配的,另一個是關於用更好的方式讀寫文件的。

但是為什麼他們都叫mmap?這只是巧合還是它們實際上是相同的技術?

mmap提供了一種映射記憶體頁面的方法。在 Linux(以及其他)中,這些記憶體頁面可以有不同的支持設備:特別是文件,並且什麼都沒有(對於匿名映射,MAP_ANONYMOUS),或者更確切地說是交換設備或文件。

雖然案例完全不同,但有一個共同的主題:為程序分配地址空間,並定義頁面將如何映射到那裡。

有其他案例mmap,特別是共享記憶體。

引用自:https://unix.stackexchange.com/questions/621144