clock_gettime接口和linux時間系統


RTC/OSC
RTC,Real Time Clock,真實時鍾,也叫做CMOS時鍾,又叫walltime
OSC,Operation System Clock,系統時鍾。在開機時操作系統取得RTC中的時間數據來初始化OSC,之后完全由完全由操作系統控制。
當設置OSC時間時,RTC時間不會自動同步,待關閉或者重啟時,操作系統會自動同步OSC時間到RTC, 操作系統每隔一個固定時間會刷新或校正RTC中的信息,當操作系統關機時,時間交由主板上的RTC去記時,因為主板上的CMOS有鋰電池供電. 
當再次開機時,操作系統會去主板RTC上獲取時間。


CLOCK_REALTIME/CLOCK_REALTIME
CLOCK_REALTIME,真實時間,walltime,即RTC,會被settime()/settimeofday()影響。
CLOCK_MONOTONIC,單調時間,即從某個時間點開始到現在過去的時間。用戶不能修改這個時間,但是當系統進入休眠(suspend)時,CLOCK_MONOTONIC是不會增加的。不會被settime()/settimeofday()影響。


NTP的影響
如果NTP調整時間時調用了adjtimex()接口,會同時對CLOCK_REALTIME和CLOCK_MONOTONIC都有影響。


CLOCK_MONOTONIC_RAW
與monotonic時間類似,也是單調遞增的時間,但raw monotonic time不會受到NTP時間調整的影響


int clock_gettime(clockid_t clk_id, struct timespec *tp);
clk_id為CLOCK_MONOTONIC,則返回系統啟動后秒數和納秒數。
clk_id為CLOCK_REALTIME,則返回RTC


免責聲明!

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



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