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相关推荐

  1. mips 内存 linux,MIPS 在linux中的内存映射

    如图: 一些说明: 1.内核从什么地方开始运行:MIPS Linux内核的代码构建为在kseg0区运行:虚拟地址从0x80000000向上.这个范围的地址仅仅是一个到物理内存低512MB的窗口,无需T ...

  2. Linux驱动模块编译进内核中

    BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 linux 内核中增加程序需要完成以下三项工作: 1. 将编写的源代码复制到 Linux 内核源代码的相应目录: 2. 在 ...

  3. Linux进程管理:内核中的优先级继承互斥(rtmutex.h):防止优先级反转

    目录 Priority inheritance in the kernel 译文 Priority inheritance in the kernel https://lwn.net/Articles ...

  4. Linux服务器(centos7)中Word转换PDF,文档出现中文乱码或方格【亲测可用,已解决】

    提示:在centos服务器使用aspose.word转换word文件为pdf的时候只有中文乱码或则方格,但是在win服务器上使用可以正常转换.本次文章主要解决字体缺失问题 目录 前言 一.在linux ...

  5. 用户的虚拟地址 linux 0 4gb,Linux驱动虚拟地址和物理地址的映射

    一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G. 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间. ...

  6. linux 保留内核中sas驱动的加载导致crash问题

    [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 问题描述,在crash的时候,小内 ...

  7. 在linux内核中获得比jiffies精度更高的时间值【转】

    转自:http://blog.chinaunix.net/uid-20672257-id-2831219.html 内核一般通过jiffies值来获取当前时间.尽管该数值表示的是自上次系统启动到当前的 ...

  8. Linux 2.6内核中新的锁机制--RCU [转]

    2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用. 一. 引言 众所周知,为了保护共享 ...

  9. linux内核hz,linux内核中的HZ介绍

    时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 中定义或该文件包含的某个子平台相关文件中.作为通用的规则,即便如果知道 HZ 的值,在编程时 ...

最新文章

  1. 最全正則表達式汇总—想要的都有了
  2. 常用eclipse插件集合, 持续更新
  3. 系统集成项目管理工程师-项目沟通管理笔记
  4. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
  5. 15个相当不错的jQuery技巧
  6. SpringBoot笔记(二)
  7. 非线性回归模型(part3)--K近邻
  8. where is flag GV_IMMEDIATE_RESTART marked in SAP CRM WebClient UI
  9. 一年翻 3 倍,装机量 6 亿台的物联网操作系统又放大招!
  10. R之data.table速查手册
  11. 让你变懒的 Android Studio Live Templates
  12. USB接线定义和链接摄像头
  13. 温控PLC三菱风机程序设计多路多路风机,温度控制,时间控制
  14. js 如何计算当年清明节日期
  15. 91pay.php,电商网站使用支付宝转账付款功能代替支付宝支付接口
  16. mysql 周几_Mysql的日期转换成星期[某天对应周几]
  17. mtk插u盘如何休眠?_iOS13.3.1 U盘越狱卡代码问题,你也是吗?
  18. LNK 2001错误
  19. QPluginLoader 加载插件dll失败
  20. nexus配置阿里云仓库

热门文章

  1. 存储管理系统课程设计——C语言实现请求页式存储管理模拟系统
  2. VC++ FTP文件上传(断点续传)
  3. 使用python开发的图形界面的pdf拆分合并工具
  4. Matlab建模---数据拟合
  5. PTA实验题:6-2 Tree类的构造函数和成员函数 (10 分)
  6. iOS开发网络篇 一一 SDWebImage框架的基本使用
  7. 使用VRRP技术实现网关设备冗余,附详细配置实验
  8. 哥特巴赫猜想 尾递归 湘潭孕妇之后的自我检讨
  9. 使用cookiecutter创建pyramid项目
  10. dBSPL、dBu、dBV、dBm、dBVU、dBFS等等和分贝有关的名词解析