標籤:
http://blog.sina.com.cn/s/blog_68f909c30100pli7.html
系統時鐘:RTC時鐘,用於提供年、月、日、時、分、秒和星期等的即時時間資訊,由後備電池供電,當你晚上關閉系統和早上開啟系統時,RTC仍然會保持正確的時間和日期。
系統時鐘:是一個儲存於系統記憶體中的邏輯時鐘。用於系統的計算,比如逾時產生的中斷異常,逾時計算就是由系統時鐘計算的。這種時鐘在系統掉電或重新啟動時每次會被清除。
CPU時鐘:即CPU的頻率,當然這裡的時鐘頻率指的是工作頻率,即外頻,還有什麼主頻=外頻×倍頻,這個網上資料一大堆,就不介紹了。
http://bbs.csdn.net/topics/330114794
系統定時器,是不分體繫結構都會有的,依賴於驅動核心的時鐘滴答
時間片、進程執行被打斷執行發送器都依賴這個時鐘滴答,HZ 、jffes 都是這個時鐘的概念
這個時鐘對硬體的要求就是可程式化,讓它按照固定的HZ發時鐘中斷就行了
預設是佔用IRQ0 中斷線
rtc是體繫結構相關的,一般提供開機時牆上時鐘,斷電不丟失,
也可以當作一個普通定時器用,硬要用rtc來實現上面那個系統定時器需要的時鐘中斷也行
http://hi.baidu.com/jackfrued/item/e245b029bf7e4a0b42634aa0
系統時鐘
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 */
系統時鐘、系統時鐘和CPU時鐘的區別