挂钟时间通常由系统RTC提供。这主要只提供时间到毫秒的范围,通常具有10-20毫秒的粒度。然而,

gettimeofday()的分辨率/粒度通常为

reported到几微秒。我假设微秒的粒度必须从不同的来源获取。

gettimeofday()的微秒分辨率/粒度是如何实现的?

当从RTC取下毫秒的部分,从不同的硬件中取出微秒时,就会产生两个相位相位的问题。两个来源必须以某种方式同步。

这两个源之间的同步/定相如何实现?

编辑:从我在amdn提供的链接中阅读,特别是以下Intel链接,我会在这里添加一个问题:

gettimeofday()是否在微秒制度中提供分辨率/粒度?

编辑2:总结了amdns answer的更多结果:

Linux在引导时仅使用实时时钟(RTC)

与更高分辨率的计数器同步,例如时间戳计(TSC)。在引导后,gettimeofday()返回完全基于TSC值和该计数器的频率的时间。通过将系统时间与外部时间源进行比较来校正/校准TSC频率的初始值。调整由adjtimex()功能完成/配置。内核操作锁相环,以确保时间结果是单调和一致的。

这样可以说gettimeofday()具有微秒的分辨率。考虑到更现代的Timestampcounter在GHz系统中运行,可获得的解决方案可能在纳秒制度。所以这个意义很大的评论

/**

407 * do_gettimeofday - Returns the time of day in a timeval

408 * @tv: pointer to the timeval to be set

409 *

410 * NOTE: Users should be converted to using getnstimeofday()

411 */

可以在Linux/kernel/time/timekeeping.c找到。这表明可能会有

是更高分辨率的功能,可在稍后的时间点使用。现在getnstimeofday()仅在内核空间中可用。

然而,通过查看涉及的所有代码来了解这一点,显示了不少关于不确定性的评论。可能获得微秒分辨率。函数gettimeofday()甚至可以在微秒状态下显示粒度。但是,由于TSC频率的漂移不能被准确地修正,所以存在严重的准确性。在Linux内部处理这个问题的代码的复杂性也是一个暗示,相信它实际上太难了。这是特别的,但不仅仅是由Linux应运行的大量硬件平台引起的。

结果:gettimeofday()以微秒的粒度返回单调时间,但它提供的时间几乎不会与任何其他时间源相对于一微秒。

linux 内核 微秒,如何获得linux的gettimeofday()的微秒时间,它的准确度是多少?相关推荐

  1. 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )

    文章目录 一.堆内存管理 二.内存描述符 mm_struct 结构体 三.mm_struct 结构体中的 start_brk.brk 成员 一.堆内存管理 Linux 操作系统中的 " 堆内 ...

  2. 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )

    文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...

  3. linux内核学习之三:linux中的32位与64位

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  4. 一文了解linux内核,一文了解Linux的系统结构

    什么是 Linux ? 如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版.在查看Linux软件包时,你肯定被发行版.LiveCD和GNU之类的术语搞晕过.初次进入Li ...

  5. Linux内核入门-如何获取Linux内核源代码、生成配置内核

    如何获取Linux内核源代码 如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包.除 ...

  6. 在win10查看本机linux的文件,Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件...

    原标题:Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件 来源:创事记 终于!在Windows里可以访问Linux文件了. 这表明,微软插入开源界的触角,越来越深入 ...

  7. linux内核培训广州,嵌入式Linux驱动开发高级培训班-华清远见嵌入式培训中心

    课程目标 本课程以案例教学为主,系统地介绍Linux下有关FrameBuffer.MMC卡.USB设备的驱动程序开发.参加本课程学习的学员,因为具备了Linux设备驱动开发基础,所以本课程针对性较强, ...

  8. 搭建《深入Linux内核架构》的Linux环境

    搭建<深入Linux内核架构>的Linux环境 阅读目录(Content) 作者 软件 概述 正文 一.安装GCC 二.编译Linux内核 三.制作跟文件系统 四.运行qemu 五.启动l ...

  9. linux内核启动分析 三,Linux内核分析 实验三:跟踪分析Linux内核的启动过程

    贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 ...

  10. linux内核 lts长期演进,Linux Kernel 4.19 将成为下一个LTS(长期支持)系列

    最近Linux内核开发人员和维护人员Greg Kroah-Hartman透露,Linux Kernel 4.19将下一个长期支持的Linux内核系列. 现在Linux Kernel 4.17已经达到使 ...

最新文章

  1. Android JNI简单实例(android 调用C/C++代码)
  2. iOS-自定义导航栏后侧滑返回功能失效
  3. M1 Mac 是否入手,先了解这些常用软件兼容性!!
  4. 【DSP】win10安装CCS5.5教程及报错解决方法
  5. 流水号(自动编号)生成相关问题(并发、事务)及解决方案
  6. 任务态fMRI的实验设计方法及注意事项有哪些?—重温经典文章的点滴思考
  7. slidebox使用教程 设定焦点数量
  8. python:talib 计算 SAR
  9. AWS的十条军规: 过去十年的经验总结
  10. Sprite Atlas与Sprite Mask详解
  11. CoordConv:An intriguing failing of convolutional neural networks and the CoordConv solution
  12. Visual Studio 2022 中的键盘快捷方式
  13. NO-SQL(非关系型)数据库性能横向比较
  14. python少儿编程008:海龟绘图画出奥运五连环!
  15. 入门必学的sql语句
  16. 湖南大学数据库实验一
  17. Linux系统网络管理1
  18. 用STK导入段时间TLE数据
  19. RGB图像转换为BGR
  20. 结对项目——自动生成小学四则运算题目的命令行程序(基于Python)

热门文章

  1. 打通企业的“韧”督二脉,戴尔科技赋能数智远见者
  2. 不同数据集格式转换处理
  3. 博图V16之西门子840D sl软件配置
  4. VC Timer 用法
  5. qt播放音乐报错DirectShowPlayerService::doSetUrlSource: Unresolved error code XXXXXX
  6. [论文笔记随手] Training with Weighted Sum of Denoising Score Matching Objectives
  7. 【Keil】Error: Flash Download failed - Target DLL has been cancelled
  8. Few-Shot Learning
  9. Error: #260-D: explicit type is missing (int assumed)的解决方法
  10. 可以测试人未来的长相软件,预测未来长相软件