文件映像

来源:互联网 发布:阿里大数据面试 编辑:程序博客网 时间:2024/04/28 23:18
    文件映像是指一个文件的内容和一个进程的部分虚拟地址空间的对应。系统生成一个文件映像对象用于维持这种对应关系。文件视图是指地址空间的一部分用于进程访问文件内容。文件映像允许进程使用随机和连续输入输出(I/O)。同时也允许进程高效工作于大型数据文件,比如数据库,却不需要映射整个文件到内存中。多个进程也可以使用内存映像文件来共享数据。

    进程使用指针来读取和写入文件视图,正如他们将被动态的分配内存。使用文件映像可以改善工作效率是因为文件位于硬盘上,而文件视图位于内存中。进程也可以通过虚拟保护函数来操作文件视图。

下面这张图片说明了硬盘上的文件,文件映像对象和文件视图之间的关系。



    硬盘上的文件可以是任何你想要映射到内存中的文件,也可以是系统分页文件。文件映像对象可以由整个或者部分文件组成。

它由硬盘上的文件支持。这意味着当系统交换出文件映像对象的页时,任何对文件映像对象的变动都会被写入文件。当文件映像对象的页被换回时,将从文件中恢复。


    一个文件视图由全部或者部分文件映像对象组成。进程通过文件视图来操作文件。一个进程可以为一个文件映像对象生成多个视图。由每个进程生成的文件视图位于该进程的虚拟地址空间。当进程需要文件的部分数据除了当前文件视图中的内容,可以取消映射当前文件视图,然后生成新的文件视图。


Windows Me/98/95:所有的文件视图位于共享地址空间中。共享地址空间驻留在为每个进程分配的2到3G的虚拟地址空间。包含16为堆和共享系统DLLs,以及文件视图。

    当多进程使用相同的文件映像对象为一个本地文件生成文件视图时,数据是连贯的。就是说,视图包含相同的硬盘文件的副本。如果你想在多进程间共享内存则文件不能位于一个远端计算机上。


获得更多信息,参考以下主题:

  • 生成文件映像对象
  • 生成文件视图
  • 共享文件和内存
  • 从文件视图中读写文件
  • 关闭文件映像对象
  • 文件映像安全和访问权限
  • 使用文件映像