为什么Windows要如此频繁地重新启动?

如果说几乎每个人都对Windows有什么抱怨的话,那就是它想要如此频繁地重启。无论是用于Windows更新,还是仅在安装、卸载或更新软件时,Windows都会经常要求重新启动。

Windows通常必须重新启动,因为它不能在使用系统文件时修改它们。这些文件已锁定,只有在不使用时才能修改。

重新启动有什么作用?

Windows无法更新或删除正在使用的文件。当Windows Update下载新更新时,它无法立即将其应用于Windows系统文件。这些文件正在使用中,并且已锁定,不能进行任何更改。要真正安装这些更新,Windows必须关闭大部分操作系统。然后,Windows可以重新启动系统,并在引导时加载更新的文件。

在更新或删除某些类型的软件时,也可能需要重新启动。例如,如果您使用的是某种反病毒程序或深入系统的硬件驱动程序,则其文件将被加载到内存中并受到保护,以防修改。更新或删除正在使用的文件时,Windows可能需要重新启动计算机并在系统完全启动之前修改文件。

Windows Update重新启动

相关:阻止Windows在Windows更新后重新启动您的电脑

微软经常为Windows发布补丁,大多数补丁都会在每月的第二个星期二“补丁星期二”(Patch Tuesday)发布。这些更新中的大多数都会修改Windows运行时无法更新的系统文件,因此它们需要重新启动。然而,并不是每个Windows Update都需要重新启动。例如,Microsoft Office的更新应该不需要重新启动-这些文件可以通过重新启动Office从内存中卸载。

Windows会麻烦您重新启动,因为安全更新只有在您安装之后才会实际安装。早在Windows XP早期,微软就引入了弹出窗口,让您无法重新启动计算机,甚至可以自动重新启动计算机,当时Blaster、Sasser和Mydoom等蠕虫正肆虐。微软希望确保每个人在获得更新后都能快速重启,这样他们就不会被感染。如果人们等待数天或数周后才重启,并在此期间被感染,更新将无济于事。

安装、卸载或更新软件

软件程序有时会在您安装、卸载或更新时重新启动计算机。这可能是因为它们使用不能动态更新或删除的低级系统文件和驱动程序。例如,假设您卸载了防病毒程序。卸载程序可能无法立即删除所有文件,因此您需要重新启动。卸载程序将安排文件删除,Windows将在下次计算机启动时自动删除这些文件。

某些程序可能还希望您在安装后重新启动。例如,当您安装防病毒软件时,它可能会要求您立即重新启动,以便监视启动过程。某些低级硬件驱动程序可能需要重新启动才能正常工作。当然,也有可能一些程序安装程序可能会要求您在不需要时重新启动。

Windows如何安排在重新启动时移动和删除文件

Windows提供了应用程序开发人员可以用来移动、重命名或删除正在使用的文件的API。应用程序要求Windows在计算机下次重新启动时重命名或移动文件,并且该请求将写入注册表中的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations值。当Windows启动时,它会检查此注册表项,并执行程序要求的任何文件操作。

相关:如何在Windows中删除、移动或重命名锁定的文件

您可以使用PendMoves和MoveFile Sysinterals实用程序查看挂起的文件更改列表,并安排您自己的移动和删除。这允许您删除和移动由于当前正在使用而无法删除的文件。还有其他提供在重新启动时移动或删除文件的实用程序,它们都是通过写入此Windows注册表项来工作的。一些实用程序还允许您解锁锁定的文件并删除或移动它们,但如果您尝试解锁和修改系统依赖的文件,这些实用程序会导致问题。

那么Linux和其他操作系统呢?

如果您曾经使用过Linux或其他操作系统,您可能已经注意到Windows想要比它更频繁地重启。即使在安装了系统更新之后,Linux也不会像Windows那样困扰您重新启动。这是真的,但并不是那么简单。

在Windows上,正在使用的文件通常是锁定的,无法修改或删除。在Linux上,通常可以修改或删除正在使用的文件。这意味着,在Linux系统上,无需重新启动即可立即更新这些系统库文件。任何正在使用的文件都可能被立即删除。

相关:什么是Linux内核,它是做什么的?

这里有一个问题:在您重新启动之前,更改不一定会生效。例如,如果安装系统库的更新,磁盘上的文件将立即更新,但使用该库的任何运行进程仍将使用旧的、不安全的版本。如果更新程序,则在关闭并重新启动该程序之前,不会使用该程序的新版本。如果您安装了一个新的Linux内核,那么在重新启动计算机并引导到新内核之前,您将不会使用新的内核。有一些方法可以在不重新启动的情况下切换到新内核,但这些方法通常不在消费者Linux系统中使用,而更多地用于需要最长正常运行时间的服务器。

换句话说,为了确保重要的更新在Linux上生效,通常仍然需要重新启动。当然,如果您正在运行服务器,并且正常运行时间对您很重要,您可以通过重新启动受影响的进程来避免需要更新。但是,如果您是一个普通的桌面用户,您可能只想重新启动您的计算机。

好消息是,随着时间的推移,重启变得不那么必要了。Windows现在可以换出多种类型的驱动程序,例如图形驱动程序,而无需重新启动系统。现代安全功能(如启用Windows防火墙)使Windows更加安全,因此Windows8为Windows更新后的重启提供了三天的宽限期。

图片来源:安德斯·桑德伯格(Anders Sandberg)/Flickr

相关文章