WINDOWS内存映射文件原理分析+代码演示

本文介绍了Windows操作系统中内存映射文件的概念和优势,强调了它在处理大型文件时的高效性。通过CreateFile、CreateFileMapping和MapViewOfFile等API函数的使用流程,详细解释了如何将文件内容映射到进程的虚拟地址空间,从而实现快速访问。通过对比传统文件操作和内存映射文件的效率,突显了内存映射文件在性能上的显著提升。
摘要由CSDN通过智能技术生成

WINDOWS为任何一个进程都赋予了4G的独立的虚拟地址空间,然而学过OS的都晓得这个只是逻辑上的虚拟的地址空间,进程实际拥有的远小于4GB的物理地址空间。并且进程的虚拟地址空间是每个进程私有的,有操作系统分配,本质上不过是物理内存地址的映像罢了。因此可以得出结论:在进程内运行的线程只能访问其所处进程的内存空间,即不同进程中可以用相同地址的指针用来指向属于各自进程中的内容,互不干扰,因为彼此都是以进程中的虚地址去访问内存的,操作系统再将虚拟地址转换为真正的物理内存地址。这样减少了程序员很多的麻烦事,使得我们而已在一个足够大的空间内自由随便的去做我们自己的功能,不必考虑会与其他进程发生冲突等。正是由于OS有如此完美的功能,我们才得以在我们自己的代码中不用顾忌太多,想申请空间就申请,不用关心这个空间是否被其他进程所占用?是否物理内存空间不够用(自古物理内存都是兵家必争之地嘛)等等一些让人头痛的问题。

其实上述所说的就是操作系统的内存管理模式,也是OS的一个核心功能吧。上面简单的几句只是概括,想弄的清清楚楚,那就得去看看操作系统原理方面的书喽,个人看的是计算机的心智---操作系统之哲学原理(简单评论一下此书:每篇都有一个简单的哲学引子,内容还算凑合吧)。

 

内存映射文件的使用

文件操作是一个基本功能,当然WINDOWS提供了很多具备这些功能的API,CreateFile(),WriteFile()等一大坨,对于小型体积的文件来说没什么问题,对于几十M,几百M甚至几G又或者更多的文件,这些API就显得力不从心了,好比那个东西。。。大家懂的。因此微软给我们提供了内存映射文件的技术。至于优点吗,肯定是速度快了,最后写个例子来证明࿰

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值