linux mips 时钟中断,Linux内核中地时钟中断.pdf
Linux內核中地時鐘中斷
Linux 內核中的時鐘中斷
第七章 Linux 內核的時鐘中斷
(By 詹榮開,NUDT)
Copyright ? 2003 by 詹榮開
E-mail:zhanrk@
Linux-2.4.0
Version 1.0.0,2003-2-14
摘要:本文主要從內核實現的角度分析了Linux 2.4.0 內核的時鐘中斷、內核對時間的表示等。本文是
為那些想要了解Linux I/O 子系統的讀者和Linux 驅動程序開發人員而寫的。
關鍵詞:Linux、時鐘、定時器
申明:這份文檔是按照自由軟件開放源代碼的精神發布的,任何人可以免費獲得、使用和重新發布,
但是你沒有限制別人重新發布你發布內容的權利。發布本文的目的是希望它能對讀者有用,但沒有任
何擔保,甚至沒有適合特定目的的隱含的擔保。更詳細的情況請參閱GNU 通用公共許可證(GPL),以
及GNU 自由文檔協議(GFDL)。
你應該已經和文檔一起收到一份GNU 通用公共許可證(GPL)的副本。如果還沒有,寫信給:
The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,MA02139, USA
歡迎各位指出文檔中的錯誤與疑問。
第 1 頁
Linux 內核中的時鐘中斷
前言
時間在一個操作系統內核中占據著重要的地位,它是驅動一個OS 內核運行的“起博器”。一般說來,
內核主要需要兩種類型的時間:
1. 在內核運行期間持續記錄當前的時間與日期,以便內核對某些對象和事件作時間標記(timestamp,
也稱為“時間戳”),或供用戶通過時間syscall 進行檢索。
2. 維持一個固定周期的定時器,以提醒內核或用戶一段時間已經過去了。
PC 機中的時間是有三種時鐘硬件提供的,而這些時鐘硬件又都基于固定頻率的晶體振蕩器來提供時
鐘方波信號輸入。這三種時鐘硬件是:(1)實時時鐘(Real Time Clock,RTC);(2)可編程間隔定時器
(Programmable Interval Timer,PIT);(3)時間戳計數器(Time Stamp Counter,TSC)。
7.1 時鐘硬件
7.1.1 實時時鐘RTC
自從IBM PC AT 起,所有的PC 機就都包含了一個叫做實時時鐘(RTC)的時鐘芯片,以便在PC 機
斷電后仍然能夠繼續保持時間。顯然,RTC 是通過主板上的電池來供電的,而不是通過PC 機電源來供電
的,因此當PC 機關掉電源后,RTC 仍然會繼續工作。通常,CMOS RAM 和RTC 被集成到一塊芯片上,
因此RTC 也稱作“CMOS Timer”。最常見的RTC 芯片是MC146818(Motorola)和DS12887(maxim),
DS12887 完全兼容于MC 146818,并有一定的擴展。本節內容主要基于MC 146818 這一標準的RTC 芯片。
具體內容可以參考MC146818 的Datasheet。
7.1.1.1 RTC 寄存器
MC146818 RTC 芯片一共有64 個寄存器。它們的芯片內部地址編號為0x00~0x3F(不是I/O 端口地
址),這些寄存器一共可以分為三組:
(1)時鐘與日歷寄存器組:共有 10 個(0x00~0x09),表示時間、日歷的具體信息。在PC 機中,這
些寄存器中的值都是以BCD 格式來存儲的(比如23dec=0x23BCD)。
(2)狀態和控制寄存器組:共有4 個(0x0A~0x0D),控制RTC 芯片的工作方式,并表示當前的狀態。
(3)CMOS 配置數據:通用的CMOS RAM,它們與時間無關,因此我們不關心它。
時鐘與日歷寄存器組的詳細解釋如下:
Address Function
00 Current second for RTC
01 Alarm second
02 Current minute
03 Alarm minute
總結
以上是生活随笔為你收集整理的linux mips 时钟中断,Linux内核中地时钟中断.pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录下IDEA导入web项目遇到的web
- 下一篇: linux下看网卡版本,Linux下查看