加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

浅析Linux中的时间编程和实现原理(四)Linux 内核的工作

发布时间:2016-01-16 04:12:36 所属栏目:Linux 来源:网络整理
导读:回顾 近年来,随着 Linux 的广泛使用,对时间编程提出了更高的要求。实时应用、多媒体软件对时钟和定时器的精度要求不断提高,在早期 Linux 内核中,定时器所能

每一个具体的高精度定时器用 structhrtimer 表示,并且是红黑树的一个节点。

在多处理器系统中,每个 CPU 都保存和维护自己的高精度定时器,为了同步和通知的需要处理器间的消息通信将引入不可忍受的延迟。要知道,hrtimer 的精度要求是纳秒级别的。在每个 CPU 上,hrtimer 还分为两大类:

Monotonic:与系统时间无关的自然流失的时间,不可以被人修改。

Real time:实时时间即系统时间,可以被人修改。

因此每个 CPU 都需要两个 clock_base 数据结构:一个指向所有 monotonic hrtimer;另一个指向所有的 realtime hrtimer。

clock_base 数据结构中,active 指向一个红黑树,每个 hrtimer 都是该红黑树的一个节点,用到期时间作为 key。这样所有的定时器便按照到期时间的先后被顺序加入这棵平衡树。first 指向最近到期的 hrtimer, 即红黑树最左边的叶子节点。

这种数据结构组织是很清晰和简单的,理解了这些数据结构,描述 hrtimer 的具体操作便十分容易了。

添加 Timer,即在相应的 clock_base 指向的红黑树中增加一个新的节点,红黑树的 key 由 hrtimer 的到期时间表示,因此越早到期的 hrtimer 在树上越靠左。

删除 Timer,即从红黑树上删除该 hrtimer。

hrtimer 是如何触发的

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读