什么是内存映像文件?如何访问内存映像文件?

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:24:18
在java里的这个概念我不是很理解,请各位懂得的多多指教!

虚拟内存在内存中的地址存放单元,可以使CPU直接读取硬盘,必须在硬盘上开辟一块空间

通俗的讲是暂时存放在内存中的临时文件

一: 内存映像文件
几乎每个应用程序都要和文件打交道。比如,应用程序有时需要打开、读取、再关闭文
件;而有时需要打开文件,将数据读到一个缓冲区再写回到文件中另一个位置。通常实
现起来都显得有点繁琐。Microsoft Windows提供了满足这两方面要求的最佳解决途径:
内存映像文件。
像使用虚拟内存一样,使用内存映像文件同样需要经过保留和提交两个过程,首先在进
程内存空间保留一块区域,然后提交物理存储给这段区域。不同的是物理存储来自于磁
盘上的文件,而不是系统的分页文件。也即将磁盘上指定的数据文件作为虚拟内存,这
个实现过程被称为文件映像,可以将文件全部或部分映像到进程的地址空间中。文件映
像过以后,可以把文件映像的部分当作已全部被载入内存一样的去访问它,这时又称
为内存映像文件。

二: 内存映像文件使用步骤
要使用内存映像文件,可以按以下步骤:
(1) 调用Windows API 函数CreateFile()创建或是打开一个文件,得到一个标识该文
件(内核对象)的句柄,确定了哪一个磁盘文件将要作为内存映像文件。
(2) 将(1)中得到的文件对象句柄作为第一个参数调用Windows API 函数CreateFileM
apping()创建一个文件映像对象。通知系统该文件的大小及对该文件的访问方式,同
时也得到一个标识该文件映像对象的句柄。
(3) 将(2)中得到的文件映像对象句柄作为第一个参数调用Windows API 函数MapView
OfFile()通知系统映像文件全部或部分内容到进程的某一段地址空间,并将此段空间
首地址通过该函数返回。这一步也就是使用虚拟内存的保留和提交过程,此后就可以利
用此首地址实现对文件内容的读写了。