Linux 不同時鍾的區別


在Linux內核中,我們可以發現主要有這么幾種不同類型的時鍾(clock):

CLOCK_REALTIME
CLOCK_MONOTONIC
CLOCK_MONOTONIC_RAW
CLOCK_BOOTTIME

 CLOCK_REALTIME,可以理解為wall time,即是實際的時間。用戶可以使用命令(date)或是系統調用去修改。如果使用了NTP, 也會被NTP修改。當系統休眠(suspend)時,仍然會運行的(系統恢復時,kernel去作補償)。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM