簡體   English   中英

munmap,mmap的功能是什么

[英]What is the functionality of munmap, mmap

當我嘗試研究一些與FPGA有關的代碼時,遇到了munmap,mmap。

我仔細閱讀這里提供的手冊。 我仍然不了解此功能的目的。 這到底是做什么的?

它將磁盤緩存的大塊映射到進程空間,以便可以在字節級別上操作映射的文件,而不需要使用read()write()等方法使應用程序通過VFS。

mmap()是系統調用,可幫助進行內存映射的I / O操作。 它分配一個內存區域並將其映射調用進程虛擬地址空間,以使應用程序能夠訪問內存。

mmap()返回指向映射區域的指針,該指針可用於訪問內存。

同樣, munmap()刪除映射,因此對分配的內存的進一步訪問不再合法。

這些是較低級別的調用,其行為與較高級別上的內存分配器函數(如malloc() / free()所提供的類似。 但是,此系統調用允許對分配的區域行為進行精細控制,例如,

  • 映射的內存保護(讀取,寫入,執行權限)
  • 近似 )映射位置(請參見MAP_FIXED標志)
  • 映射區域的初始內容(請參見MAP_UNINITIALIZED標志)

等等

如果您認為其他措詞可以幫助您,也可以參考Wikipedia文章

手冊很清楚:

mmap()在調用進程的虛擬地址空間中創建一個新的映射

簡而言之,它將大塊文件/設備內存/任何內容映射到進程的空間,以便僅通過訪問內存就可以直接訪問內容。

例如:

fd = open("xxx", O_RDONLY);
mem = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);

將文件的內容映射到mem ,讀取mem就像讀取文件xxx的內容一樣。

如果fd是某些FPGA的設備存儲器,則mem成為FPGA內容的內容。

在某些情況下使用非常方便且高效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM