请你来说一下linux内核中的Timer 定时器机制

本文探讨了Linux内核中的定时器机制,包括2.6.16之前使用低精度时钟的工作方式,以及2.6.16之后引入的高精度hrtimer及其原理。hrtimer通过统一的时间硬件设备封装,驱动了低精度定时器系统和内核进程调度。
摘要由CSDN通过智能技术生成

参考回答:

1)低精度时钟
Linux 2.6.16之前,内核只支持低精度时钟,内核定时器的工作方式:

1、系统启动后,会读取时钟源设备(RTC, HPET,PIT…),初始化当前系统时间。

2、内核会根据HZ(系统定时器频率,节拍率)参数值,设置时钟事件设备,启动tick
(节拍)中断。HZ表示1秒种产生多少个时钟硬件中断,tick就表示连续两个中断的间
隔时间。

3、设置时钟事件设备后,时钟事件设备会定时产生一个tick中断,触发时钟中断处
理函数,更新系统时钟,并检测timer wheel,进行超时事件的处理。

在上面工作方式下,Linux 2.6.16 之前,内核软件定时器采用timer wheel多级时间
轮的实现机制,维护操作系统的所有定时事件。timer wheel的触发是基于系统tick
周期性中断。

所以说这之前,linux只能支持ms级别的时钟,随着时钟源硬件设备的精度提高和软
件高精度计时的需求,有了高精度时钟的内核设计。

2)高精度时钟

Linux 2.6.16 ,内核支持了高精度的时钟,内核采用新的定时器hrtimer,其实现逻辑和Linux 2.6.16 之前定时器逻辑

区别:

hrtimer采用红黑树进行高精度定时器的管理,而不是时间轮;

高精度时钟定时器不在依赖系统的tick中断,而是基于事件触发。

旧内核的定时器实现依赖于系统定时器硬件定期的tick,基于该tick,内核会扫描
timer wheel处理超时事件,会更新jiffies,wall time(墙上时间,现实时间)&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值