1

为什么有些软件需要system restartin windows?同时,我在基于 Linux 的发行版中从未遇到过这种情况。

4

2 回答 2

2

它是 Windows 设计方式与生俱来的。加载可执行文件不会将文件加载到 RAM 中。Windows 会为可执行文件创建一个内存映射文件。程序块仅在需要时才按需加载到 RAM 中。页面错误从文件中复制了 4096 个字节。RAM 页面本身不受页面文件的支持。如果其他进程需要 RAM,则 Windows 只需取消映射页面并丢弃其中包含的字节。如果进程再次登陆页面,则页面错误会从文件中重新加载 RAM。非常高效,当您需要在仅 16 兆字节的 RAM 中运行 32 位操作系统和许多进程时,这非常重要。今天仍然有效,但不像以前那么重要。

内存映射文件的一个副作用是它在文件上设置了写锁。有必要防止其他进程更改可执行文件。那将是灾难性的,RAM 可能在文件中包含新旧字节的混合。这肯定会导致程序出现故障。

当然,对于有意更改可执行文件的程序来说,这会变得更加困难。包括恶意品种顺便说一句。因此,必须停止加载文件的进程,它会释放写锁。通过 Windows Update 提供的更新往往会更新无法轻松卸载的可执行文件,因为它们是操作系统的一部分。这就是他们往往需要重新启动的原因,当机器重新启动时,文件会作为启动顺序的一部分进行更新。

绕过锁的一种方法是重命名文件。锁只保护文件数据,不保护目录条目。然后,您可以创建一个与旧目录条目同名的新目录条目。并且下次启动该过程时,它将使用新条目。一个小麻烦是您最终必须删除重命名的文件。

于 2013-08-06T13:08:59.593 回答
0

我能想到的一件事是,某些软件需要运行服务才能正常运行。重新启动可能会将这些服务添加到您启动计算机时自动运行的服务中,以便程序可以顺利运行。

于 2013-08-06T12:40:12.503 回答