munmap、mmap的功能是什么

Gil*_* PJ 3 c c++ linux system-calls

当我尝试研究一些处理 FPGA 的代码时,我遇到了 munmap、mmap。

我仔细阅读此处提供的手册。我仍然不明白这个功能的目的。这究竟是做什么的?

Sou*_*osh 5

mmap()是一个系统调用,它有助于内存映射 I/O 操作。它分配一个内存区域并将其映射调用进程的虚拟地址空间,以便应用程序访问该内存。

mmap() 返回一个指向可用于访问内存的映射区域的指针。

同样,munmap()删除映射,因此对分配的内存的进一步访问仍然合法。

这些是较低级别的调用,在行为上类似于更高级别上的malloc()/free()等内存分配器函数所提供的调用。但是,此系统调用允许对分配的区域行为进行细粒度控制,例如,

  • 映射的内存保护(读、写、执行权限)
  • 近似)映射的位置(见MAP_FIXED标志)
  • 映射区域的初始内容(见MAP_UNINITIALIZED标志)

等等。

如果您认为替代措辞可以帮助您,您也可以参考维基百科文章