Linux內核中的jiffies(轉)

  硬件給內核提供一個系統定時器用以計算和管理時間,內核通過編程預設系統定時器的頻率,即節拍率(tick rate),每一個週期稱作一個tick(節拍)。Linux內核從2.5版內核開始把頻率從100調高到1000(當然帶來了很多優點,也有一些缺點).

 

  jiffies是內核中的一個全局變量,用來記錄自系統啓動一來產生的節拍數。譬如,如果計算系統運行了多長時間,可以用 jiffies/tick rate 來計算。jiffies定義在文件<linux/jiffies.h>中:

 

  extern unsigned long volatile jiffies;

 

  可以利用jiffies設置超時等,譬如:

 

  unsigned long timeout = jiffies + tick_rate * 2; // 2秒鐘後超時

 

  if(time_before(jiffies, timeout){

 

  // 還沒有超時

 

  }

 

  else{

 

  // 已經超時

 

  }

 

  內核提供了四個宏來比較節拍計數,這些宏定義在文件<linux/jiffies.h>中:

 

  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最主要的作用。

發佈了39 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章