Linux時鐘系統

2021-09-25 08:14:50 字數 1302 閱讀 5513

x86體系結構下,rtc實時時鐘在系統斷電的時候使用備用電池繼續執行,rtc能在irq8上週期的發出中斷,頻率在2~8291hz之間,linux只是用rtc在啟動的時候來獲取時間和日期。不過也可以使用/dev/rtc來對rtc裝置程式設計修改其值。

pentium開始,x86處理器包含乙個計數器,可以對clk上的時鐘訊號進行計數,64位時間戳計數器。該計數器的時間精度通常比可程式設計間隔定時器精度高。linux核心在系統初始化的時候確定該時鐘訊號(clk)的頻率,核心中並不申明和定義這個頻率,而是使用核心啟動後通過乙個函式測量5ms內產生的訊號數量。

因為 tsc 隨著處理器週期速率的變化而變化,所以它提供了非常高的精確度。它經常被用來分析和檢測**。tsc 的值可以通過 rdtsc 指令來讀取。tsc 的節拍還可以轉換為秒,轉換方法是將其除以 cpu 的時鐘速率(可以從核心變數 cpu_khz 獲取)。

pit以固定的時鐘頻率發出中斷,叫做時鐘中斷。【x86:該中斷的中斷號irq0】。時鐘中斷的時間間隔叫做乙個節拍

hz:時鐘中斷的頻率,arm:100or200(exynos4412)   x86:1000

clock_tick_rate:時鐘週期,【arm/mach-***/include/mach/timex.h】。【exynos4412:clock_tick_rate=12000000】

linux核心已經實現好了時鐘中斷對應的服務程式,這個服務程式也稱之為時鐘中斷服務函式;硬體定時器週期性的給cpu產生時鐘中斷,那麼對應的中斷服務程式就會被核心週期性的呼叫。

時鐘中斷服務函式做如下內容:

更新系統的執行時間,更新jiffies_64(jiffies)

更新實際時間,計算當前系統負載

檢查程序的時間片是否用完,決定是否需要重新排程新程序

檢查是否有超時的軟體定時器,如果有處理這個超時的軟體定時器

jiffies變數:記錄系統啟動以來的節拍數。乙個32位的變數。

jiffies_64變數:jiffies通過聯結器被換算成乙個jiffies_64位計數器的低32位。jiffies對應著jiffies_64的低32位。當修改jiffies_64的時候jiffies也跟著改。訪問jiffies_64的時候需要同步機制,分為兩個32位數訪問。

x_time變數:存放當前時間和日期,time_spec型別的資料結構。

單處理器系統上的計時體系結構

Linux 系統時鐘

hertz linux核心每隔固定週期會發出timer interrupt irq 0 hz是用來定義每一秒有幾次timer interrupts。用這個指令可以檢視 可能需要root許可權,或有版本要求 cat boot config uname r grep config hz 如果上述指令不能...

Linux系統時鐘與硬體時鐘

linux系統有兩個時鐘 乙個是由主機板電池驅動的硬體時鐘 real time clock 也叫做rtc或者叫cmos時鐘。當作業系統關機的時候,用這個來記錄時間,但是對於執行的系統是不用這個時間的 另乙個時間是系統時鐘 system clock 也叫核心時鐘或者軟體時鐘,是由軟體根據時間中斷來進行...

linux 系統時鐘設定 抄

我們一般使用 date s 命令來修改系統時間。比如將系統時間設定成1996年6月10日的命令如下。date s 06 10 96 將系統時間設定成下午1點12分0秒的命令如下。date s 13 12 00 注意,這裡說的是系統時間,是linux由作業系統維護的。在系統啟動時,linux作業系統將...