浅析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 是如何触发的 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |