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

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

    • 创建内存映射对象
    • 创建文件视图
    • 共享文件和视图
    • 读写文件视图
    • 关闭文件映射对象
    • 文件映射安全性和访问权限
    • 使用文件映射
  • 相关阅读:
    多时钟域设计——控制信号传输
    时钟与复位
    注意
    有限状态机
    亚稳态
    python读取json文件制作股票价格走势
    python读取csv文件绘制气温图,x轴为日期,并填充颜色
    python读取csv文件数据绘制图像,例子绘制天气每天最高最低气温气象图
    python随机漫步
    python读取txt文件绘制散点图
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6514279.html
Copyright © 2011-2022 走看看