首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
编程技术
发新帖
2
0
[求助]为什么File mapping比普通文件读写效率高
发表于: 2010-5-28 17:22
6677
[求助]为什么File mapping比普通文件读写效率高
xinshang
2010-5-28 17:22
6677
File Mapping用的是页面文件,直接换入内存。它效率高是因为从硬盘读入内存用的是特殊的方法还是因为文件读写时有一些额外的操作?查了好久,没查到确切的答案。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
2
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
8
)
swqswq
雪 币:
324
活跃值:
(57)
能力值:
( LV3,RANK:30 )
在线值:
发帖
11
回帖
72
粉丝
0
关注
私信
swqswq
2
楼
试问:读内存快还是读硬盘快?嘿嘿
2010-5-28 17:23
0
skypismire
雪 币:
75
活跃值:
(698)
能力值:
( LV6,RANK:90 )
在线值:
发帖
95
回帖
703
粉丝
1
关注
私信
skypismire
1
3
楼
第一次打开文件,第一次读写操作(buffered),两者效率上没区别。普通可缓冲读写,还是要通过cachemanager建立filemapping,最后都是通过缺页异常来完成内容的读取写入。
但若是频繁的文件读写操作,filemap这种方法的优势就体现出来了。因为普通可缓冲读写cache的内容有限,而且,cache的内容很容易就被释放。频繁读写的话,它来回捣腾的次数就多了,读取写入硬盘的次数也就多了。
而filemapping就不一样,建立之后,这部分内存空间是不会被释放,最多因为物理页面不够被倒换到交换页面上,读取写入硬盘的次数明显减少。。然后效率就上去了
说错没?后面的人上
2010-5-28 19:09
0
bithaha
雪 币:
1505
能力值:
(RANK:210 )
在线值:
发帖
66
回帖
933
粉丝
4
关注
私信
bithaha
5
4
楼
看怎么用 filemap也不一定比读文件效率高.
2010-5-29 02:31
0
鹿剑
雪 币:
284
活跃值:
(106)
能力值:
( LV9,RANK:160 )
在线值:
发帖
24
回帖
187
粉丝
1
关注
私信
鹿剑
3
5
楼
哪个教材说过File mapping快是读内存比文件快?原因根本就不是这个,MmMapViewOfSection时并不会读文件,只是创建必要的数据结构,这时如果用MmIsAddressValid去测试就会发现返回假了(说明文件根本没读进来),只有你访问到映射进来的某个内存时,产生缺页中断,这时缺页中断才会读一小部分进来,不会很多,就读你读取的那个位置以后的几百字节(数目不确定,估计和操作系统有关),速度当然快了,所以映射几个G的文件和几kb文件速度不差多少,但是都是要去读文件的……
2010-5-29 15:40
0
Aiscanf
雪 币:
202
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
5
回帖
23
粉丝
0
关注
私信
Aiscanf
6
楼
楼上正解......
2010-5-30 20:13
0
第八个门
雪 币:
178
活跃值:
(10)
能力值:
( LV5,RANK:60 )
在线值:
发帖
6
回帖
90
粉丝
0
关注
私信
第八个门
1
7
楼
MmIsAddressValid是测试不到应用层无效地址的。
也测试不到分页内存的。
MmMapViewOfSection似乎也只能映射到用户态。
2010-5-31 09:53
0
comealong
雪 币:
334
活跃值:
(78)
能力值:
( LV3,RANK:30 )
在线值:
发帖
21
回帖
137
粉丝
0
关注
私信
comealong
8
楼
效率高低其实不一定,起码相差不会很大, readfile 其实也把文件的内容加载到了cache中, 用的与文件映射相同的机制
2010-5-31 13:24
0
reduta
雪 币:
273
活跃值:
(64)
能力值:
( LV12,RANK:210 )
在线值:
发帖
17
回帖
117
粉丝
0
关注
私信
reduta
4
9
楼
要是单纯的操作某一部分,我觉得用那I/O操作快一些,如果要写入大量的东西,比如添加一个节,用FILEMAP快点吧
2010-6-2 17:20
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
xinshang
7
发帖
16
回帖
10
RANK
关注
私信
他的文章
[求助]为什么File mapping比普通文件读写效率高
6678
[求助]线程同步
4763
[求助]Sleep函数
4395
[求助]钩子的回调函数在哪个进程中执行?
5943
[求助]exe运行时,整个文件都加载到内存里吗?
7642
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部