学习完中断后,接下来都是定时中断这一巧妙的中断模式。定时器是在设定时间并且时间一到后就会响应执行设定好的事件,但其只处理一次,如同机械时钟的闹钟功能。而日常中的手机等电子设备设置闹钟后可配置为隔多久再响一次,这需要实现循环定时中断,在下面的内容中会对比说明。
在Linux Kernel中有两种常用的定时器,两者主要是精度的区别,在了解使用它们前,先了解如下几个概念:
1.节拍率(tick rate):系统定时器频率,该值在Linux Kernel里是静态配置好的,使用HZ这个宏,在include/asm-generic/param.h文件中有如下宏:
# define HZ CONFIG_HZ
而CONFIG_HZ在make menuconfig时已默认配置好,可以打开源码根目录下的.config文件,在我的机器上配置为CONFIG_HZ=250,即系统每1/CONFIG_HZ秒发生一次时钟中断,也就是说这种情况下时钟的精度为4ms,这在接下来说到的传统jiffies定时器时会用到。
2.节拍