Linux时钟实现和管理(Linux Kernel development 3rd)
简介 时间间隔 这个概念在内核中非常重要。大量多的延时函数都是依赖于时间。 周期性函数 进程调度 屏幕刷新 延时硬盘读写 系统从开机到现在运行了多久 当前的日期 上面列举的都是用到周期的 过去了多久,时间在系统中该怎么衡量核心问题。 相对时间 从某一刻起后多久开始做某事。 五秒后发射就是相对于现在一段时间。 绝对时间 日期,经历了多久,往往是一个大的时间。 周期任务和延迟任务 周期任务 依赖于系统时钟,系统时钟是一个可编程硬件。每隔固定时间就发起中断。 内核知道每秒多少次中断,根据间隔和中断次数,可以用来衡量时间。 系统时钟是核心 这是一个硬件。 一个可编程硬件,即可以配置,可以有内核控制。 用来计量时间流逝。 隔一段时间发起一次中断,中断捕获就更新时间。然后执行对应的函数。 延迟任务 一般是事件,时间发生多久后执行某个响应函数。 主要依赖于动态定时器 动态定时器 从开始计时的那一刻开始,多久后执行某个任务。 这也是后面的主讲。 案例 软盘驱动在一定时间得不到响应就关闭。 时间衡量 依赖硬件 系统时钟 时钟频率 可配置 转换 1s = 时钟周期 * 时钟频率 时钟周期 = 1s / 时钟频率 总的时间 = 时钟周期 * 次数 根据换算方程可以看到时钟周期和过去时间 动态定时器 定时器 用来倒计时的,倒计时多久执行某个任务。 这个也是主要的核心中的核心。 内核管理和衡量时间 衡量时间