内存映射文件的一个有关问题

内存映射文件的一个问题
内存映射文件是将磁盘上的文件映射到进程的虚拟地址空间中,我想问:映射过后,进程在访问这个文件中的数据的时候,就不用将文件数据加载到实际的物理内存中了吗,也就没有让进程的虚拟地址空间和实际物理内存建立映射,对吗?(但不是所有程序的运行都应在实际的物理内存中吗!!)

求教!困惑了好久!等待你的解释

------解决方案--------------------
映射过后,进程在访问这个文件中的数据的时候,需要将文件数据加载到实际的物理内存中
------解决方案--------------------
访问映射数据的时候,如果此数据不在物理内存中,memory manger会产生hard page fault读取相关数据,这个IO级别是最高的,所以结果就是性能很高

如果使用普通的IO函数(read、write),级别属于中等,可能被其他干扰
------解决方案--------------------
使用内存映射文件,性能很高的另一个原因,在于cache manager,它可能很早就把数据读取了,所以,memory manager会产生一个soft page fault,直接把相关数据copy到读取进程中(前提在于打开文件的时候没有关闭缓冲功能)