计算机如何在崩溃之前保存信息?

计算机如何在崩溃之前保存信息?

我以为,当计算机崩溃时,就会出现问题并且无法继续运行。

我想知道计算机如何在崩溃之前保存信息?

计算机是否真的能够知道什么时候会崩溃(从而通知所有进程:“尽快保存,因为我快要崩溃了“)?

Chrome如果不是,那么像和这样的程序如何Microsoft Word能在计算机崩溃后提供“恢复”服务呢?

答案1

当计算机“崩溃”时,可能是由于“突然”断电(在这种情况下什么也做不了),可能是由于某种令人讨厌的内部事件(例如,损坏的页表)同样阻止执行任何操作,或者可能是由于某种情况以某种方式简单地阻止“进一步操作” - 也许无法启动新进程,也许无法更新显示,也许系统只是耗尽了存储空间。

在后一种情况下,操作系统仍然可以在限制范围内运行,并且至少可以完成正在进行的磁盘操作、很好地关闭文件等。此外,如果可以实现更多功能,操作系统可能能够告诉各种应用程序进程干净地关闭自身。

但即使系统“严重”崩溃,整个系统和各个应用程序仍可能维护一个“日志”和/或“检查点”系统,以允许整个系统和各个应用程序的状态恢复到“原子”点,其中所有内容都是“内部一致的”,并且只有最少的重要数据丢失。

这一切不是通过单一机制实现的,而是通过系统和应用程序级别的多层功能实现的。

具体到电源故障,可能会提前通知,也可能不会,而“提前”警告可能是几分之一秒,也可能是(UPS 或笔记本电脑电池故障)几分钟。能做什么取决于警告的量。

在大多数情况下,对于没有 UPS 的台式机系统,最好有时间“停止”磁盘操作,这样当电源最终消失时,没有磁盘正在写入。这可以防止在磁盘上产生坏扇区。以前,当 RAM 要小得多时,在断电之前可以有足够的时间(电源中有大电容器,甚至奇怪的是使用存储在磁盘驱动器转子中的能量来发电)将 RAM 写入磁盘,但当 RAM 超过 100M 左右时,这种可能性几乎消失了。

[请注意,在过去,当内存由磁性“芯”制成时,RAM 在断电时本质上是可以保存的(尽管断电时读取/写入的特定字可能会损坏)。这使得那些旧系统更容易从断电中恢复。]

但是,如果使用类似 UPS 的设备(可以提供几分钟到几个小时的额外电力),则还有更多选择。一种是简单地关闭系统,就像您请求“关机”一样。这会导致每个应用程序自行结束,然后整个系统会写出永久表并关闭。这可能需要很长时间(我相信你们很多人都注意到了)。但也可以使用“休眠”策略,其中 RAM 作为单个块写入磁盘,然后系统关机。在“休眠”场景中,恢复供电后,RAM 会被读回到写入时的准确位置,这里和那里的一些位会被调换,然后执行会从中断的地方恢复。

在一些较旧的“大型”系统上,半休眠策略用于紧急关机:内存将按上述方式写入,但当电源恢复并读入内存时,将发生标准关机。这样做是因为某些系统状态(特别是在 I/O 控制器中)无法可靠地保存/恢复以允许继续运行。

答案2

Chrome 和 Microsoft Word 会在您工作时定期保存您的当前状态。如果应用程序或计算机崩溃,则当应用程序重新启动时,它们会在磁盘上查找已保存的状态并为您恢复。它们不需要预测崩溃;它们会不断保存您的状态以防出现问题。

答案3

编辑:这仅在应用程序崩溃时才有效,而不是 Windows。

从 Windows Vista 开始,有一个新的 API,允许 Windows 在应用程序崩溃时调用应用程序中的一个特殊函数,以便它可以在关闭之前尝试恢复任何数据。它的工作原理如下:

  • 应用程序启动
  • 应用程序调用Windows函数:当我崩溃时请执行RecoverData()
  • ...
  • 应用程序崩溃
  • WindowsRecoverData()在应用程序中执行
  • RecoverData()尝试检索有关当前打开的文档的数据,同时它不断 ping Windows 以告知它仍在忙于恢复。
  • RecoverData()完成/超时/停止 ping 时,Windows 将终止应用程序并重新启动它。

更多信息: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373351(v=VS.85).aspx

答案4

这取决于崩溃的严重程度。非常严重的崩溃(在计算机的最低级别)将导致计算机完全停止运行。唯一节省的工作是每个应用程序定期自动保存其数据。

对于不太严重的崩溃,计算机将警告每个程序需要关闭。如果程序会监听这个消息,程序会把当前数据保存在这里。但是并不是所有的程序都会关注这个消息。

相关内容