当前位置: 首页 > news >正文

JJJ:linux时间子系统相关术语

文章目录

    • 墙上时间
    • 内核管理的各种时间
    • 无时钟滴答模式(tickless mode 或 no-tick mode)
      • 简要介绍
      • 具体实现
        • 动态时钟滴答 Dynamic Ticks
        • 完全无时钟滴答(Full Tickless)
    • nohz sleep
    • 单触发模式 oneshot mode

墙上时间

真实世界的真实时间

内核管理的各种时间

RTC时间
在PC中,RTC时间又叫CMOS时间,它通常由一个专门的计时硬件来实现,软件可以读取该硬件来获得年月日、时分秒等时间信息,而在嵌入式系统中,有使用专门的RTC芯片,也有直接把RTC集成到Soc芯片中,读取Soc中的某个寄存器即可获取当前时间信息。一般来说,RTC是一种可持续计时的,也就是说,不管系统是否上电,RTC中的时间信>息都不会丢失,计时会一直持续进行,硬件上通常使用一个后备电池对RTC硬件进行单独的供电。因为RTC硬件的多样性,开发者需要为每种RTC时钟硬件提供相应的驱动程>序,内核和用户空间通过驱动程序访问RTC硬件来获取或设置时间信息。

xtime
xtime和RTC时间一样,都是人们日常所使用的墙上时间,只是RTC时间的精度通常比较低,大多数情况下只能达到毫秒级别的精度,如果是使用外部的RTC芯片,访问速度也比较慢,为此,内核维护了另外一个wall time时间:xtime,取决于用于对xtime计时的clocksource,它的精度甚至可以达到纳秒级别,因为xtime实际上是一个内存中的>变量,它的访问速度非常快,内核大部分时间都是使用xtime来获得当前时间信息。xtime记录的是自1970年1月1日24时到当前时刻所经历的纳秒数。

monotonic time
该时间自系统开机后就一直单调地增加,它不像xtime可以因用户的调整时间而产生跳变,不过该时间不计算系统休眠的时间,也就是说,系统休眠时,monotoic时间不会>递增。
xtime虽然正常情况下也是递增的,但是毕竟用户可以主动向前或向后调整墙上时间,从而修改xtime值。但是monotonic时间不可以往后退,系统启动后只能不断递增。

raw monotonic time
该时间与monotonic时间类似,也是单调递增的时间,唯一的不同是:raw monotonic time“更纯净”,他不会受到NTP时间调整的影响,它代表着系统独立时钟硬件对时间的
统计。

boot time
与monotonic时间相同,不过会累加上系统休眠的时间,它代表着系统上电后的总时间。

时间种类精度(统计单位)访问速度是否包含累计休眠时间受NTP调整的影响
RTCYesYes
xtimeYesYes
monotonicNoYes
raw monotonicNoNo
boot timeYesYes

无时钟滴答模式(tickless mode 或 no-tick mode)

简要介绍

在传统系统中,CPU 会定期接收时钟中断(ticks),即使它处于空闲状态。这些周期性的时钟中断会导致 CPU 不必要地从低功耗状态唤醒,增加了能耗并减少了电池寿命

通过减少不必要的时钟中断,使 CPU 能够更长时间地保持在低功耗状态。

具体实现

动态时钟滴答 Dynamic Ticks

Linux 内核中实现无时钟滴答模式的一种方式。此模式下,当系统没有任务需要调度或处理时,内核可以关闭周期性的时钟中断,允许 CPU 进入更深的睡眠状态,从而节>省能源。内核会重新编程硬件定时器以在下一个关键事件的时间点触发一次性的时钟中断,将 CPU 唤醒以处理这些事件。

完全无时钟滴答(Full Tickless)

不仅在 CPU 空闲时关闭时钟中断,而且在某些情况下即使 CPU 处于活跃状态也可以关闭时钟中断。

nohz sleep

CPU 在进入深度空闲状态(deep idle state)时关闭周期性时钟中断(ticks),以减少功耗并延长电池寿命。这种技术允许 CPU 在没有任务需要处理的情况下进入低功>耗模式,并且只有在有定时器到期或其他唤醒事件发生时才会被重新唤醒。

单触发模式 oneshot mode

与周期性模式不同,单触发模式允许系统仅在需要时触发定时器中断,而不是按照固定的周期重复触发。
在内核中有枚举类型来只是这两种模式

enum tick_device_mode {TICKDEV_MODE_PERIODIC,TICKDEV_MODE_ONESHOT,
};

通过全局变量tick_cpu_device.mode来指示处于哪种模式

http://www.lryc.cn/news/528040.html

相关文章:

  • 0 基础学运维:解锁 K8s 云计算运维工程师成长密码
  • 大一计算机的自学总结:位运算的应用及位图
  • 计算机毕业设计Django+Tensorflow音乐推荐系统 机器学习 深度学习 音乐可视化 音乐爬虫 知识图谱 混合神经网络推荐算法 大数据毕设
  • AI 图片涌入百度图库
  • 可爱狗狗的404动画页面HTML源码
  • 【微服务与分布式实践】探索 Dubbo
  • OpenCSG月度更新2025.1
  • C++封装红黑树实现mymap和myset和模拟实现详解
  • 二次封装的方法
  • 消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)
  • Python实现U盘数据自动拷贝
  • 汇编的使用总结
  • DeepSeek理解概率的能力
  • AI 浪潮席卷中国年,开启科技新春新纪元
  • AI时代的网络安全:传统技术的落寞与新机遇
  • 可以称之为“yyds”的物联网开源框架有哪几个?
  • 线程局部存储tls的原理和使用
  • RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理
  • CAN总线
  • qwen2.5-vl:阿里开源超强多模态大模型(包含使用方法、微调方法介绍)
  • python实现dbscan
  • 学习数据结构(3)顺序表
  • 正在更新丨豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)
  • wx043基于springboot+vue+uniapp的智慧物流小程序
  • 每日一题 430. 扁平化多级双向链表
  • UE学习日志#14 GAS--ASC源码简要分析10 GC相关
  • 使用Python和Qt6创建GUI应用程序--关于Qt的一点介绍
  • C#@符号在string.Format方法中作用
  • Next.js 14 TS 中使用jwt 和 App Router 进行管理
  • 【贪心算法】洛谷P1090 合并果子 / [USACO06NOV] Fence Repair G