linux时间子系统
liuhangtiant
这个作者很懒,什么都没留下…
展开
-
时间子系统五——NO HZ浅析
这里首先要说一个tick这个概念,tick是分时操作系统的基础,主要用于多任务的切换。其实现原理就是起一个定时器,每隔固定的时间,就会超时一次,此时判断是否需要做任务切换,从而实现多任务分时复用CPU,超时时间由CONFIG_HZ来定义,如CONFIG_HZ=250则意味着每秒钟会发生250次ticks,也就是说定时器的超时时间是4ms。tick的发生实际上是由硬件定时器报中断到CPU,CPU做...原创 2020-03-01 22:31:34 · 1511 阅读 · 0 评论 -
时间子系统四——高精度定时器分析
本文简单解释一下高精度定时器的主要函数接口以及实现细节。hrtimer_init(struct hrtimer *timer, clockid_t clock_id, enum hrtimer_mode mode)高精度定时器的初始化,这里有两个参数要特别注意,clock_id和mode,其中clock_id指定基于哪一个时间域来做定时,一般来说有两个选择CLOCK_REALTIME和...原创 2020-02-16 12:38:58 · 520 阅读 · 0 评论 -
时间子系统三——低精度定时器和高精度定时器
先有低精度定时器,后来引入了高精度定时器。低精度定时器只能提供毫秒级别的定时时间,因为它实际上是依赖于jiffies的,一个jiffies的时间,就是其能够提供的最小定时时间,比如CONFIG_HZ配置为250,那么一个jiffies就是4ms,所以低精度定时器的精度就是4ms;而高精度定时器则不一样,它不依赖于jiffies,甚至jiffies是依赖于高精度定时器的,因为jiffies的累加实际...原创 2020-02-16 11:20:37 · 1109 阅读 · 0 评论 -
时间子系统二——clockevent之tick
简述clockevent的一个重要应用场景就是用于处理tick事件,在clockevent device之上,抽象出了一个tick device,分别用于维护clockevent的上下文和tick device上下文。clockevent和tick device的注册clockevent devicestruct clock_event_device { void (*event...原创 2020-01-12 00:17:39 · 659 阅读 · 0 评论 -
Linux时间子系统一——时间子系统综述
硬件timerTimer在硬件上是一个非常简单的东西(这里不考虑虚拟化,安全相关的问题),一般来说timer都会支持两种模式,一是periodic模式和free running模式,前者周期性的产生中断,后者一直往前累加到配置的最大值,报一次中断,称为one shot。软件抽象软件上将timer抽象成clocksource和clockevent,从名字大概就猜得出来,clocksourc...原创 2020-01-11 21:53:04 · 594 阅读 · 0 评论