• 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)。也就是说,视图包含了对磁盘文件的同一份拷贝。如果你想要在多进程中共享内存,文件就不能位于远程电脑上。

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

    • 创建内存映射对象
    • 创建文件视图
    • 共享文件和视图
    • 读写文件视图
    • 关闭文件映射对象
    • 文件映射安全性和访问权限
    • 使用文件映射
  • 相关阅读:
    牛客网在线编程:解救小易
    牛客网在线编程:身份证分组
    牛客网在线编程:优雅的点
    用FlexSlider制作支付宝2013版幻灯片演示插件
    Mysql Join语法解析与性能分析详解
    SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段
    jQuery 分页插件 jqPagination的使用
    Android图片异步加载之Android-Universal-Image-Loader
    C#随机函数random()典型用法集锦
    CSS自适应布局(左右固定 中间自适应或者右侧固定 左侧自适应)
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6514279.html
Copyright © 2020-2023  润新知