Windows核心编程 - 内存映射文件(1)

     内存映射文件主要用于以下三种情况:

 1)系统使用内存映射文件来载入并运行.exe和动态链接库DLL文件。这大量节省了页交换文件的空间以及应用程序 启动的时间。

  2)开发人员可以用内存映射文件来访问磁盘上的数据文件,这可以避免直接对文件进行I/O操作和对文件内容进行缓存。

  3)可以在同一台机器上的不同进程之间共享数据。是最高效的方法。

1. 映射到内存的可执行文件和DLL

     当一个线程调用CreateProcess时,系统会执行以下步骤:

    1)确定所指定可执行文件的位置;

    2)创建一个新的进程内核对象;

    3)为新进程创建一个私有地址空间;

    4)预订一块足够大的地址空间来容纳,.exe文件;

    5)对地址空间区域进行标注,表明该区域的后备物理存储器来自于磁盘上的.exe文件,而不是页交换文件。

         当把.exe文件映射到进程的地址空间之后,会访问.exe文件中的一个段,这个段列出了一些DLL文件,系统 会调用LoadLibrary来加载每个DLL,加载时执行的操作与第4)和第5)类似。

         A)预订一块足够大的地址空间来容纳DLL文件。

         B)如果 无法在DLL文件指定的基地址处预订区域,则会尝试另一个地址为预订;

          C)对地址空间进行标注,表明该区域的后备物理存储器来自磁盘上的DLL文件,而非页交换文件。

    当所有的.exe文件和DLL 文件都映射到进程的地址空间后,系统会开始执行.exe文件的启动代码。

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值