我想知道计算机的时间芯片本身是否会更新时间,即使计算机已关闭(例如,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 的用户会在系统启动期间遇到系统时钟倒退导致的奇怪行为。
进一步阅读
- 乔纳森·德·博因·波拉德(2009年)。DOS Think 的计时方式从根本上已经被打破。. 常见问题答案。
- Andrey A. Chernov (2012-03-08) 。
adjkerntz
。FreeBSD 9.2 手册页。
答案2
主板配有电池和时钟,即使计算机关闭时也能跟踪时间,但操作系统会根据设置确定何时向前/向后调整时钟。只有在操作系统运行时才会进行调整,或者在第一次启动后才会进行调整。