zoukankan      html  css  js  c++  java
  • 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时间的调整等代码,详细的代码就不贴了

    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    p1297
    p2023
    p1612
    逆元总结
    p1652
    考试总结10-08
    p1459
    p1821
    p1863
    p1884
  • 原文地址:https://www.cnblogs.com/axjlxy/p/14839076.html
Copyright © 2011-2022 走看看