搜索

5.2. POSIX 时钟

download PDF

POSIX 是用于实施和表示时间源的标准。您可以将 POSIX 时钟分配给应用程序,而不影响系统中的其他应用程序。这与内核选择并在系统中实施的硬件时钟不同。

用于读取给定 POSIX 时钟的功能是 clock_gettime(),它在 < time.h& gt; 中定义。kernel counterpart to clock_gettime() 是一个系统调用。当用户进程调用 clock_gettime() 时:

  1. 对应的 C 库(glibc)调用 sys_clock_gettime() 系统调用。
  2. sys_clock_gettime() 执行请求的操作。
  3. sys_clock_gettime() 将结果返回到用户程序。

但是,上下文从用户应用程序切换到内核具有 CPU 成本。尽管这种成本很低,但如果操作重复了数以千倍,但成本数量会给应用程序的整体性能造成影响。为了避免上下文切换到内核,因此可以更快地读取时钟,对 CLOCK_MONOTONIC_COARSECLOCK_REALTIME_COARSE POSIX 时钟的支持。

使用 _COARSE 时钟变体执行的 clock_gettime() 读取的时间无需内核干预,且完全在用户空间中执行。这会产生显著的性能。对 _COARSE 时钟读取的时间有毫秒(ms)解析,这意味着不会记录小于 1ms 的时间间隔。POSIX 时钟的 _COARSE 变体适合任何可容纳几秒时钟解析的应用程序。

注意

要将读取 POSIX 时钟的成本和解决方案与没有 _COARSE 前缀进行比较,请参阅 RHEL for Real Time 参考指南

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.