Mmap
mmap 文件與 malloc 中的 mmap
我有點困惑
mmap
。好吧,我知道當我們
malloc
的記憶體很大時,我們會呼叫函式mmap
,它會在記憶體中分配一個區域。在這種情況下,mmap
只需為某個程序分配一些記憶體。但是,我聽說這
mmap
是一種技術,它允許我們將位於硬碟驅動器上的文件映射到記憶體,以便與普通 IO(讀寫)相比具有更好的性能。對我來說,上面兩件事完全是兩個獨立的故事:一個是關於記憶體分配的,另一個是關於用更好的方式讀寫文件的。
但是為什麼他們都叫
mmap
?這只是巧合還是它們實際上是相同的技術?
mmap
提供了一種映射記憶體頁面的方法。在 Linux(以及其他)中,這些記憶體頁面可以有不同的支持設備:特別是文件,並且什麼都沒有(對於匿名映射,MAP_ANONYMOUS
),或者更確切地說是交換設備或文件。雖然案例完全不同,但有一個共同的主題:為程序分配地址空間,並定義頁面將如何映射到那裡。
有其他案例
mmap
,特別是共享記憶體。