UNIX环境高级编程:存储映射I/O(mmap函数)
四、对mmap地址的访问 #include <sys/mman.h> void *mmap(void *start, size_t length, int prot, int flags,int fd, off_t offset); int munmap(void *start, size_t length); mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 mmap()必须以PAGE_SIZE()为单位进行映射,而内存也只能以页为单位进行映射,若要映射非PAGE_SIZE整数倍的地址范围,要先进行内存对齐,强行以PAGE_SIZE的倍数大小进行映射。 查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/ mmap操作提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。在要求高性能的应用中比较常用。mmap映射内存必须是页面大小的整数倍,面向流的设备不能进行mmap,mmap的实现和硬件有关。 内存映射一个普通文件时,内存中映射区的大小(mmap的第二个参数)通常等于该文件的大小,然而文件的大小和内存的映射区大小可以不同。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |