操作系统关机过程中会发生什么?

时间:2010-02-28 21:15:17

标签: operating-system

我希望这与编程有关。

在操作系统的关闭过程中究竟发生了什么,让我们将Linux作为其开源来源,并且可能有更多关于此的知识。

  • (如何)内核线程被终止?
  • 当电脑处于“清除”状态时,电源是否停止供电(上尉明显)?清楚状态的意思是CPU不再发生任何事情等等。

  • 为什么大多数操作系统需要很长时间才能关闭?我的意思是嘿,他们不需要初始化某些东西,甚至不需要将资源加载到内存中。

  • 为什么操作系统不会像“嘿,没关系 - 让我们终止所有流程结束只关闭电源”?

4 个答案:

答案 0 :(得分:7)

  1. 好吧,有时操作系统只是插拔。给'重启'正确的控制参数,然后 splat

  2. 如果对文件的修改是在内存中而不是刷新到磁盘怎么办?你可能想先把它们拿出来。

  3. 如果某个守护程序进程在文件的某些复杂更新中途发生了什么?您可能希望它完成。

  4. 如果一个守护进程需要告诉网络上的其他内容,它将会有条不紊地离开,该怎么办?

  5. 为了处理所有这些,操作系统具有有序的关闭程序。在linux上,您可以通过查看/etc/rcN.d来查看香肠,N = 0,1,2,3,4。

    以“K”开头的符号链接是关闭过程。

    在过程结束时,在现代硬件上,操作系统会以某种方式关闭电源。这意味着什么取决于硬件。

答案 1 :(得分:4)

最新的Mac OS X,Show Leopard,实际上做了一些相当有趣的事情:应用程序应该保持自己处于“稳定”状态,可以在没有警告的情况下终止它们。如果不是这种情况(在写入磁盘期间),则必须让操作系统知道。然后,当你要求它关闭,并且所有应用程序都处于“稳定”状态时,操作系统真的只是拉动插件(在明显的硬件相关关闭完成之后,例如将所有脏页写入磁盘,确保硬盘停止并停放等。)

大多数操作系统有时需要很长时间才能关闭的另一个原因是:你可能有很多应用程序在一段时间内没有使用,因此被换掉了。为了彻底关闭它们,操作系统向它们发送Terminate消息。但是为了让他们对此作出反应并安全退出,他们必须再次交换。这发生在磁盘忙于从其他进程写入数据的过程中......

答案 2 :(得分:3)

  
      
  • 当计算机处于“清除”状态时,电源是否停止供电(上尉明显)?清楚状态的意思是CPU不再发生任何事情,等等。
  •   

一旦所有进程都停止并且文件系统被卸载,内核就会向BIOS发送一个ACPI信号,关闭电源。

  
      
  • 为什么大多数操作系统需要很长时间才能关闭?我的意思是嘿,他们不需要初始化某些东西,甚至不需要将资源加载到内存中。
  •   

当关闭时,许多应用程序必须将其当前状态存储在文件系统上以供将来执行,并且文件系统必须将更改从RAM刷新到硬盘驱动器。

  
      
  • 为什么操作系统不像“嘿,没关系 - 让我们只是关闭所有进程结束只是关闭电源”?
  •   

因为您冒着让应用程序无法正确存储数据,甚至破坏其数据的风险。即使这不是问题,也可能是数据从文件系统的缓存中错误地刷新到硬盘驱动器,从而使系统的文件系统不一致。

你可以阅读最近的EXT 4/KDE 4 debacle,其中EXT 4在文件内容到磁盘之前刷新文件的元数据,KDE 4正在读取连续写入大量的小文件。如果您在写入期间碰巧硬关机,那么所有配置文件最终都会损坏/ FUBAR。

答案 3 :(得分:0)

我相信操作系统会调用ACPI或类似的电源管理功能来执行最终关闭命令。如果计算机不支持,那么Linux将暂停执行,并禁用所有网络。

不突然断电的原因是:

  1. 某些硬件想要干净地关闭 - 例如停车硬盘。
  2. 用户可能有未保存的数据 - 最好让所有应用关闭。