linux时间子系统(二)

简单介绍linux下的时间子系统。包括clocksource,timekeeper和定时器的内容。

2.2 timekeeper

  对于真实用户来说,感知的是真实世界的真实时间,也就是所谓的墙上时间。clocksource只是提供一个按周期递增的周期计数。在Linux内核中,使用timekeeper对clocksource进行进一步的封装,将周期转换时间并转换成合适的格式。

2.2.1 time type

  内核中管理着多种时间,他们分别是RTC time, wall time(xtime), monotonic time, raw monotonic time, boot time。这里,我们简单分析一下各种类型的时间。

  RTC time,又叫CMOS时间。它通常由一个专门的计时硬件来实现,软件可以通过读取该硬件来获取年月日,时分秒等时间信息。一般来说,RTC time是一种可持续计时的。也就是说,无论系统是否上电,RTC硬件中的时间都不会丢失,计时会一直持续进行。硬件上通常由一个后备电池对RTC硬件进行单独的供电。由于RTC硬件的多样性,开发者需要为每种RTC时钟硬件提供相应的驱动程序,内核和用户空间通过驱动程序访问RTC硬件来获取或设置时间信息。

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

  monotonic time,该时间会从开机后一直单调的增加。不会像xtime可以因用户调整时间而产生跳变。但是该时间不会统计系统休眠的时间。也就是说,系统休眠时,monotonic time不会增加。
  raw monotonic time,与monotonic time类似,也是单调递增的时间。与monotonic time不同的是,raw monotonic time不会受到NTP时间调整的影响,它代表着系统独立时间硬件对时间的统计。
  boot time,与monotonic time类似,不过会加上系统休眠时间。它代表着系统上电后的总时间。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值