为什么操作系统可以选择关闭?[重复]


10

Windows 98关闭屏幕
(来源:ytimg.com

我想知道为什么操作系统要求我们使用选件关闭。为什么不能只用机械开关关闭电源?

如果不使用OS选件不断关闭计算机,是否会损坏硬件或破坏数据?

需要说明的是:我想使用Intel Compute Stick作为连接到投影仪的媒体播放器,因此它将由电子开关控制。计算机将仅运行视频,而不会安装程序。电脑无法上网。


30
您的研究告诉了您什么?Google快速搜索“为什么我需要关闭计算机而不是关闭电源”会找到很多答案...是的,您可以损坏硬件,但是风险很低,但是绝对有机会破坏或丢失数据。
acejavelin

1
如果您的硬件支持此功能,并且您正在使用的系统以只读模式完全访问任何存储,并且系统未运行必须通过某些步骤关闭的硬件(例如某些电视调谐器卡,调制解调器等), ,那么切断电源就没有问题。但是,这类系统很难找到。
Daniel Jour


1
较旧的硬件不能承受突然的断电。但是现代硬件可以承受突然的功率损耗。桌面系统往往需要有序关闭。嵌入式系统可以承受突然的功率损耗。嵌入式Linux通常使用JFFS2和UBIFS文件系统。“ UBI(请参阅此处)和UBIFS都可以承受断电,并且在设计时考虑到了这种特性。” 。请注意,这些是可读写文件系统。
锯末

1
@DrZoo如果在没有ATX电源的系统上运行,则在XP中(仍然)相同。我用一些测试套件,内置了标准的XP专业版的电脑。
克里斯^ h

Answers:


41

这取决于您选择突然切断电源时系统的状况。如果系统忙于写入重要数据而您断电,则可能会损坏数据或破坏操作系统。许多事情正在发生,而您却看不到。当您进行硬重置时,您通常会担心与软件相关的某些问题。至于硬件,您应该不会遇到任何问题。敲木头

您不想绕过关机方法并切断电源就养成习惯。直到出现问题并导致您必须重新安装操作系统,这只是时间问题。

在某些情况下,硬重置是唯一的选择。如果您的计算机锁定了,而您又无法执行任何其他选择,该怎么办?

该屏幕的来源来自Windows 9X Systems,当Windows成功关闭MS-DOS但未配置为再次返回到提示(COMMAND.COM)时,将显示该消息。在具有适当的ACPI支持和ATX电源的系统上,PC可能会掉电。

在任何要进行硬重置的情况下,请确保在您的PC 上大喊“ 我是电力之王!!!请告诉谁是老板。


26
最后一行...可悲的是,当它是虚拟机时,不会有相同的感觉
Burgi

14
@Burgi“ 我是电力大亨!* ”-固定吗?
corsiKa

5
@Burgi“ 我是位之王!!
hBy2Py

5
对于硬件,我的理解是拔下电源会导致硬盘驱动器“紧急停车”。虽然这通常可以防止驱动器损坏,但与普通(命令)停车相比,硬盘的紧急停车数量要少得多,因此驱动器的磨损可能会更快。
Nate Eldredge'3

6
在现代的日志文件系统上,正常情况下您不必重新安装操作系统。但是,您可能会丢失许多您认为已保存到磁盘的应用程序数据。
凯文

27

计算机被设计为快速。这可能包括作弊。例如,当计算机应该写入数据时,计算机可能会将数据存储在RAM中,而不是将其写入硬盘。这样做是因为RAM快得多。

关机会告诉计算机刷新缓冲区,这意味着停止将内容存储在RAM中并为系统断电做准备。如果在确保正确写入所有此类数据之前实际上断电,则可能会丢失数据。

文件系统卷结构的部分细节由操作系统的文件系统处理代码(有时称为文件系统驱动程序)处理。通常,文件系统使用表。(在视觉上,您可以像图表一样想到这些。)想象一下,如果您要写一个乘法表,它说:
2 4 6 8 10 12 14 1

首先,每一列只有一行。乘法问题应该分为三个部分(两个数字相乘(被乘数和乘数)和一个答案(乘积))。在这里,我们所看到的只是一堆单数,所以我们甚至没有一个乘法乘积的完整示例。我们拥有的是无用的。

其次,我们拥有的实际上比没有用的更糟。有时候,唯一比丢失信息更糟糕的事情(导致您在寻找所需信息时无法取得进展)是令人信服的误导性信息,该信息会导致您花费资源,使资源往无用的,错误的方向发展。在这种情况下,到最后将有无效数据:一个而不是16。(此处的想法是,在正确记下整个数字“ 16”之前,图表突然停止了更新。)计算机正确完成其图表后,可能会造成混乱。(如果计算机被告知要更新某些数据,并且它应该写入第16个位置……您不希望它写入第1个位置!)计算机依赖于本质上与此类似的表。

另一个示例是虚拟内存。如果计算机的RAM用完了,它可以使用硬盘驱动器上的空间来跟踪详细信息。例如,也许您在文字处理器中有一个五十页的文档。计算机一直在跟踪文字处理器处于打开状态,并一直在跟踪前12页,但其余38页存储在硬盘驱动器上,即所谓的“虚拟内存”。当您关闭计算机时,计算机将完成关闭程序的整个过程,这将释放一些RAM,并最终使用“虚拟内存”正确处理文字处理器。如果您只是断电,则文字处理器将停止运行(因为一切都停止了)。然后,当计算机启动时,它看到虚拟内存中有来自在字处理器中打开的文档的38页中的数据。计算机甚至都不知道文字处理器正在使用该数据。当计算机能够跟踪这些详细信息时,关机可以解决这些问题。

与Windows 95相比,MS-DOS在突然断电时更具弹性(不易出现问题)。(某些增加的漏洞是由于Windows 95具有执行多任务和处理虚拟内存的能力。)因此,计算机对无效关机的敏感度,甚至根本不需要正式的关机程序,都取决于所使用的操作系统。大多数现代操作系统的设计都依赖于要求适当的关闭,因为根据这种要求,操作系统更易于设计。没有必要一定要这么做,事实上,某些操作系统nanobsd确实允许人们关闭电源。举一个例子,nanobsd上的页面显示 “所有内容在运行时都是只读的-拔下电源插头很安全。”resflash的主页上有一个要点:“可以随时安全地断电”。因此,没有理由不要求操作系统设计人员在创建操作系统设计时就必须绝对关机。关机只是一个很普遍的要求。


1
“然后,当计算机启动时,它会看到虚拟内存中有来自在文字处理器中打开的38页文档中的数据。” -不会在乎,它将把它当作垃圾数据处理,直到被覆盖后才使用。(因为您期望在那里?它永远不会有用)
user253751

1
“它不在乎,会将其视为垃圾”-是的。这就是为什么我的下一个句子(在您引用的句子之后)说:“计算机甚至都不知道字处理器正在使用数据。” 它忘记了这一事实。
TOOGAM '16

我的意思是那不会造成任何问题。
user253751'3

大多数现代操作系统都是经过设计的……按这样的要求更易于设计 ”。IMO这太过简单了。我们可以避免关机,但代价是非常昂贵的。没有缓存,也没有办法通知后台进程(服务器,备份管理器,更新)。同样,现代硬件不再与PIO一起使用,而是与DMA一起使用,您告诉HDD和NIC从RAM读取数据,并在完成时通知您。如果HDD之间的电源丢失了,则将其从缓存写入板中怎么办?让操作系统决定延迟关闭的时间。它知道得更好。
玛格丽特·布鲁姆

5

在MS-DOS时代,关闭计算机电源通常会导致丢失保存在RAM中但未存储在磁盘上的任何信息,但不会影响存储在磁盘上的信息。但是,将信息存储在磁盘上的行为通常会使旧信息变得不可读,至少在新版本可读之前。从旧版本被销毁到新版本的书面之间的断电将使一个版本没有任何信息。如果所讨论的信息类似于目录结构,则可能实质上无法访问磁盘的大部分区域。

如果使用的是仅在明确要求时才将信息写入磁盘的软件,则前提是该软件不会在要求系统将数据写入磁盘后立即关闭电源,则不应意外破坏磁盘上的任何信息。但是,现代系统通常具有一个或多个任务,这些任务可能会在用户不一定期望的时间开始将信息写入磁盘。如果系统恰好在用户关闭电源之前开始写一些信息,则可能导致磁盘损坏和数据丢失。

选择“关机”的部分目的是消除系统自发地启动任何将数据写入磁盘的操作的可能性,就像用户将要断电一样。在显示“您现在可以关闭计算机”消息之前未触发的任何操作,只有在系统重新启动后才能触发,因此,没有任何危险,只要用户拔下插头即可。


1
即使在DOS时代,这也是一个非常糟糕的主意。如果文件已更新,但FAT尚未更新,那么您将得到损坏的文件。
Dewi Morgan

1
@DewiMorgan:在DOS时代,有一些实用工具可用于回写缓存,但是我记得每个独立版本的DOS都使用直写式缓存作为其正常行为。否则,该怎么办才能通知系统一个要关闭的系统?
超级猫

3
@DewiMorgan:我知道一些旧的硬盘驱动器有停车库实用程序,但是在Windows 95取代DOS之前,它们已经过时了。
超级猫

1
超级猫:不,除非您运行捆绑的SmartDrv之类的软件,否则MS-DOS不会进行这种缓存。您将使用来通知系统已关闭SmartDrv/C。(我相信关于写缓存的默认行为在MS-DOS 5.0和6.22之间是不同的...我不应该立即记住是是5.0-> 6.0升级还是进行了更改的更高版本)。如果没事,以后的升级之一(从6或更高版本开始)会导致SmartDrv自动执行此操作,然后让Command.Com再次显示提示,因此可以安全地在提示时关闭电源
TOOGAM

1
@Supercat据我了解,直写式缓存可保护单个数据块免于写期间损坏。如果在写一个和另一个之间切断电源,它不能保护两个不同的块(FAT和文件内容)不同步。
德维·摩根

4

计算机系统需要有序关闭的主要原因有两个:

应用状态

许多应用程序具有必须写入永久存储的状态。一个明显的例子是数据库服务器,但是即使是大多数只读应用程序(例如Web或NTP服务器)也可能写入日志或统计信息,如果写入中断,这些日志或统计信息可能会难以理解。

如果有问题的应用程序不直接读取或写入文件,而是通过事务机制(例如,写入关系数据库)执行这些操作,则可以缓解此问题。

文件系统结构

当操作系统代表应用程序写文件时,写操作可能会被缓冲,直到磁盘赶上为止,这意味着应用程序的写操作并不一定要等到之后的一段时间。节能机制往往会增加此处的延迟,因此您需要在能耗和数据安全性之间进行权衡。

在将数据写入磁盘的同时,在某些地方文件系统数据不一致。现代文件系统实现会尽量缩短周期,但不能完全消除它们。例如,当从空闲列表中取出一个块时,会出现一个短窗口,在该窗口中既没有分配也没有空闲。这个一致性问题就是为什么在不正常关机之后,操作系统将需要在下次启动时执行文件系统检查,以检查所有块并确保正确地说明了它们。

通过在实际执行更改之前将预期的更改记录到日志中,日记文件系统在某种程度上缓解了这种情况。然后,通过重播所有完整的日志条目并丢弃不完整的日志条目,文件系统检查可以更快地运行。

可以通过没有本地磁盘和NFS挂载根文件系统来避免文件系统一致性问题,但是对于这些系统而言,丢失缓存写入仍然是一个问题。我愿意在不关机的情况下进行硬关机的唯一系统是那些装有只读磁盘的系统(主要是嵌入式系统,例如我的Empeg Car音乐播放器,但还有几个我没有躺在网上浏览终端的磁盘)。访客)。

TL; DR

在关闭电源之前,必须完成对永久存储的数据写入。如果没有可写存储,则断电的风险很小。


-1

因为如果打开某些描述符文件,可能会损坏重要文件并导致操作系统死机


15
欢迎来到超级用户。新用户常犯的一个常见错误是,在没有详细说明如何实际解决问题的情况下进行回答。答案应该详细,并根据需要提供参考。请花几分钟来编辑您的答案,以包括您的答案为何有效的详细信息。如果您需要帮助,请阅读如何写一个好的答案?
CharlieRB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.