CLOCK_MONOTONIC 指的是 monotonic time,而 CLOCK_REALTIME 指的是 wall time。
monotonic time 的字面意思是單調時間,實際上,指的是系統啟動之後所流逝的時間,這是由變數 jiffies 來記錄的,當系統每次啟動時,jiffies 被初始化為 0,在每一個 timer interrupt 到來時,變數 jiffies 就加上 1,因此這個變數代表著系統啟動後的流逝 tick 數。jiffies 一定是單調增加的,因為時間不可逆。
wall time 的字面意思是掛鐘時間,實際上,指的是現實的時間,這是由變數 xtime 來記錄的。系統在每次啟動時,將 CMOS 上的 RTC 時間讀入 xtime,這個值是自從 1970 年 1 月 1 日起經歷的秒數,在每一個 timer interrupt 到來時,變數 xtime 也會加上 1。
注意,xtime 不一定是單獨增加的。因為 wall time 是指現實中的實際時間,如果系統要與網路中某個節點時間同步,或者系統管理員覺得 wall time 與現實的時間不一致,就可能隨意地更改這個 wall time。最常見的情況,使用者可以去任意修改系統時間,這個被修改的時間就是 wall time。
連結:https://www.jianshu.com/p/b2b0be67fd59