内核知道连续两次时钟中断的间隔时间,而这个间隔时间就是所谓的节拍,它是从节拍率计算而来。
节拍率:
节拍率也叫系统定时器(硬件)频率或时钟中断频率,用HZ来度量。在x86体系结构下,节拍率默认100HZ。其实如何确定HZ值是一门很大的学问。提高HZ等同于提高中断解析度。比如HZ=100的时钟的执行粒度为10ms,即系统中的周期事件最快为每10ms运行一次,但当HZ=1000时,解析度为1ms——精细了10倍。这对于触发定时器超时,可以提高准确度。其实高的HZ会加重系统负担,因为每一次时钟中断就要去执行相应的中断处理程序,这样占用处理器的时间会增多。Linux支持无节拍操作,会动态调整时钟中断周期,使得空闲时不会被不必要的时钟中断打断,可以省电。
jiffies:
全局变量jiffies(unsigned long)用来记录自系统启动以来产生的节拍的总数。每次时钟中断就会增加该值,所以jiffies一秒内增加的值就为HZ。所以系统运行时间等于jiffies/HZ。
实时时钟RTC:
RTC是用来持久存放系统时间的设备,即便系统关闭后,它也可以靠主板上的微型电池提供的电力继续为系统计时。RTC最主要的作用是在启动时初始化xtime变量,以便得到墙上时间。与RTC相应的是系统定时器。系统定时器的根本思想是——提供一种周期性触发中断机制。
时钟中断处理程序:
与体系结构相关的例程作为系统定时器的中断处理程序而注册到内核中,以便在产生时钟中断时,它能够相应地运行。
- 获得xtime_lock锁,以便对访问jiffies_64和墙上时间xtime进行保护。
- 需要时应答或重新设置系统时钟。
- 周期性地使用墙上时间更新实时时钟。
- 调用体系结构无关的时钟例程,tick_periodic()。
tick_periodic()用来进行与体系结构无关的操作。
- 给jiffies_64变量增加1。
- 更新资源消耗的统计值,如当前进程消耗的系统时间和用户时间。
- 执行已经到期的动态定时器。
- 执行scheduler_tick()。
- 更新墙上时间,该时间存放在xtime变量中。
- 计算平均负载值。
定时器:
我们之前提到的下半部推后执行,就需要定时器来告诉我们到底推后到何时。定时器的使用很简单,你只需要执行一些初始化工作,设置一个超时时间,指定超时发生后执行的函数,然后激活定时器就OK了。指定的函数将在定时器到期时自动执行。定时器并不周期运行,超时后自行撤销,需要重新创建。
分享到:
相关推荐
论文《Linux内核中一种高精度定时器的设计与实现》
linux内核源代码分析-定时器与时间管理.ppt
主要是对linux内核中的定时器的使用编写的一个例子,代码中包括timer.c和makefile文件,还有一些已经编译的文件,其中有个timer.ko文件就是内核模块文件,在终端使用 insmod timer.ko就可以插入到linux内核(要与...
linux 内核定时器编程: 包括代码程序和makefile文件 my_timer定时器每个1s 打印1 和 second_timer定时器每隔2s打印2 将rar修改为.tar.bz2
LINUX内核定时器的使用 LINUX内核定时器的使用
这是一个Linux内核定时器的实例,可以学习使用
linux 内核定时器使用模板 摘自宋宝华书中
本文提出一种linux用户空间下的一种高性能定时器池的实现方法,实现主要基于时间轮和红黑树,以及linux内核提供了一种利于管理的定时器句柄timerfd。结合红黑树、位图、时间轮等技术,设计一种高性能级定时器池,池...
这是一个内核定时器程序,写出了内核定时器的基本骨架,实现每隔10秒打印一句话。
linux下的C语言开发(定时器) 定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其实,在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器就相当于系统每隔一段时间给...
Linux 驱动内核定时器
本书填补了Linux内核理论和实践细节之间的鸿沟。Robed Love著,陈莉君翻译。 本书针对Linux 2.6内核,包括O(1)调度程序、抢占式内核、块I/O层以及I/O调度程序等。本书还包含了Linux内核开发者在开发时需要用到的很多...
一种基于内核定时器和工作队列的Linux rootkit.pdf
LINux系统内核定时器机制的操作系统课程设计。内有LInux操作系统内核定时器机制的详细讲解
本书填补了Linux内核理论和实践细节之间的鸿沟。本书针对Linux 2.6内核,包括O(1)调度程序、抢占式内核、块I/O层以及I/O调度程序等。本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程...
摘要视图订阅登录 | 注册Linux时间管系统(7)01.struct hrtimer {1251838次第1606名51篇0篇4篇555条定时器的到期时间用k
本文介绍了Linux系统中内核定时器的应用。
第2部分第6次课linux2.6内核之系统调用及定时器详解.ppt
5. Linux内核定时器 第三天 1. Linux进程控制 2. Linux进程调度 3. Linux系统调用 4. Proc文件系统 5. Linux内核异常分析 第四天 1. 嵌入式Linux产品开发流程 2. 交叉工具链 3. 嵌入式Linux内核制作 4. 根文件系统...
第2部分第6次课-linux2.6内核之系统调用及定时器..ppt