【问题标题】:timing mechanisms in computer systems计算机系统中的计时机制
【发布时间】: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 和系统时钟是独立的。那么我的问题是:

  1. 导致系统时钟递增的中断是什么原因???
  2. 如果挂钟时间 = 使用系统时钟的时间间隔,那么处理时间取决于什么??
  3. 这一切都与CPU频率有关吗?或者这是一个完全正交的计时业务

【问题讨论】:

  • 它因 CPU 平台而异。内核树的体系结构特定部分每个都有特定的处理程序。也许您可以缩小问题范围?
  • @wallyk 我已经改写了整件事,哈哈

标签: linux time operating-system hardware


【解决方案1】:

在 Linux 上,从应用程序的角度来看,time(7) 手册页给出了很好的解释。

Linux 还提供(特定于 Linux 的)timerfd_create(2) 和相关的系统调用。

您不应该关心中断(它们是内核的事务,并且是动态配置的,例如通过应用程序计时器 -timer_create(2)poll(2) 和许多其他系统调用 - 以及由调度程序) ,但仅与应用程序可见时间相关的系统调用有关。

可能,如果某个进程正在制作一个时间很短的计时器,例如10ms,内核会将定时器中断的频率提高到100Hz

在最近的内核中,您可能需要

CONFIG_HIGH_RES_TIMERS=y
CONFIG_TIMERFD=y
CONFIG_HPET_TIMER=y
CONFIG_PREEMPT=y

内核的.config 文件中的选项。

顺便说一句,您可以每隔 10 秒执行两次 cat /proc/interrupts。在我的笔记本电脑上使用自制的 3.16 内核 - 大部分是空闲进程,但有一个 firefox 浏览器和一个 emacs,我每秒收到 25 个中断。也可以试试cat /proc/timer_listcat /proc/timer_stats

同时查看最近(例如 3.16)Linux 内核树的 Documentation/timers/ 目录。

内核可能使用硬件设备,例如 -for PC 笔记本电脑和台式机 - 片上 HPET(或 TSC),它们比旧的 battery saved RTC 计时器要好得多。当然,细节是特定于硬件的。因此,在基于 ARM 的 Linux 系统(例如您的 Android 智能手机)上,情况就不同了。

【讨论】:

  • 我在尝试了解有关操作系统的更多信息时提出这个问题..所以我真的确实关心中断
  • 不,内核会根据需要配置中断。
  • 我不太明白最后一点。我真的只是想了解系统时钟主要是如何维护的。它是中断驱动的,所以一定是有什么东西导致了中断……但是什么?没看到内核是怎么配置这个的?
  • 进程调度器为内核做这件事!
  • @shekharsuman 进程调度依赖于可编程间隔计时器,而后者又依赖于系统时钟?
猜你喜欢
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多