Acolor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-24
  • 最后登录2009-12-30
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望91点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1259回复:2

内存映射文件的困惑

楼主#
更多 发布于:2009-12-29 01:19
最近在看<<windows核心编程>>,有个地方很困惑,关于filemapping,内存映射文件。
书上的说法是:“与虚拟内存一样,可以将内存映射文件来保留一个地址空间的区域,并将物理存储器提交到这个区域,与虚拟内存不同的是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页面文件”。
1.“内存映射文件来保留一个地址空间”是指什么意思,这个地址空间是进程的虚拟地址空间,这个保留是指某种对应关系吗?
2.是用了内存映射文件,还要不要给其分配内存。
3.书上说是用内存映射文件来访问磁盘上的文件就不必对文件执行I/0操作了,为什么会没有I/O了呢?内存映射文件只是映射到虚拟地址空间,当程序要读取文件内容时,还是要读取内存的吧,这个时候还是会有缺页中断吧,然后还是要读文件,还是有I/O。

这几个问题困扰得很,虚心求教。
xpxhh
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分52分
  • 威望27点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-12-29 11:58
1.是进程的虚拟地址空间,保留就是说这段地址已经被使用了,不能再进行分配了。
2.当访问文件内容的时候如果内存页不存在就会引起缺页中断,这时就得分配内存了。
3.他说的意思是你不用显式地调用ReadFile、WriteFile等函数了。
Acolor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-24
  • 最后登录2009-12-30
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望91点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-12-29 23:10
也就是说使用文件内存映射,只是程序里面感觉是在直接对文件进行操作,而实际上,系统完成了读取文件内容,换页的一些操作?
游客

返回顶部