繁体   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