linux 内核获取时间,Linux内核中的jiffies 以及时间的获取time
硬件給內核提供一個系統定時器用以計算和管理時間,內核通過編程預設系統定時器的頻率,即節拍率(tick rate),每一個周期稱作一個tick(節拍)。Linux內核從2.5版內核開始把頻率從100調高到1000(當然帶來了很多優點,也有一些缺點).
jiffies是內核中的一個全局變量,用來記錄自系統啟動一來產生的節拍數。譬如,如果計算系統運行了多長時間,可以用 jiffies/tick rate 來計算。jiffies定義在文件中:
extern unsigned long volatile jiffies;
可以利用jiffies設置超時等,譬如:
unsigned long timeout = jiffies + tick_rate * 2; // 2秒鐘后超時
if(time_before(jiffies, timeout){
// 還沒有超時
}
else{
// 已經超時
}
內核提供了四個宏來比較節拍計數,這些宏定義在文件中:
time_before(unknown, known)
time_after(unknown, known)
time_before_eq(unknown, known)
time_after_eq(unknown, known)
比較的時候用這些宏可以避免jiffies由于過大造成的回繞問題。
除了系統定時器外,還有一個與時間有關的時鐘:實時時鐘(RTC),這是一個硬件時鐘,用來持久存放系統時間,系統關閉后靠主板上的微型電池保持計時。系統啟動時,內核通過讀取RTC來初始化Wall Time,并存放在xtime變量中,這是RTC最主要的作用。
===================================
struct timeval tv;
do_gettimeofday(&tv);
總結
以上是生活随笔為你收集整理的linux 内核获取时间,Linux内核中的jiffies 以及时间的获取time的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Redis、Storm的实时数据查询
- 下一篇: linux中asm数据库卸载教程,删除L