夏令时在计算机上如何运行?

夏令时在计算机上如何运行?

我想知道计算机的时间芯片本身是否会更新时间,即使计算机已关闭(例如,BIOS 或 OS 发送一个命令,当达到某个时间时,您会向前/向后移动 3600 秒),或者 BIOS/OS 是否会在 DST 生效后第一次启动计算机时更新它?

答案1

IBM PC/AT 中使用的 MC146818 实时时钟芯片确实能够自行更改 DST。它只在美国正常工作,而且即使在那时也只正常工作了短短三年,直到法律发生变化,芯片电路中硬连线的 DST 规则不再与实际 DST 规则相匹配。这种在硬件中更新 DST 的功能几十年来一直未被使用过。

如果您的操作系统是 DOS Think 操作系统,那么操作系统会将 DST 更改应用于实时时钟,因此只有当机器完全启动并引导到操作系统时才会应用。然而,众所周知,该系统几乎同样长期存在严重且根本性的缺陷。自 1980 年代以来,在线论坛就一直在彻底讨论这个问题。

Unices 和类 UNIX 操作系统以 UTC 运行硬件 RTC,并且从不应用任何DST 会改变它。事实上,操作系统内核甚至没有 DST 的知识。内核和硬件始终以 UTC 运行,并且系统库函数TZ根据环境变量和广泛的磁盘时区数据库,将 UTC 转换为本地标准时间/夏令时。标准时间和夏令时之间没有切换。转换函数只是根据转换的时间产生正确的本地时间偏移量。

是的,BSD 和 Linux 可以以 DOS Think 方式运行,硬件时钟以 UTC 以外的时间运行。这不是一个特别好的主意,而且它还带来了许多额外的脆弱机制。例如,系统管理员必须systemd确保在运行之前将本地时间告知内核fsck,因为否则,时区早于 UTC 的用户会在系统启动期间遇到系统时钟倒退导致的奇怪行为。

进一步阅读

答案2

主板配有电池和时钟,即使计算机关闭时也能跟踪时间,但操作系统会根据设置确定何时向前/向后调整时钟。只有在操作系统运行时才会进行调整,或者在第一次启动后才会进行调整。

相关内容