File Mapping

文件映射(File Mapping)

文件映射(File mapping)是指:将一个文件的内容与一个进程(process)的虚拟地址空间的一部分相关联。一个文件视图(file view)是进程用来访问文件内容的虚拟地址的一部分。文件映射允许进程可以随机读写和顺序读写文件。它也使得进程在遇到大文件时有效的工作,比如数据库,而不需要映射整个文件到内存。多进程可以通过内存映射文件(memory-mapped files)共享数据。

进程使用指针从文件视图(file view)读数据以及写数据到文件视图,就像在动态分配内存时它们会做的那样。文件映射能够提高效率是因为文件位于磁盘上,而文件视图(file view)位于内存中。进程可以通过VirtualProtect函数来操作文件视图(file view)。

下图阐明了磁盘上的文件(file on disk)、文件映射对象(a file mapping object)、以及文件视图(file view)三者的关系。

磁盘上的文件(file on disk)可以是你想要映射到内存的任何文件,或者它可以是系统的页文件。文件映射对象(file mapping object)可以由文件的全部或者一部分组成。它由磁盘上的文件支持。这意味着当系统将文件映射对象(file mapping object)的页交换出来时,任何对文件映射对象的改变都会被写入磁盘上的文件中。当文件映射对象的页被交换回去,它们从文件中恢复。

一个文件视图(file view)可以由文件映射对象的全部或者一部分组成。一个进程文件视图来操作文件。一个进程可以为文件映射对象创建许多个视图。由每个进程创建的文件视图位于该进程的虚拟地址空间。当进程需要文件某部分的数据而非当前文件视图里的数据时,她会解除对当前文件的映射,然后创建一个新的文件视图。

当有多个进程使用同一个文件映射对象来为本地文件创建视图时,数据是一致的(coherent)。也就是说,视图包含了对磁盘文件的同一份拷贝。如果你想要在多进程中共享内存,文件就不能位于远程电脑上。

对于更多的信息,请看接下来的主题:

  • 创建内存映射对象
  • 创建文件视图
  • 共享文件和视图
  • 读写文件视图
  • 关闭文件映射对象
  • 文件映射安全性和访问权限
  • 使用文件映射

转载于:https://www.cnblogs.com/zhenghao2/p/6514279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值