Linux內(nèi)核中的jiffies:時(shí)間管理詳解
一、jiffies基本概念
jiffies是Linux內(nèi)核中的全局變量,記錄系統(tǒng)啟動(dòng)后的"時(shí)鐘滴答"次數(shù)。
每當(dāng)系統(tǒng)時(shí)鐘中斷發(fā)生,jiffies值就增加1。
它是內(nèi)核測(cè)量時(shí)間的基本單位,類似于我們?nèi)粘I钪械?quot;秒"。
二、HZ:jiffies的心跳頻率
如果把jiffies比作心跳計(jì)數(shù),那么HZ就是心跳的頻率。具體來(lái)說(shuō),HZ定義了系統(tǒng)時(shí)鐘每秒鐘"心跳"的次數(shù),也就是jiffies每秒鐘增長(zhǎng)的次數(shù)。
例如:如果HZ=100,就像是心臟每秒跳動(dòng)100次,那么每個(gè)jiffie就代表了1/100秒,即10毫秒。如果HZ=1000,就像心臟每秒跳動(dòng)1000次,那么每個(gè)jiffie就代表了1毫秒。
三、jiffies的特性
- 變量類型:聲明為volatile,確保每次讀取最新值
- 內(nèi)存對(duì)齊:使用緩存行對(duì)齊減少多處理器系統(tǒng)的緩存沖突
- 初始值:不從0開(kāi)始,而是從INITIAL_JIFFIES(通常為300秒滴答數(shù))開(kāi)始
- 存儲(chǔ)大?。?2位系統(tǒng)時(shí)為無(wú)符號(hào)32位整數(shù),64位系統(tǒng)時(shí)為無(wú)符號(hào)64位整數(shù)
四、jiffies溢出與時(shí)間比較
jiffies會(huì)周期性溢出,使得簡(jiǎn)單的大小比較不可靠。
內(nèi)核提供了專門(mén)的比較函數(shù)處理溢出情況:
time_after(a,b)
:檢查a是否在b之后time_before(a,b)
:檢查a是否在b之前time_after_eq(a,b)
:檢查a是否在b之后或等于btime_before_eq(a,b)
:檢查a是否在b之前或等于b
這些函數(shù)通過(guò)將無(wú)符號(hào)差轉(zhuǎn)為有符號(hào)數(shù)來(lái)處理溢出問(wèn)題。
五、時(shí)間單位換算
jiffies與常用時(shí)間單位的換算關(guān)系:
- 1秒 = HZ個(gè)jiffies
- 1毫秒 ≈ HZ/1000個(gè)jiffies
內(nèi)核提供了換算函數(shù):
- msecs_to_jiffies():毫秒轉(zhuǎn)jiffies
- jiffies_to_msecs():jiffies轉(zhuǎn)毫秒
由于HZ可能不是1000的倍數(shù),換算過(guò)程可能有舍入誤差。
總結(jié)
jiffies是Linux內(nèi)核時(shí)間管理的基礎(chǔ),盡管有精度限制,但其簡(jiǎn)單性和可靠性使它成為最常用的時(shí)間計(jì)數(shù)機(jī)制。理解jiffies的工作原理和最佳實(shí)踐對(duì)內(nèi)核和驅(qū)動(dòng)開(kāi)發(fā)至關(guān)重要。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
apache中通過(guò)mod_rewrite實(shí)現(xiàn)偽靜態(tài)頁(yè)面的方法
mod_rewrite是Apache的一個(gè)非常強(qiáng)大的功能,它可以實(shí)現(xiàn)偽靜態(tài)頁(yè)面。下面我詳細(xì)說(shuō)說(shuō)它的使用方法!對(duì)初學(xué)者很有用的哦!2011-08-08Linux之進(jìn)程的虛擬地址空間,邏輯地址和物理地址,進(jìn)程管理命令
這篇文章主要介紹了Linux之進(jìn)程的虛擬地址空間,邏輯地址和物理地址,進(jìn)程管理命令,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Linux上下行網(wǎng)速測(cè)試工具_(dá)speedtest-cli安裝使用方法
speedtest-cli是Linux下的一個(gè)上下行網(wǎng)速測(cè)試工具,是一個(gè)用Python寫(xiě)的命令行腳本,需要的朋友可以參考下2017-03-03阿里云CentOS掛載新數(shù)據(jù)盤(pán)的方法
本篇文章主要介紹了阿里云CentOS掛載新數(shù)據(jù)盤(pán)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12