阅读:1217回复:2
关于windows的文件映射机制,我有些不明白,希望大侠们说一下
文件映射机制是为了提高内存的利用率和提高速度设计的,一般的步骤是:
HANDLE hFile = CreateFile(...); HANDLE hFileMapping = CreateFileMapping(hFile, ...); CloseHandle(hFile); PVOID pvFile = MapViewOfFile(hFileMapping, ...); ,我想知道MapViewOfFile到底是不是将指定的硬盘中的数据拷贝到内存中,还是只是存储他的地址的索引,所有的读写操作都是直接写硬盘,从而提高效率呢。如果MapViewOfFile是将指定的硬盘上的数据读到内存中来,那么不是不会起到提高效率的目的了吗?? 希望熟悉这方面的大哥给以指教,谢谢 |
|
沙发#
发布于:2007-03-15 14:33
在windows技术内幕书中的第17章有这方面的说明,
。。。。 当所有的. e x e和D L L文件都被映射到进程的地址空间之后,系统就可以开始执行. e x e文件 的启动代码。当. e x e文件被映射后,系统将负责所有的分页、缓冲和高速缓存的处理。例如, 如果. e x e文件中的代码使它跳到一个尚未加载到内存的指令地址,那么就会出现一个错误。系 统能够发现这个错误,并且自动将这页代码从该文件的映像加载到一个R A M页面。然后,系 统将这个R A M页面映射到进程的地址空间中的相应位置,并且让线程继续运行,就像这页代 码已经加载了一样。当然,这一切是应用程序看不见的。当进程中的线程每次试图访问尚未加 载到R A M的代码或数据时,该进程就会重复执行。 。。。 还有一些图,估计你看了图应该就了解了 |
|
板凳#
发布于:2007-03-15 14:43
这种问题,自己看书把..
|
|