實時時鐘、系統時鐘和主機服務器時鐘的區別
實時時鐘、系統時鐘和主機服務器時鐘的區別
京準電子科技官微——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 */轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/285868.html
標籤:訊息安全
