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

内存映射技术(匿名内存映射)

  • 内存
  • 2024-05-23 01:00:17
  • 7863

一、内存映射是怎么回事?这主要是文件在硬盘上的位置与进程逻辑地址空间中相同大小的区域之间的一一对应关系,如图1中的进程1所示。这种对应关系纯粹是一个逻辑概念,物理上并不存在。原因是进程本身的逻辑地址空间不存在。在内存映射过程中,没有数据的实际副本。文件不是加载到内存中,而是逻辑插入到内存中,建立并初始化其数据结构(structaddress_space),实现mmap()系统调用,因此建立内存映射的效率非常高。建立内存映射实际上并不复制数据。此时MMU在地址映射表中找不到ptr对应的物理地址,即MMU失效,会产生缺页中断,缺页中断会在swap中寻找对应的页。如果没有找到(即文件从未被读入内存),则会通过映射将文件从硬盘读取到物理内存。通过mmap()建立的关系这个过程与内存映射无关。
如果复制数据时发现物理内存不够,暂时不用的物理页会通过虚拟内存(swap)机制交换到硬盘上。这个过程与内存映射无关。