为什么有些文件在Windows 10上不可移动?

为什么有些文件在Windows 10上不可移动?

我正在尝试缩小我的分区。为了达到我需要的大小,我使用了 JKdefrag。我看到一些文件被标记为红色 - 不可移动,例如休眠系统页面文件系统

归根结底,它们只是文件,而我是管理员。我唯一能做的就是删除它们禁用

为什么它们不可移动?

笔记:我不是问如何禁用休眠系统页面文件系统等文件。我正在寻找它们不能移动的原因. 疑似重复问题的答案不包含原因。

答案1

某些系统文件在系统启动后无法移动,例如页面文件和注册表数据库文件。它们被 Windows 本身独占锁定,因此在 Windows 运行时无法移动或直接更新。

例如,Windows 运行时,页面文件由其在磁盘上的直接簇号引用。由于交换是影响系统性能的关键操作,因此当 Windows 想要执行或撤消交换时,它没有时间搜索磁盘和文件夹元数据。

使这些文件不可移动的另一个原因是它们对于 Windows 的运行至关重要,因此 Windows 对它们进行最大程度的保护,不允许任何不通过其专用实用程序或 API 的访问。

任何能够移动这些文件的产品都需要重新启动才能在 Windows 启动之前访问磁盘。

答案2

Raymond Chen 的一个有趣故事:

Windows 机密-文件系统悖论

简而言之:

这又是一个先有鸡还是先有蛋的问题:要加载休眠文件,您需要文件系统驱动程序,但文件系统驱动程序位于休眠文件中。如果您将休眠文件保存在启动驱动器的根目录中,则可以改用微型文件系统驱动程序。

答案3

休眠文件和页面文件是低级系统文件。两者都用于将系统内存 (RAM) 临时存储在非易失性存储器(磁盘或 SSD)上。

冬眠——也称为暂停至磁盘— 关闭计算机电源的同时保留其状态(例如,正在处理的文字处理器文件不必先保存)。当系统再次通电时,RAM 映像数据将从“休眠映像”中恢复,系统继续运行,就像根本没有断电一样。

分页是虚拟内存系统的核心特性,在这种系统中,每个程序都会产生一种错觉,即其进程专用内存空间就是计算机上的整个地址空间。这种错觉是通过将最近未使用的小块(通常为 4,096 字节,但有时更大 - 32 KiB、1 MiB、16 MiB、1 TiB)内存移动到磁盘,直到需要时才使用的。当程序访问已分页的内存时,操作系统内核会处理一个称为“页面错误”的低级 CPU 操作,将页面带回内存,然后在发生错误的指令处无缝恢复程序,以便它可以像页面一直在内存中一样执行。

分页和休眠都是在操作系统的最低级别实现的。因此,对于磁盘碎片整理程序来说,在可能正在使用这些文件时彻底移动这些文件的磁盘块既不方便又麻烦。为了大大简化可能执行此类操作的程序,识别这些文件并禁止此类操作会更容易。

答案4

此外,我认为值得在这里补充的是,有一个解决您原始问题的方法(允许您缩小分区)。

使用系统设置,您可以将页面文件设置为不同的驱动器并禁用休眠模式,因此弹出一个笔式驱动器来放置您的页面文件,然后您就可以重新启动,而那些不可移动的文件根本不存在。

相关内容