当前位置:首页 > 内存 > 正文

内存映射文件原理

  • 内存
  • 2024-06-08 11:39:17
  • 8764

一、内存映射是怎么回事?基本上,它是硬盘上的文件位置与进程逻辑地址空间中相同大小的区域之间的一对一映射,如图1中的进程1所示。这种映射是纯粹的逻辑映射概念,物理上并不存在。原因是进程本身的逻辑地址空间不存在。在内存映射过程中,数据的实际副本并未加载,而是逻辑上放入内存中。根据代码,安装并初始化相应的数据结构(structaddress_space)。实现了mmap()系统调用,因此建立内存映射的效率非常高。设置内存映射实际上并不复制数据。此时MMU在地址映射表中找不到ptr对应的物理地址。即MMU发生故障,会产生缺页中断。页面丢失中断将在交换中查找相应的页面。如果找不到(即文件从未读入内存),则会通过映射将文件从硬盘读入物理内存。使用mmap()建立通信。这个过程与内存映射无关。
如果在复制数据时,发现物理内存不足,暂时不用的物理页会通过虚拟内存机制(swap)交换到硬盘上。这个过程与此无关。带内存显示。
二、内存映射文件的原理一旦了解了基础知识,阅读信息就会容易得多。
1.内存映射文件简介
内存文件映射也是Windows内存管理的一种方法。它提供统一的内存管理功能,以便应用程序可以通过内存指针访问磁盘上的文件。在磁盘上。访问加载文件的内存。具有文件映射,能够将磁盘文件的全部或部分内容与进程虚拟地址空间的某一区域建立映射关联,可以直接访问映射的文件,而无需执行文件I/O。文件的操作或操作。内容已缓冲。这种内存文件映射功能非常适合处理大文件。
2.使用内存映射文件的一般流程
在一些特定的行业中,我们经常会遇到容量十几GB,甚至几十GB的大文件,虚拟寻址的空间属于32位位进程。显然文件镜像只有232=4GB,无法一次性映射。在这种情况下,大文件的每一部分只能映射到进程中较小的地址空间。这需要对上面的一般过程进行适当的修改:
1)将图像映射到文件的开头。
2)转到图像。
3)撤消此图像
4)从文件中较深的偏移量开始映射新图像。
5)重复步骤2,直到文件中的所有数据均可访问。
三、虚拟内存向物理内存映射是根据什么机理从操作系统的角度来看,虚拟内存是虚拟存储的一类。有些任务太大,无法全部加载到内存中,或者需要运行的任务很多,但内存不足以处理,因此只能将少量任务加载到内存中,而其他任务可以保存在外部存储器上。
根据本地原则,在运行应用程序之前,仅将当前工作的页面或部分加载到内存中,并将其余部分保留在磁盘上。程序运行时,如果要访问的页面加载完毕,则可以继续应用程序,但如果程序要访问的页面没有加载到内存中,程序就会使用提供的请求页面函数。安装它们的操作系统。如果此时内存已满,则需要使用页面交换功能将未使用的页面暂时转移到内存中,以释放足够的内存空间。这样就可以在较小的内存空间中运行较大的用户程序,并且可以同时将更多的进程加载到内存中并同时运行。对于用户来说,只是对内存容量大的一种认识,所以称为虚拟内存。