Linux时间子系统一——时间子系统综述

本文介绍了Linux时间子系统,包括硬件timer的periodic和free running模式,软件上的clocksource和clockevent抽象,以及TICK在分时操作系统中的作用。CONFIG_HZ的设置影响中断频率和资源消耗。同时,文章讲解了高精度和低精度timer的工作原理,以及如何通过OFFSET维持系统时间的准确性。
摘要由CSDN通过智能技术生成

硬件timer


Timer在硬件上是一个非常简单的东西(这里不考虑虚拟化,安全相关的问题),一般来说timer都会支持两种模式,一是periodic模式和free running模式,前者周期性的产生中断,后者一直往前累加到配置的最大值,报一次中断,称为one shot。

软件抽象


软件上将timer抽象成clocksource和clockevent,从名字大概就猜得出来,clocksource是提供时间信息的,如当前的系统时间;而clockevent是提供事件信息的,就是在未来某个时间点提醒CPU某个事件需要处理了,比如定时器超时了,或者一个新的tick的到来。

TICK


现代操作系统基本都是分时操作系统,也就是说多任务分时共享CPU,而分时的基础就是timer,所以timer驱动是操作系统基础架构性质的驱动,从timer的角度去理解操作系统,会对操作系统有一个更加宏观和具体化的认识。
Timer之所以可以让多进城轮动起来,是因为它会周期性的产生中断,如CONFIG_HZ配置为250,意味着每4毫秒产生一次中断,而每次中断来的时候jiffs会增加一,所以jiffs是一个内核里面很重要的计时单位。在中断处理函数里面判断当前进程的时间片是否用完,如果用完的话就选择另外一个进程,这是分时复用最核心的逻辑。
CONFIG_HZ并不是越大越好,也不是越小越好,如果CONFIG_HZ太大,会导致频繁的产生中断,中断的软件栈会消耗过多的CPU资源,如果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值