實時時鍾、系統時鍾和主機服務器時鍾的區別


實時時鍾、系統時鍾和主機服務器時鍾的區別

實時時鍾、系統時鍾和主機服務器時鍾的區別

京准電子科技官微——ahjzsz

實時時鍾:RTC時鍾,用於提供年、月、日、時、分、秒和星期等的實時時間信息,由后備電池供電,當你晚上關閉系統和早上開啟系統時,RTC仍然會保持正確的時間和日期。

系統時鍾:是一個存儲於系統內存中的邏輯時鍾。用於系統的計算,比如超時產生的中斷異常,超時計算就是由系統時鍾計算的。這種時鍾在系統掉電或重新啟動時每次會被清除。  

CPU時鍾:即CPU的頻率,當然這里的時鍾頻率指的是工作頻率,即外頻,還有什么主頻=外頻×倍頻,這個網上資料一大堆,就不介紹了。 

系統定時器,是不分體系結構都會有的,依賴於驅動內核的時鍾滴答
時間片、進程執行被打斷執行調度程序都依賴這個時鍾滴答,HZ 、jffes 都是這個時鍾的概念
這個時鍾對硬件的要求就是可編程,讓它按照固定的HZ發時鍾中斷就行了
默認是占用IRQ0 中斷線

rtc是體系結構相關的,一般提供開機時牆上時鍾,斷電不丟失,
也可以當作一個普通定時器用,硬要用rtc來實現上面那個系統定時器需要的時鍾中斷也行

系統時鍾

6.1.2 系統時鍾

操作系統應該具備在將來某個時刻調度某個任務的能力,所以需要一種能保證任務准時調度運行的機制。該機制的核心就是系統時鍾。與實時鍾RTC不同,系統時鍾是定時器硬件和系統軟件的結合。

1.系統時鍾中斷源

系統時鍾硬件在通過編程配置后可以產生一定頻率的中斷。在個人計算機中,與該中斷相關的中斷向量號是0。系統軟件通過累計從開機到現在產生該中斷的次數來維護系統時間,形成系統時鍾。本小節主要介紹在個人計算機中常見的、可以用於系統時鍾的硬件定時器。

(1)8254可編程定時器。

當 前使用最普遍的定時器硬件芯片是Intel 8254可編程定時器芯片(Programable Interval Timer,簡稱為PIT),該芯片由一個1 193 181Hz的振盪器驅動,含有3個獨立的通道;每個通道包含一個16位的計數器。對於每一個到達的時鍾脈沖,通道中計數器中的值減1,當計數器減到0時, 相應的通道就會產生一次輸出。其中通道0的輸出連接到了中斷控制器,其對應的中斷向量號為0,用於產生系統時鍾所需要的滴答;通道1的輸出在早期的計算機 中用於DRAM的刷新,新近的計算機系統中有專門的硬件負責DRAM的刷新,通道1的功能已經不存在了;通道2的輸出連接到了位於主板上的蜂鳴器(PC Speaker),控制蜂鳴器發出一定頻率的聲音。

這里介紹一下驅動8254工作時鍾頻率的來歷。最初的個人電腦設計時出於成本上的考慮, 主板上采用了當時廣泛用於電視機且價格最便宜的一個14.318 18MHz振盪器,該振盪器的頻率遠遠高於系統其他器件所要求的工作頻率。設計師采用了3分頻后得到4.77MHz驅動中央處理器8088;采用4分頻后 得到3.58MHz信號用於驅動彩色圖形適配器;最后將系統各種頻率的基頻1.193 181 6MHz(各種頻率的最大公約數,即12分頻)信號用做系統可編程定時器芯片的輸入時鍾。為了保持兼容性,可編程定時器8254一直采用這個頻率的時鍾作 為輸入。

(2)高精度事件定時器。

高精度事件定時器(High Precision Event Timers)被設計用於取代8254可編程定時器的全部功能和實時鍾RTC芯片的周期性中斷功能,和8254可編程定時器相比,該定時器能產生更高精度 的周期性中斷;和實時鍾RTC芯片的周期性中斷相比,該定時器能提供更高精度、更寬范圍的中斷頻率。

該硬件定時器遵循Intel和 Microsoft聯合制定的高精度事件定時器規范。該規范中規定一個高精度事件定時器最多擁有32個定時器。通過配置后,timer 0用於取代8254可編程定時器所產生的時鍾中斷;timer 1作為硬件定時器取代實時鍾RTC芯片的周期性中斷功能;其余的timer作為硬件定時器供內核或用戶進程直接使用。

(3)處理器本地時鍾。

在多處理器系統中,處理器本地時鍾(CPU Local Timer)用於向本地處理器發送時鍾中斷請求,更新本地處理器上的相對時間jiffies。

2.其他輔助時鍾源

這 類輔助時鍾源不具備向系統發出中斷請求的功能,但有比能產生系統時鍾中斷的定時器硬件更高的計時精度。在系統時鍾中斷處理過程中,處理程序可以利用這些時 鍾的值來完成高精度時間度量,如"6.6微秒級延遲"中的udelay、ndelay就使用了這類的時鍾源(如時間戳計數器)完成高精度的延遲。下面介紹 常見的這類輔助時鍾源。

(1)時間戳計數器。

從Pentium開始,所有的Intel處 理器都包含一個64位的寄存器,該寄存器被稱為時間戳記數器(Time Stamp Counter,簡稱為TSC)。TSC在CPU的每個時鍾信號到來一次時加1,實際上該寄存器是一個不斷增加的計數器,如果處理器的主頻為1GHz,那 么TSC寄存器的每1ns增加1。匯編指令rdtsc可用於讀取TSC的值。利用CPU的TSC,操作系統通常可以得到更為精准的時間度量。

(2)電源管理時鍾。

內核中,除了使用上面的時間戳記數器作為系統時鍾的輔助時鍾源外,電源管理時鍾(ACPI Power Management Timer)也可作為系統的輔助時鍾源。這里對這些時鍾源不做詳細介紹。

3.與系統時鍾相關的宏定義

(1)宏定義HZ。

宏定義Hz記錄了不同體系結構下,系統時鍾所要求的可編程定時器產生中斷的頻率。在IA32體系結構下該宏定義在文件src/include/asm-i386/param.h中的第6行定義如下:

#define HZ CONFIG_HZ /* Internal kernel timer frequency */

其中的CONFIG_HZ是內核配置選項,該內核配置選項有3個頻率候選值依次是100Hz、1 000Hz、250Hz,分別用於要求高系統吞吐量的服務器系統、要求快速響應的個人桌面計算機系統以及兼有兩種類型應用的計算機系統中。

(2)宏定義CLOCK_TICK_RATE。

宏定義CLOCK_TICK_RATE記錄了不同體系結構下,驅動可編程定時器工作的輸入時鍾頻率。在IA32體系結構下該值在文件src/include/asm-i386/timex.h中的第15行定義如下:

#define CLOCK_TICK_RATE 1193182 /* Underlying HZ */

其中,數值1 193 182是8254可編程定時器的輸入時鍾頻率。詳情請參見本小節中對8254可編程定時器的分析。

(3)宏定義LATCH。

宏定義LATCH記錄了上述兩個宏定義的比值,用於在內核初始化過程中設置可編程定時器中計數器寄存器counter的初始值。在IA32體系結構下,該宏定義在文件src/include/ Linux/jiffies.h中第46行定義如下:

#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM