洪湖自己的網(wǎng)站seo大牛
一、RTC
RTC為實(shí)時(shí)時(shí)鐘,獨(dú)立于CPU與所有其他芯片,依靠一個(gè)獨(dú)立的小電池供電給RTC中的振蕩器,即使關(guān)閉PC電源,還會(huì)繼續(xù)運(yùn)轉(zhuǎn)。在RQ8上發(fā)出周期性的中斷,可以對(duì)其編程實(shí)現(xiàn)一個(gè)鬧鐘。但Linux本身只使用RTC獲得時(shí)間和日期。
墻上時(shí)間,在系統(tǒng)啟動(dòng)過程中根據(jù)實(shí)時(shí)鐘(RTC)芯片保存數(shù)據(jù)進(jìn)行初始化,在系統(tǒng)運(yùn)行期間由系統(tǒng)時(shí)鐘維護(hù)并在合適的時(shí)刻和RTC芯片進(jìn)行同步。墻上時(shí)間存儲(chǔ)于系統(tǒng)核心變量xtime中該變量記錄了現(xiàn)實(shí)世界中的年月日格式的時(shí)間。更新函數(shù)update_wall_time()。
二、時(shí)間戳計(jì)數(shù)器TSC
現(xiàn)在CPU中引入TSC寄存器,TSC是一個(gè)64位的、用作時(shí)間戳計(jì)數(shù)器的寄存器 。它在每個(gè)時(shí)鐘信號(hào)(CLK)到來時(shí)+1 。rdtsc指令用于讀該寄存器 ,注意使用這個(gè)寄存器時(shí),內(nèi)核必須考慮時(shí)鐘信號(hào)的頻率,TSC能獲得更精確的值。Linux在系統(tǒng)初始化的時(shí)候必須通過tsc_calibrate獲得CLK的頻率。tsc_calibrate根據(jù)在一個(gè)可編程間隔定時(shí)器給出的時(shí)間間隔內(nèi)(約5ms)所發(fā)生的TSC計(jì)數(shù)的個(gè)數(shù)進(jìn)行計(jì)算 。
相對(duì)時(shí)間:記錄從系統(tǒng)啟動(dòng)直到當(dāng)前時(shí)刻的系統(tǒng)時(shí)鐘產(chǎn)生的滴答數(shù),存儲(chǔ)于系統(tǒng)核心變量jiffies(jiffies_64)
三、可編程間隔定時(shí)器PIT
通過IRQ0發(fā)出時(shí)鐘中斷 每若干毫秒(100Hz為10ms)產(chǎn)生一次時(shí)鐘中斷,即一個(gè)tick。
- 宏定義HZ。 宏定義Hz記錄了不同體系結(jié)構(gòu)下,系統(tǒng)時(shí)鐘所要求的可編程定時(shí)器產(chǎn)生中斷的頻率。
- 宏定義CLOCK_TICK_RATE。 宏定義CLOCK_TICK_RATE記錄了不同體系結(jié)構(gòu)下,驅(qū)動(dòng)可編程定時(shí)器工作的輸入時(shí)鐘頻率。
- 宏定義LATCH。 宏定義LATCH記錄了上述兩個(gè)宏定義的比值,用于在內(nèi)核初始化過程中設(shè)置可編程定時(shí)器中計(jì)數(shù)器寄存器counter的初始值。
?
?