linux内核里面用了很多的时钟,其实这些时钟的用处无外乎就几种:1.作为心跳,中断cpu;2.使得用户可以获取当前时间;3.实时测量;4.定时 服务。知道了使用目的后,我们来看看到底有哪些时钟供我们选择使用:关于这些时钟的概念,网上已经存在不少文章了,为了不重复(浪费互联网空间),咱就先来个引用。

/*摘录开始:http://blog.chinaunix.net/u1/55599/showart.php?id=1179259

1):实时时钟(RTC)

该时钟独立于CPU和其它芯片.即使PC断电,该时钟还是继续运行.该计时由一块单独的芯片处理,并把时钟值存放CMOS.该时间可参在IRQ8上周期性的产生时间信号.频率在2Hz ~ 8192Hz之间.但在linux中,只是用RTC来获取当前时间.

2):时间戳计时器(TSC)

CPU附带了一个64位的时间戳寄存器,当时钟信号到来的时候.该寄存器内容自动加1

3):可编程中断定时器(PIC)

该设备可以周期性的发送一个时间中断信号.发送中断信号的间隔可以对其进行编程控制.在linux系统中,该中断时间间隔由HZ表示.这个时间间隔也被称为一个节拍(tick).

在 ./include/asm-i386/param.h 定义

10#ifndef HZ

11#define HZ 100

12#endif

4):CPU本地定时器

在处理器的本地APIC还提供了另外的一定定时设备.CPU本地定时器也可以单次或者周期性的产生中断信号.与上次描述的PIC相比.它有以下几点的区别:

APIC本地计时器是32位.而PIC是16位.由此APIC本地计时器可以提供更低频率的中断信号

本地APIC只把中断信号发送给本地CPU.而PIC发送的中断信号任何CPU都可以处理

APIC定时器是基于总线时钟信号的.而PIC有自己的内部时钟振荡器

5):高精度计时器(HPET)

在linux2.6中增加了对HPET的支持.HPET是一种由intel开发的新型定时芯片.该设备有一组寄时器,每个寄时器对应有自己的时钟信号,时钟信号到来的时候就会自动加1.一个 hpet包括了一个固定频率的数值增加的计数器以及3到32个独立的计时器,这每一个计时器有包涵了一个比较器和一个寄存器(保存一个数值,表示触发中断时机)。每一个比较器都比较计数器中的数值和寄存器中的数值,当这两个数值相等时,将产生一个中断

实际上,在intel多理器系统与单处理器系统还有所不同:

在单处理系统中.所有计时活动过由PIC产生的时钟中断信号触发的

在多处理系统中,所有普通活动是由PIC产生的中断触发.所有具体的CPU活动,都由本地APIC触发的.

*/摘录完毕

好了,上面对这么多种时钟的概念已经阐述的很清楚了,那么他们之间到底有何联系呢?幸运的是,在2.6.21内核以后,一切变得不言自明了,2.6.21以上内核将时钟框架进行了进一步的抽象整理,抽象出了两个概念:

struct clocksource :对硬件时钟设备的抽象,描述时钟源,强调静态事物,源头

struct clock_event_device :时钟的事件的抽象,描述硬件时钟中断发生时要执行的动作,强调在时钟源上面的动态方面。

这两个概念被抽象出来以后,我们就可以用面向对象的思路来分析了。仔细看看这两个概念,它们的偶合性极低,但是还是有联系的,比如如果你将 clock_event_device设置成one-shot,而clocksource确是一个精度及其低的时钟源,那么系统的响应将会相当慢,它们实 际上会影响到对方。

仔细研究一下上面的众多时钟,有的可以产生中断,有的仅仅是一个计数器,有的...,那么我们怎么读时钟源啊,不要急,每个clocksource都有一个回调函数用来读取时钟源当前值:

struct clocksource {

linux内核配置高精度时钟,关于linux内核中使用的时钟相关推荐

  1. linux基于文本的配置工具,Linux基本配置和管理 3 ---- Linux命令行文本处理工具

    1 文件浏览(简单回顾) 1 cat 查看文件的内容 2 more 以翻页的形式查看,但是只能向下翻页 3 less 以翻页的形式查看,但是能够支持向上和向下翻页 4 head 默认是查看前10行,但 ...

  2. Linux内核配置选项的说明,Linux内核配置选项翻译

    Linux内核配置选项翻译 Linux内核配置选项翻译2.6.19.1(转) 内容目录 1. Code maturity level options 2 2. General setup 常规安装选项 ...

  3. linux安全配置技术论文,基于linux平台的web安全技术研究apache安全大学论文.doc

    基于linux平台的web安全技术研究apache安全大学论文 广州大学华软软件学院 --毕业论文 题目-Apache安全 学生姓名: 指导教师2015-5-10 摘 要 随着网络通信技术的不断发展, ...

  4. linux硬件配置软件,快速洞悉Linux系统软硬件配置

    官方网址:http://aspersa.googlecode.com/svn/html/summary.html summary是纯bash编写的脚本,能快速帮你洞悉你的LINUX软硬件配置,如果你正 ...

  5. linux内核配置usb虚拟串口,Linux USB虚拟串口设备

    Linux内核中usb设备侧驱动程序分成3个层次:UDC驱动程序.Gadget API和Gadget驱动程序.UDC驱动程序(USB控制器)直接访问硬件,控制USB设备和主机间的底层通信,向上层提供与 ...

  6. linux 内核配置v4l2,深入理解linux内核v4l2框架之videobuf2【转】

    Videobuf2框架 1. 什么是videobuf2框架? 它是一个针对多媒体设备的v4l2兼容驱动框架,是用户空间应用程序和设备驱动的中间层.它为驱动提供更为底层的模块化的内存管理功能. 它能够使 ...

  7. 【内核配置】六、修改内核自带的的LCD驱动源码并编译进内核 | 烧写到Mini2440__TD35 完整攻略...

    主   机:VMWare--Ubuntu-16.04.2-x64-100ask 开发板:Mini2440--256M NandFlash, 2M NorFlash, 64M SDRAM, LCD-TD ...

  8. Linux版本配置环境变量,如何linux环境下配置环境变量过程图解

    jdk下载地址: 在linux环境下的root同级目录下配置software目录 将下载好的jdk上传到software文件夹里面 (我使用的操作软件是) 到software这个目录下. 输入命令:c ...

  9. kali linux 网卡配置ip地址,Kali Linux常用服务配置教程获取IP地址

    Kali Linux常用服务配置教程获取IP地址 下面以 Kali Linux 为例,演示获取 IP 地址的方法 ( 1 )设置网络接口为自动获取 IP 地址.在 Kali Linux 的收藏夹中单击 ...

最新文章

  1. GitHub 上有什么好玩的项目?(附地址)
  2. 用DataBindings属性绑定控件的值
  3. c++学习笔记之基础---类内声明函数后在类外定义的一种方法
  4. spring boot Redis使用
  5. perl语言编程 第四版_2020年,5 种 将死的编程语言
  6. 前端返回的json中文变问号
  7. Mycat 安装配置
  8. (转)初次体验.net Ajax无刷新技术
  9. (计算机组成原理)第三章存储系统:本章习题
  10. zenmap工具说明及常用参数解释
  11. 论电子病历文本编辑器
  12. 25个个免费英文文献下载网站!
  13. VB中利用DrawText输出字符串且自动换行
  14. Python滑块验证码之腾讯防水墙简单测试版
  15. 【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码
  16. c++ opencv (学习笔记)inRange函数
  17. 网络伤感生活日志发布:来不及凋谢的花落
  18. 在Java中发送kafka消息
  19. 经典的机器学习200道面试题及答案
  20. 磁盘清理软件 智能清理Mac

热门文章

  1. 树莓派拓展模拟量采集(AD)功能
  2. 地址转换和端口映射及内网穿透的区别
  3. 计算机英语教学模式,英语教学模式计算机专业论文
  4. 准Z源逆变器模型预测控制Simulink仿真
  5. PS Suite Studio 初探
  6. SEO一场智慧心理之战
  7. ubuntu 20.04 自动重启网络
  8. 20221005CSP-J2/S2模拟赛总结
  9. 【SAP】为什么2023年后ABAP仍有广阔前景「来听听ChatGPT怎么说」
  10. 一键获取LOL英雄联盟所有英雄技能图片