linux之时间子系统(十)-timer 和hrtimer 的关系

一、关系

现代计算机上一般都会包含多种时钟中断设备,它们可以支持周期性和单触发的时钟中断, 我们以PlT和APIC Timer的组合为例。 系统启动过程中,PlT会优先工作,PlT的evt的event~hand如字段被赋值为tick_handle _periodic。 这是第一个阶段,系统外于周期性 时钟中断棹式,tir.k阶段。 APlC Time1 进入工作(setup_APIC_time1)之后,由千它的rating比PIT 高,tel的evtdev字段 被替换成APIC的evt, 此时可以尝试切换至nohz模式。 nohz模式(也可称为tickless模式、oneshot模式、动态时钟模式)主要要求系统当前的cs要 有CLOCK_SOURCE_VALID_FOR_HRES标志(timekeeping_valid_for_hres)和evt可以满足单触发 模式(tick_is_oneshot_available) 两个条件。 在条件 满足的清况下,内核会切换到nohz模式,进 入第二个阶段。 所谓的nohz模式是指时钟中断不完全周期性地工作的模式,在该模式下 时钟中断 的间隔可以动态调整。 nohz模式又分为两种模式:高精度模式和低精度模式。 满足nohz 条件的情况下,切换到哪个 模式由 hrtimer_hres_enabled变量的值决定,该 值可通过内核启动参数设置。 如果它等千0, 调用 tick_nohz_switch_ to _nohz切换到普通 nohz模式,否则调用hrtimer_switch_to_hres切换到高精度 模式。 低精度和高精度模式不同点如下。 从字面上理解,后者比前者精度要 高,事实也确实如此。 低精度模式 最高的频率就是Hz, cpu处于非idle的状态下,它 一般也是以周期性的方式工作,之所以称之为nohz是因为它的频率 可以大于Hz, 比如在idle 状态下。 高精度模式的最高 频率由时钟中断设备决定,可以满足对时间 间隔要求较高的应用场景。 time1是 一种软中断,hrtimer(high resolution time1)依赖这里的高精度模式,它除了也是 一 种软中断之外,还可以主动设定下一个时钟中断的时间点,从而达到高精度,如图4-3所示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值