计算机如何知道 PC 没有正确关闭?

Fro*_*ing 92 shutdown operating-systems

事实上,这个问题让我感到震惊,因为我家停电了。停电时,计算机会突然断电。

计算机如何知道关机没有正确完成?

Dav*_*rtz 120

对于非基于 Windows 的 PC,检测通常在每个文件系统的基础上完成。当文件系统以读/写模式挂载时,一个条目被写入文件系统,标记为脏。卸载文件系统时,会写入一个条目,将其标记为干净。在启动时,操作系统检查其核心文件系统是否被标记为脏,如果是,它知道没有干净的关闭——至少那些文件系统是这样。

  • +1 因为问题不是询问特定的操作系统。 (29认同)

Chr*_*isF 103

Windows 还使用Dirty Bit方法来检测 PC 是否正常关闭:

当正常断电时,该位被关闭。但是,在断电或不当(强制)关机的情况下,下次启动 PC 时该位仍会亮起。

这意味着 Windows 可以建议补救措施 - 例如启动到安全模式。

此外,基于 Windows 的 PC 将在事件日志中写入一个条目,详细说明何时以及为什么(如果知道)它被关闭。它还会在 PC 启动时写入一个事件。

系统关闭

系统启动

当 PC 重新启动时,它可以检查事件日志,如果在上次“启动”事件后没有找到“关闭事件”,则它知道 PC 没有正确关闭,并且可能由于未保存出现问题数据等

  • 但是在意外断电情况下(显然没有 UPS),关机将是“意外”(由事件日志提及)。[这里的重要信息](http://superuser.com/q/194412/102661)`如果程序启动了一个 I/O 操作来改变 NTFS 卷的结构 - 即改变目录结构,扩展文件, 为新文件分配空间,等等 - NTFS 将该操作视为原子事务。它保证事务要么完成,要么如果系统在执行事务时失败,则回滚。` (3认同)
  • @HaydnWVN 文件系统脏位用于识别异常卸载,以便操作系统知道文件系统可能处于不确定状态,并可以运行诊断程序(例如`chkdsk`)来识别潜在的文件系统问题。这就是为什么有时在插入未正确移除的 USB 驱动器时会出现修复对话框的原因。相比之下,术语“脏位”仅表示在系统或设备运行时正确终止时设置并稍后取消设置的字段。不正确的终止会离开该字段集,因此在设备的下一次初始化时会识别出来。 (3认同)
  • 下面大卫的回答不是更准确吗?我认为 NTFS 有一个“脏位”,FS 在安装时会检测到它。我一直认为事件日志只是所发现内容的日志,而不是其背后的实际检测和推理? (2认同)

kre*_*eet 42

在 Windows 中,根据 Windows Internals, 5th ed. 的作者,它是 bootstat.dat 文件(默认位于系统分区的 \boot 目录中):

Windows 使用启动状态文件...来记录它在系统生命周期的各个阶段(包括启动和关闭)中的进展情况。这允许启动管理器、Windows 加载程序和启动修复工具检测异常关闭或无法正常关闭,并为用户提供恢复和诊断启动选项......

 

  • Mark Russinovich 和 David Solomon 与 Alex Ionescu 合着的“Windows Internals”,第 1010 页。 (23认同)
  • 报价来源? (3认同)