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

mmap能用swap内存吗

  • 内存
  • 2024-09-05 19:27:56
  • 713

一、内存映射是怎么回事?它本质上是硬盘上文件的位置与进程逻辑地址空间中相同大小的区域的一一对应关系,如图1中进程1所示。这种对应关系纯粹是一种逻辑概念,物理上不存在,原因是进程本身的逻辑地址空间不存在。在内存映射过程中,没有物理数据拷贝,文件并没有加载到内存中,而是逻辑上放入内存中,并创建并初始化相关数据结构(structaddress_space),并执行mmap()系统调用,所以创建内存映射的效率是非常高的。此时内存映射生成并没有真正复制数据,MMU无法在地址映射表中找到ptr对应的物理地址,即MMU会失败,并会产生中断响应函数丢失的中断。会在swap中寻找对应的page,如果找不到(即文件从未被读入内存),则通过映射的方式将文件从硬盘读到物理内存中。mmap()这个操作创建的关系与内存映射无关。
如果复制数据时发现物理内存不足,未使用的物理页会通过虚拟内存(swap)机制暂时交换到硬盘上。带内存映射。