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

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

    • 创建内存映射对象
    • 创建文件视图
    • 共享文件和视图
    • 读写文件视图
    • 关闭文件映射对象
    • 文件映射安全性和访问权限
    • 使用文件映射
  • 相关阅读:
    Log4net源码分析(一)
    ASP.NET MVC 框架是 .NET 平台 Web 开发的主流,但是并不适合初学者
    详解ASP.NET MVC应用程序请求生命周期
    ELMAH (ASP.NET错误日志处理)使用方法
    ElMAH(ASP.NET错误日志记录与通知)系列文章基础应用篇
    Log4net源码分析(三)
    Log4net 框架系列:log4net日志文件在asp.net中的应用实例记录系统错误
    ELMAH(ASP.NET错误日志记录与通知)系列文章概念篇
    Log4net源码分析(二)
    在VS2010中配制Elmah邮件发送到Gmail
  • 原文地址:https://www.cnblogs.com/zhenghao2/p/6514279.html
Copyright © 2011-2022 走看看