页交换文件与写时复制

页交换文件是Windows用于扩展RAM的磁盘区域,它使应用程序以为有更多内存可用。系统将.exe文件映射到地址空间,并使用写时复制技术处理可写页。当尝试修改共享页时,系统会在页交换文件中找到闲置页,复制内容并更新页面表,创建副本供进程使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在windows上的解析:

在这里插入图片描述
页交换文件:是磁盘上的一块区域, windows当RAM使用;

从应用程序的角度来说,页交换文件以一种透明的方式增大了应用程序可用内存(或存储器)的总量。如果一台机器装备了1 GB的内存,硬盘上还有1 GB的页交换文件,那么应用程序会认为可用内存的总量为2 GB。

数据进入内存过程

系统并没有从页交换文件中分配空间,而是将.exe文件的实际内容(或文件映像,即image类型)映射到一个地址空间(虚拟地址0x40000),并注明与该区域相关联的物理存储器就是.exe文件本身。

写时复制:

当系统把一个exe/dll 映射到一个地址空间后,系统会计算有多少页是可写的,然后系统会从页交换文件分配存储空间来容纳这些可写页;

当线程试图写入一个共享页时,系统会:

  1. 在虚拟内存中找到一个闲置页。(该闲置页就是上面说的,其后备页来自页交换文件)
  2. 把想要修改的内容复制到第一步找到的闲置页,并指定RW/ RWX 保护属性,系统不会对原始页的保护属性和数据做任何修改;(新页面不再以文件映像为后备存储器,而以页交换文件为后备存储页;)
  3. 然后,系统更新进程的页面表,这样一来,原来的虚拟地址现在就映射到内存中的一个新页面上了。进程就可以访问他自己的副本了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值