一. 简介
定时器是我们最常用到的功能,一般用来完成定时功能,本章我们就来学习一下
Linux
内核提供的定时器
API
函数,通过这些定时器
API
函数我们可以完成很多要求定时的应用。
本文主要来简单学习一下,Linux内核时间管理的知识。
二. Linux内核的时间管理
1. 内核定时器简介
学习过
UCOS
或
FreeRTOS
的同学应该知道,
UCOS
或
FreeRTOS
是需要一个硬件定时器提供系统时钟,一般使用
Systick
作为系统时钟源。
同理,
Linux
要运行,也是需要一个系统时
钟的,至于这个系统时钟是由哪个定时器提供的,笔者没有去研究过
Linux
内核。
Linux
内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱
动编写者来说,最常用的定时器。
硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后
就会周期性的产生定时中断,系统使用定时中断来计时。中断周期性产生的频率就是系统频率,
也叫做节拍率
(tick rate)(
有的资料也叫系统频率
)
,比如
1000Hz
,
100Hz
等等说的就是系统节拍
率。
系统节拍率配置
系统节拍率是可以设置的,单位是
Hz
,我们在编译
Linux
内核源码时,可以通过图形化界面
设置系统节拍率,按照如下路径打开配置界面:
-> Kernel Features
-> Timer frequency (<choice> [=y])
进入 Linux内核源码的根目录,输入 "make menuconfig"命令打开配置界面。
选中 “
Timer frequency
”,打开以后如下图
所示:
![](https://i-blog.csdnimg.cn/blog_migrate/990fbda97bae3685162df283d8655341.png)
可以看出,可选的系统节拍率为
100Hz
、
200Hz
、
250Hz
、