【发布时间】:2014-10-09 09:53:38
【问题描述】:
我在Measure time in Linux - getrusage vs clock_gettime vs clock vs gettimeofday? 上阅读了这个链接,它提供了 C 中可用的计时功能的详细分类
但是,我对操作系统/硬件如何维护不同的“时间”概念感到非常困惑。
这是the Linux man pages的引述,
RTC 不应与系统时钟相混淆,系统时钟是 由内核维护的软件时钟,用于实现 gettimeofday(2) 和 time(2),以及在文件上设置时间戳, 等等。系统时钟报告秒和微秒,因为 起点,定义为 POSIX Epoch:1970-01-01 00:00:00 +0000 (世界标准时间)。 (一种常见的实现计数定时器中断,每 “jiffy”,频率为 100、250 或 1000 Hz。)也就是说,它是 应该报告挂钟时间,RTC 也这样做。
RTC 和系统时钟之间的主要区别在于 RTC 运行 即使系统处于低功耗状态(包括“关闭”),并且 系统时钟不行。直到它被初始化,系统时钟 只能报告自系统启动以来的时间……而不是自 POSIX Epoch 以来的时间。 所以在启动时,从系统低功耗状态恢复后, 系统时钟通常会设置为当前挂钟时间 使用 RTC。没有 RTC 的系统需要设置系统时钟 使用另一个时钟,可能是通过网络或通过输入 手动数据。
Arch Linux docs 表示启动后 RTC 和系统时钟是独立的。那么我的问题是:
- 导致系统时钟递增的中断是什么原因???
- 如果挂钟时间 = 使用系统时钟的时间间隔,那么处理时间取决于什么??
- 这一切都与CPU频率有关吗?或者这是一个完全正交的计时业务
【问题讨论】:
-
它因 CPU 平台而异。内核树的体系结构特定部分每个都有特定的处理程序。也许您可以缩小问题范围?
-
@wallyk 我已经改写了整件事,哈哈
标签: linux time operating-system hardware