【问题标题】:What happens during the shutdown process of an OS?操作系统关闭过程中会发生什么?
【发布时间】:2011-01-22 02:26:08
【问题描述】:

我希望这与编程足够相关。

在操作系统关闭过程中究竟发生了什么,让我们在这里将Linux作为它的开源,可能会有更多关于这方面的知识。

  • (如何)终止内核线程?
  • 当计算机处于“清除”状态时,电源是否会停止供电(船长明显)?我所说的清晰状态是指 CPU 中不再有任何事情发生,等等。

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

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

【问题讨论】:

  • 把它带到旧金山,根本不编程。
  • 更多 superuser.com 值得我。
  • 我在 SO 上已经有一段时间了。虽然只是对一些你不知道的东西感到好奇,但我的问题或多或少地被称为“家庭作业”。我认为这可能是这里拖钓的形式。 “听起来对我来说……”“我希望这不是你的作业”……(是的,我指着你那里)
  • 它显然是关于“如何编程操作系统”,所以绝对适合SO。也许不是你真的要建造一个,但肯定是一个有趣的问题 IMO。

标签: operating-system


【解决方案1】:
  1. 嗯,有时操作系统只是拔掉插头。给“重启”正确的控制参数,然后splat

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

  3. 如果某个守护进程正在执行某个复杂的文件更新,该怎么办?您可能希望它完成。

  4. 如果一个守护进程需要告诉网络上的其他东西它要离开以安排有序离开怎么办?

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      • 当计算机处于“清除”状态时,电源是否停止供电(船长明显)?我所说的清晰状态是指 CPU 中不再有任何事情发生,等等。

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

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

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        不做突然断电的原因是:

        1. 某些硬件想要完全关闭 - 例如。停放硬盘。
        2. 用户可能有未保存的数据 - 最好要求所有应用关闭。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-31
          • 2010-09-09
          • 2011-01-02
          • 2018-10-19
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          相关资源
          最近更新 更多