Linux系統有兩個時鐘:一個是由主板電池驅動的“Real Time
Clock”,也叫做RTC或者CMOS時鐘,硬件時鐘。當操作系統關機的時候,用這個來記錄時間,但是對于運行的系統是不用這個時間的。另一個時鐘是 “System
clock”,也叫內核時鐘或者軟件時鐘,是由軟件根據時間中斷來進行計數的,內核時鐘在系統關機的情況下是不存在的,所以,當操作系統啟動的時候,內核時鐘是要讀取RTC時間來進行時間同步(有些情況下,內核時鐘也可以通過ntp服務器來讀取時間)。這兩個時鐘通常會有一些誤差,所以長時間可以導致這兩個時鐘偏離的比較多,最簡單的保持兩個時間同步的方法是用軟件測出他們之間的誤差率,然后進行修正。在每次重新啟動系統的時候,系統都會用hwclock命令對時間進行同步。如果內核時鐘在每一個時間中斷都快或者慢的話,可以用adjtimex命令進行調整,使得RTC和內核時間走的快慢一致.
Linux的內核時間實際上是記錄從1970年1月1日距離現在的秒數,并且以GMT(格林尼治時間)(或者叫UTC-
Coordinated Universal
Time)為標準,UTC是不隨著DST(夏令時)變換,需要有變化的是由應用程序自身來完成時間的轉換。通常,本地時間=UTC時間+時區。
從Linux啟動過程來看,系統時鐘和硬件時鐘不會發生沖突,但Linux中的所有命令(包括函數)都是采用的系統時鐘設置。不僅如此,系統時鐘和硬件時鐘還可以采用異步方式。這樣做的好處對于普通用戶意義不大,但對于Linux網絡管理員卻有很大的用處。例如,要將一個很大的網絡中(跨越若干時區)的服務器同步,假如位于美國紐約的Linux服務器和北京的Linux服務器,其中一臺服務器無須改變硬件時鐘而只需臨時設置一個系統時間,如要將北京服務器上的時間設置為紐約時間,兩臺服務器完成文件的同步后,再與原來的時鐘同步一下即可。這樣系統和硬件時鐘就提供了更為靈活的操作。
posted on 2008-08-10 21:37
chatler 閱讀(347)
評論(0) 編輯 收藏 引用 所屬分類:
Linux_SysAdmin