引用https://wiki.archlinux.org/title/System_time:
大多数操作系统的标准行为是:
- 在启动时从硬件时钟设置系统时钟。
- 保持系统时钟的准确时间,请参阅#时间同步。
- 在关机时从系统时钟设置硬件时钟。
谁负责在关机时从系统时钟设置硬件时钟的最后一步?
引用https://wiki.archlinux.org/title/System_time:
大多数操作系统的标准行为是:
- 在启动时从硬件时钟设置系统时钟。
- 保持系统时钟的准确时间,请参阅#时间同步。
- 在关机时从系统时钟设置硬件时钟。
谁负责在关机时从系统时钟设置硬件时钟的最后一步?
责任是“操作系统”的。实施方式各不相同。
有两种情况需要考虑:
如果系统唯一的时间源是 RTC,则不需要更新它,除非设置了时间。在 Linux 上,这通常由
hwclock
或处理timedatectl
。如果系统有外部时间源(通过网络),则应该更新 RTC。在 Linux 上,这曾经在关机时处理(使用),但如果系统时间使用外部源维护并且 RTC 配置正确
hwclock
,内核(自 3.7 起)可以每 11 分钟自动更新一次RTC。在 Linux 上,内核期望时间同步服务报告时间是否同步;这是通过使用系统调用清除或设置状态位来完成的
STA_UNSYNC
adjtimex
。如果内核确定时间未同步,内核本身可以设置该位,但它永远不会自行清除它。