最近看了一些 Linux Driver 相關的的 code,但是我發現了 HZ 這個變數,但我找不到它是哪裡來的,還有一個不知道幹嘛用的全域變數 jiffies。
沒辦法的情況下,只好問 Google 了。
Google 大大給了我這個網址:
Linux Kernel: 簡介HZ, tick and jiffies
裡面說明這這三個變數都是系統的變數,都跟時間有關。
為了避免連結失效,我就把內容重新整理一下吧。
HZ
Linux 核心每隔固定週期會發出 timer interrupt (IRQ 0),HZ 是用來定義每一秒有幾次 timer interrupts。舉例來說,HZ 為1000,代表每秒有1000次 timer interrupts。HZ 可在編譯核心時設定
Tick
Tick 是 HZ 的倒數,意即 timer interrup t每發生一次中斷的時間。如HZ為 250 時,tick 為4毫秒 (millisecond)。
Jiffies
Jiffies為Linux核心變數(32位元變數,unsigned long),它被用來紀錄系統自開幾以來,已經過多少的tick。每發生一次 timer interrupt,Jiffies 變數會被加一。
timer_after
time_after_eq
time_before
time_before_eq
為四個取得 jiffies 的 marco,可以在 jiffies 溢位的情況下還可以正確的取得 jiffies。
原文為作者 trace Linux Kernel 得來的結果,這樣抄已經很不好意思。其它內容,還是到作者的網址看吧。
沒有留言:
張貼留言