阅读:1259回复:2
内存映射文件的困惑
最近在看<<windows核心编程>>,有个地方很困惑,关于filemapping,内存映射文件。
书上的说法是:“与虚拟内存一样,可以将内存映射文件来保留一个地址空间的区域,并将物理存储器提交到这个区域,与虚拟内存不同的是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页面文件”。 1.“内存映射文件来保留一个地址空间”是指什么意思,这个地址空间是进程的虚拟地址空间,这个保留是指某种对应关系吗? 2.是用了内存映射文件,还要不要给其分配内存。 3.书上说是用内存映射文件来访问磁盘上的文件就不必对文件执行I/0操作了,为什么会没有I/O了呢?内存映射文件只是映射到虚拟地址空间,当程序要读取文件内容时,还是要读取内存的吧,这个时候还是会有缺页中断吧,然后还是要读文件,还是有I/O。 这几个问题困扰得很,虚心求教。 |
|
沙发#
发布于:2009-12-29 11:58
1.是进程的虚拟地址空间,保留就是说这段地址已经被使用了,不能再进行分配了。
2.当访问文件内容的时候如果内存页不存在就会引起缺页中断,这时就得分配内存了。 3.他说的意思是你不用显式地调用ReadFile、WriteFile等函数了。 |
|
板凳#
发布于:2009-12-29 23:10
也就是说使用文件内存映射,只是程序里面感觉是在直接对文件进行操作,而实际上,系统完成了读取文件内容,换页的一些操作?
|
|