axjlxy

linux内核时间更新

时间子系统比较全面

https://blog.csdn.net/DroidPhone/category_1263459.html

4.  时间的更新

xtime一旦初始化完成后,timekeeper就开始独立于RTC,利用自身关联的clocksource进行时间的更新操作,根据内核的配置项的不同,更新时间的操作发生的频度也不尽相同,如果没有配置NO_HZ选项,通常每个tick的定时中断周期,do_timer会被调用一次,相反,如果配置了NO_HZ选项,可能会在好几个tick后,do_timer才会被调用一次,当然传入的参数是本次更新离上一次更新时相隔了多少个tick周期,系统会保证在clocksource的max_idle_ns时间内调用do_timer,以防止clocksource的溢出:
 

  1.  
    void do_timer(unsigned long ticks)
  2.  
    {
  3.  
    jiffies_64 += ticks;
  4.  
    update_wall_time();
  5.  
    calc_global_load(ticks);
  6.  
    }

在do_timer中,jiffies_64变量被相应地累加,然后在update_wall_time中完成xtime等时间的更新操作,更新时间的核心操作就是读取关联clocksource的计数值,累加到xtime等字段中,其中还设计ntp时间的调整等代码,详细的代码就不贴了

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-07-20
  • 2021-10-16
  • 2021-07-31
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-18
  • 2021-12-28
  • 2022-03-04
  • 2021-11-30
  • 2021-11-29
  • 2021-08-03
  • 2021-12-06
相关资源
相似解决方案