首页
社区
课程
招聘
[求助]内存映射文件的问题
发表于: 2010-4-14 18:18 5038

[求助]内存映射文件的问题

2010-4-14 18:18
5038
使用内存映射文件运行程序的实例的时候,将程序在硬盘上的内容直接当作内存来使用指针访问,而硬盘的执行速度。。。,这样会不会使程序变慢?还是我理解错误?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 234
活跃值: (83)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
个人认为,不仅不会变慢,而且和不使用内存映射文件对比,程序的执行速度会变快的。因为,此时硬盘上的内容已经全部或部分映射到内存上了。。。
2010-4-14 20:47
0
雪    币: 5
活跃值: (531)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
通过goole我大致了解了一点,windows使用内存映射文件的方式打开应用程序后,实际上是将应用程序本身当作页面交换文件与物理内存一起组成虚拟内存地址空间,但这样一来也就等于是本来应该由物理内存和交换文件共同组成的虚拟内存地址空间,现在绝大部分都在交换文件上,那每执行每一页代码不都必须先将这页地址映射到物理内存中去?这样会不会导致内存和硬盘频繁的读写使系统性能降低呢?
2010-4-15 15:07
0
雪    币: 5
活跃值: (531)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
期待高手解答
2010-4-15 15:07
0
雪    币: 5
活跃值: (531)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
哦我又知道了,当执行第一条代码时,操作系统并不是只将这一条代码加载入内存,而是将该行代码之后一页的数据载入内存,当执行第二条乃致该页的最后一行代码时,都不需要进行文件io操作,也就是说,操作系统在将内存映射文件读入内存时是以4KB大小的页为单位的。

另我在3楼的发言是个误区,我当时以为所谓内存映射文件是将当前程序代替页面交换文件与物理内存共同组成虚拟内存,其实内存映射文件本身就是个类似于虚拟内存的内存管理方式,而不是我上面所说的从属关系
2010-4-15 16:10
0
游客
登录 | 注册 方可回帖
返回
//