在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