C++ mmap的功能是什么
当我试图研究一些处理FPGA的代码时,我遇到了munmap,mmapC++ mmap的功能是什么,c++,c,linux,system-calls,C++,C,Linux,System Calls,当我试图研究一些处理FPGA的代码时,我遇到了munmap,mmap 我仔细阅读了提供的手册。我仍然不明白这个功能的目的。这到底是做什么的?它将一块磁盘缓存映射到进程空间,以便可以在字节级别操作映射的文件,而不需要应用程序通过VFS执行read(),write(),等等。mmap()是一个系统调用,有助于内存映射的I/O操作。它分配一个内存区域并将其映射到调用进程虚拟地址空间,以便应用程序能够访问内存 mmap()返回指向可用于访问内存的映射区域的指针 类似地,munmap()会删除映射,因此不
我仔细阅读了提供的手册。我仍然不明白这个功能的目的。这到底是做什么的?它将一块磁盘缓存映射到进程空间,以便可以在字节级别操作映射的文件,而不需要应用程序通过VFS执行
read()
,write()
,等等。mmap()
是一个系统调用,有助于内存映射的I/O操作。它分配一个内存区域并将其映射到调用进程虚拟地址空间,以便应用程序能够访问内存
mmap()
返回指向可用于访问内存的映射区域的指针
类似地,munmap()
会删除映射,因此不再合法地访问分配的内存
这些是较低级别的调用,其行为类似于较高级别上的内存分配器函数,如malloc()
/free()
。但是,此系统调用允许对分配的区域行为进行细粒度控制,例如
- 映射的内存保护(读、写、执行权限)
- 映射的(近似)位置(请参见
flag)MAP\u FIXED
- 映射区域的初始内容(请参见
标志)MAP\u UNINITIALIZED
fd = open("xxx", O_RDONLY);
mem = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
将文件内容映射到mem
,读取mem
就像读取文件的内容xxx
如果fd
是某个FPGA的设备内存,则mem
成为FPGA内容的内容
在某些情况下,它使用起来非常方便,效率也很高。我建议阅读这个问题的最佳答案:。除非它是
MAP\u ANONYMOUS
,在这种情况下没有文件:)