为什么在有PIT可用时需要TSC

use*_*879 4 linux timer interrupt linux-kernel

我正在阅读"了解Linux内核",其中有三个时钟

  1. 实时时钟

  2. 时间戳计数器(TSC)

  3. 可编程间隔定时器(PIT)

关于这些我几乎没有问题.

  1. 为什么计算机开机后不使用实时时钟?

  2. 系统运行时是否正在运行?

  3. TSC寄存器使用PIT,那么为什么我们需要基于TSC寄存器的时序?

  4. 即使在系统运行了一段时间后,来自/ proc/interrupts的IRQ8的值为cpu0提供1,为其他提供0.为什么只有一个来自IRQ8的中断,即实时时钟.

这不是一个功课问题

CL.*_*CL. 6

  1. RTC不经常使用,因为它的寄存器访问速度很慢.
  2. RTC 始终在运行(这就是为什么它有自己的电池).但是,现在它的唯一目的是在系统不运行时保持时间.
  3. 可以比PIT更快地访问TSC.
  4. 内核总是尝试使用可以以最有效的方式编程的定时器,因此一旦检测到后者,它就会从PIT切换到CPU本地的基于TSC的定时器(本地APIC定时器).在/proc/interrupts,LAPIC中断没有数字但是被命名LOC.