如您所知,如果您的物理 RAM 用完,页面文件将用作缓冲区。
但是,除非 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\ClearPageFileAtShutdown = 1,否则关机后不会清除页面文件。
当系统再次启动时,Windows 如何知道不应将上次启动的数据交换到 RAM 中?假设是断电,系统仍然必须知道何时是“新启动”?
每次启动时都会删除并重新创建页面文件,这需要覆盖存储页面文件的磁盘部分以确保其为空?
或者它是页面文件内部的某些数据结构,可确保 Windows 知道什么属于当前启动会话?
答案1
您可以将页面文件视为内存的扩展,因此可以应用与内存相同的机制。
物理和虚拟内存中的每个页面要么正在使用,要么未使用。正如您不会期望操作系统认为物理内存中未使用的页面包含有意义的内容一样,您也不会期望它认为虚拟内存(页面文件)中的页面包含有用的内容并触发“交换”。
在冷启动时,所有内存(包括实际内存和虚拟内存)都被视为空的。因此,除非页面文件中的页面在此会话中已被换出,否则不会将其换入。这是内存管理器的功能,用于了解哪些页面包含数据以及哪些进程拥有它们。
ClearPageFileAtShutdown 键的作用不是确保页面文件为空,以免在不该使用时无意间使用。而是确保页面文件清零,这样如果机器落入他人之手,页面文件就不会被检查是否有敏感信息。这是一项安全措施。