- 1、本文档共56页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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
04 Cu
文档评论(0)