好贷网好贷款

存储映射I/O

发布时间:2016-12-3 14:50:28 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"存储映射I/O",主要涉及到存储映射I/O方面的内容,对于存储映射I/O感兴趣的同学可以参考一下。

1..存储映射I/O: (Memory-Mapped I/O)是指将一个磁盘文件与内存中的一个缓冲区想映射。 使得在不使用read,write函数的情况下执行I/O操作。它是一种基于内存区域的高级I/O操作。 2.实现的方法: mmap函数: 将给定的一个文件映射到一个存储区域中。 #include <sys/mman.h> void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offset); 成功返回的是映射区的起始地址,错误则返回MAP_FAILED 参数说明: start参数指定映射区的起始地址,通常用0表示由系统进行选择。 length表示要映射的字节数。 fd是要被映射的文件描述符。 offset是要映射的字节在文件中的起始偏移量。 prot参数说明老吴对映射存取区的保护要求: PROT_READ:可读 PROT_WRITE:可写 PROT_EXEC:映射区可执行 PROT_NONE:不可访问 可以是任意组合(按位或) 指定的映射区的权限不能超过文件open时指定的权限。 示意图 flags参数影响映射存储区的多种属性: MAP_FIXED:函数返回值等于实参start。将start指定为0可以获得最大的可移植性。 MAP_SHARED:表示存储操作修改映射文件,即对映射区的操作相当于对源文件的操作。 MAP_PRIVATE:表示映射区的存储操作导致创建该文件的一个私有拷贝,后续操作的只是这个映射区。 MAP_SHARED和MAP_PRIVATE两者必须制定一个,不能同时制定。

上一篇:详解如何在Windows上安装与配置Hadoop
下一篇:Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行

相关文章

关键词: 存储映射I/O

相关评论