5.2. POSIX 时钟


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

用于读取给定 POSIX 时钟的功能是 clock_gettime (),它在 < time.h > 定义。内核与 clock_gettime () 是系统调用。当用户进程调用 clock_gettime () 时:

  1. 对应的 C 库(glibc)调用 sys_clock_gettime () 系统调用。
  2. sys_clock_gettime () 执行请求的操作。
  3. sys_clock_gettime() returns the result to the user program.

但是,从用户应用程序切换到内核的上下文会有 CPU 成本。尽管这种成本非常低,如果操作重复了数以千计的时间,但累计成本可能会对应用程序的整体性能产生影响。为了避免上下文切换到内核,从而可以更快地读取时钟,支持 CLOCK_MONOTONIC_COARSECLOCK_REALTIME_COARSE POSIX 时钟,格式为虚拟动态共享对象(VDSO)库功能。

使用其中一个 _COARSE 时钟变体执行 clock_gettime () 执行的时间读取,不需要内核干预,完全在用户空间中执行。这带来了显著的性能提升。读取 _COARSE 时钟的时间读取具有毫秒(ms)解析,这意味着不会记录时间间隔小于 1 ms。POSIX 时钟的 _COARSE 变体适合可容纳数毫秒时钟解析的任何应用程序。

注意

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部