linux核心時間管理
linux核心中有大量的函式需要時間管理,比如延時程式、週期性的程式排程等。硬體定時器提供時鐘源,時鐘源的頻率是可以設定的,設定好以後通過週期性中斷來計時。
週期性中斷的頻率也叫系統節拍,系統節拍在編譯核心的時候可以設定。
核心原始碼的根目錄下的.config檔案中有相關巨集定義
config_hz_fixed=0
config_hz_100=y
# config_hz_200 is not set
# config_hz_250 is not set
# config_hz_300 is not set
# config_hz_500 is not set
# config_hz_1000 is not set
config_hz=100
config_sched_hrtick=y
此外,在編譯核心的時候也可以通過圖形介面配置,最後被寫入.config檔案下,核心最終會根據config_hz來確定時鐘節拍
時鐘節拍快慢的優缺點時鐘節拍越快時間精度越高,例如設定為100hz的時間精度是10ms;1000hz的時間精度是1ms。
時鐘節拍越快意味著中斷越頻繁,處理器消耗越大。目前一般cpu過剩。
linux核心使用全域性變數 jiffies記錄系統從啟動以來的系統節拍數。每次系統啟動會將jiffies置零0。在32位系統中需要考慮溢位問題。假設系統節拍設定為1000hz,則49.7天就會溢位。對於繞回現象linux核心有相關api函式對jiffies進行比較。
linux 核心提供了幾個 jiffies 和 ms、 us、 ns 之間的轉換函式,可以將時間轉換成節拍數。
將 jiffies 型別的引數 j 分別轉換為對應的毫秒、微秒、納秒。
int jiffies_to_msecs(const unsigned long j)
int jiffies_to_usecs(const unsigned long j)
u64 jiffies_to_nsecs(const unsigned long j)
將毫秒、微秒、納秒轉換為 jiffies 型別。
long msecs_to_jiffies(const unsigned int m)
long usecs_to_jiffies(const unsigned int u)
unsigned long nsecs_to_jiffies(u64 n)
核心定時器
linux 核心定時器使用很簡單,只需要提供超時時間(相當於定時值)和定時處理函式即可,當超時時間到了以後設定的定時處理函式就會執行。 核心定時器只能定時一次,在定時時間超出以後會自動關閉,如果要實現週期性定時,則序需要在定時處理函式中重新開啟定時器。
核心定時器使用linux 核心使用 timer_list 結構體表示核心定時器。
struct timer_list ;
使用核心定時器需要定義timer_list結構體,填充其成員變數,編寫超時函式。然後調動核心定時器的相關api函式來操作。
核心定時器api函式
void init_timer(struct timer_list *timer)
void add_timer(struct timer_list *timer)
int del_timer(struct timer_list * timer)
int del_timer_sync(struct timer_list *timer)
del_timer函式不關注定時器是否啟用或者定時結束。
del_timer_sync是del_timer的公升級版,此函式會等待定時處理函式執行完畢再刪除定時器
int mod_timer(struct timer_list *timer, unsigned long expires)
此函式必須在定時器沒有啟用的狀態下使用,直接修改定時的系統節拍數。
核心定時器使用
#include struct timer_list timer;
void function(unsigned long arg)
void timer_begin(void)
void timer_end(void)
Linux核心 定時器和時間管理
系統定時器是一種可程式設計硬體晶元。它能以固定頻率產生中斷。該中斷就是所謂的定時器中斷。它所相應的中斷處理程式負責更新系統時間,還負責執行須要週期性執行的任務。系統定時器和時鐘中斷處理程式是linux系統核心管理機制中的中樞。另外乙個關注的焦點是動態定時器 一種用來推遲執行程式的工具。比方說。假設軟...
時間管理5大核心步驟
時間管理核心五大步驟為 收集 處理 管理 執行 回顧。1 收集 收集記錄,你是否會有過總覺得有一些事情沒乾的感覺。人的大腦記憶是有限的,我們需要把我們的計畫 任務 靈感記錄下來,合理利用甘特圖,這樣會更加方便 快捷。2 處理 處理分類,事情有分輕重,如果能及時處理的事情一定要及時處理,避免事情的堆積...
linux 核心學習之 定時器和時間管理
1.概述 目的 核心 系統定時器和時鐘中斷處理程式是linux系統核心管理機制的中樞。2 基本概念 系統定時器 一種可程式設計硬體晶元,用於幫助核心計算和管理時間,能以固定頻率自發產生定時器中斷,對應的中斷處理程式負責更新系統時間及執行需要週期性的任務。節拍率 系統定時器自行觸發時鐘中斷的頻率,即系...