在Linux内核中,咱们能够发现主要有这么几种不一样类型的时钟(clock):ubuntu
1spa 2.net 3code 4server |
|
CLOCK_REALTIME,能够理解为wall time,便是实际的时间。用户能够使用命令(date)或是系统调用去修改。若是使用了NTP, 也会被NTP修改。当系统休眠(suspend)时,仍然会运行的(系统恢复时,kernel去做补偿)。date
CLOCK_MONTONIC,是单调时间,即从某个时间点开始到如今过去的时间。用户不能修改这个时间,可是当系统进入休眠(suspend)时,CLOCK_MONOTONIC是不会增长的。
CLOCK_MONOTONIC_RAW,和CLOCK_MONOTONIC相似,但不一样之处是MONOTONIC_RAW不会受到NTP的影响。CLOCK_MONOTONIC会受到NTP的影响并非说NTP会去修改CLOCK_MONOTONIC,使其不连续,而是说当NTP server 和本地的时钟硬件之间有问题,NTP会影响到CLOCK_MONOTONIC的频率,可是MONOTONIC_RAW则不会受其影响。 其区别能够参考 Difference between MONOTONIC and MONOTONIC_RAW
CLOCK_BOOTTIME,与CLOCK_MONOTONIC相似,可是当suspend时,会依然增长。能够参考LWN的这篇文章 introduce CLOCK_BOOTTIME