Linux时钟系列-02-时钟、定时器、计数器
时钟,即Clock,一般包括两个含义:
一个含义指的是在硬件层面按照固定频率产生的时钟滴答(Clock Tick),它一般由石英晶振驱动,是机器上各个硬件最终协调运行起来的动力源,起到引擎的作用,可以说一切计算机硬件都是基于时钟滴答运行起来的。
另一个含义指的是表示日期时间的时钟(Date Time Clock),跟Real Time Clock、Wall Clock的含义差不多。
在本文中,如果没有特殊说明,我们提到Clock的时候指的就是它的第一个含义,请注意区分。
定时器,即Timer,它基于Clock计时,每隔一段时间触发一次。Timer基于Clock实现,粒度比Clock粗。
计数器,即Counter,它由Clock触发更新,一般Clock每滴答一次,Counter的数值会加1。
在上一篇文章中,我们提到了一些概念,下面按照上述三个维度给它们进行了区分,供参考:
概念 | 类别 | 说明 |
Hardware Clock | Clock(Date Time) | 一般由RTC硬件驱动 |
System Clock | Clock(Date Time) | 一般由TSC驱动 |
Linux Clock Source | Clock(Tick) | 驱动Linux内核做定时任务的时钟源 |
TSC(Time Stamp Counter) | Counter | 本质上是一个基于CPU时钟信号的计数器 |
HPET(High Precision Event Timer) | Timer | linux可选时钟源之一,基于内置晶振产生时钟信号,驱动Linux内核做定时任务。 |
ACPI_PM(ACPI Power Management Timer) | Timer | linux可选时钟源之一,基于内置晶振产生时钟信号,驱动Linux内核做定时任务。 |
PIT(Programmable Interval Timer) | Timer | linux可选时钟源之一,基于内置晶振产生时钟信号,驱动Linux内核做定时任务。 |
RTC(Real Time Clock) | Clock(Date Time)/Clock(Tick) | RTC在硬件层面指的是带电池和晶振的,用于维持系统时间的东西,所以是Clock(Date Time);在系统层面,它可以作为Linux系统的时钟源,所以是Clock(Tick)。 |
晶振 | Clock(Tick) | 驱动计算机硬件协调工作的源动力(引擎) |