如果你是PCSofter的长期读者,你很可能是那些注意到一种奇怪现象的Windows用户之一:重启时按住Shift键不会触发完全的冷启动;相反,系统会做出一些略有不同的反应。
对于那些不熟悉的人来说,当用户在重启Windows 95时按住Shift键,系统的行为与完全冷启动时不同。Windows没有完全循环硬件,而是显示“Windows正在重启”,并尝试进行实质上的快速重启。从某种程度上说,这有点像微软在很久以后的Windows 8中引入的快速启动。如果你在Windows 11和10上尝试Shift + 重启,你会进入Windows恢复环境(WinRE)。
资深微软Windows开发者Raymond Chen解释了这一机制的工作原理。Raymond Chen在其“老新事物”专栏新发表的文章中指出,这种行为是旧的16位ExitWindows函数的一部分,当该函数接收到EW_RESTARTWINDOWS标志时就会出现这种情况。
如果你想知道的话,ExitWindows函数是一个遗留函数,用于注销交互式Windows用户,而顾名思义,EW_RESTARTWINDOWS参数则用于重启系统。
Raymond Chen解释说,关机序列首先从16位Windows内核本身开始,接着是32位虚拟内存管理器,然后CPU退回到实模式。微软发布详细的 Linux 安装指南
之后,控制权带着一个特殊信号“你能再为我启动保护模式的Windows吗?”回到引导程序“win.com”,从而指示它重新启动保护模式的Windows。因此,win.com中的代码会显示“请等待,Windows正在重启……”的消息,同时按请求尝试让系统重新启动。
如果你想弄明白的话,Win.com本质上是一个可执行文件,用于加载基于DOS的不同Windows版本,比如Windows 95。同时,实模式Windows是一种早期设计,旨在运行在资源最少的PC上,比如只有192KB内存和软盘驱动器的电脑,而保护模式Windows则像是完整的操作系统版本,具备内存保护、图形用户界面(GUI)等所有功能。
Raymond Chen指出,就其设计本质而言,.com文件在启动时会占用所有常规内存,但在win.com的情况下,它会释放未使用的空间,为保护模式的Windows创建一个大的连续内存块。因此,如果另一个程序碎片化了该内存空间,快速重启就无法成功,win.com会退回到完全重启。否则,快速重启会继续进行,重新创建虚拟机管理器并启动图形用户界面(GUI),给用户一种无缝快速重启的感觉。
然而,Raymond Chen补充说,这个过程并非毫无瑕疵,因为一些用户报告说,连续尝试两次快速重启会导致崩溃,而另一些用户似乎可以多次进行快速重启而没有问题。可能的解释是,某些设备驱动程序未能正确重置,留下了损坏的内存,这些内存只有在关机时才会显现出来。
如何在 macOS Sonoma 上使用垃圾箱