首先是两个常用概念:Cycle和Tick。Cycle是由CPU主频决定的,而CPU主频是由CPU的物理特性决定的,因此它可以说是平台无关的。现在的主流CPU主频都是以G为单位了,所以1个cycle的单位一般在纳秒级别。Tick泛指一段时长(一般为两次timer interrupt间的时长,毫秒级),由操作系统指定(Linux中由Kernel决定,Windows 中由硬件抽象层HAL决定)。
Windows中,还有一个概念叫qunatum,它是线程调度的时间单位。它可分为若干个(如Vista中为2,Windows Server中为12个)Clock intervals(ticks)。Clock interval即两次timer interrupt间的时间间隔。一个clock interval一般为若干个毫秒(如x86单核体系中为10,x86和x64多核体系中为15),该值以100纳秒为单位存并放在KeMaximumIncrement这个内核变量中。quantums以1/3个tick为单位存放,因此1个tick就等于3个quantum单位。这样,Vista中一个quantum就有6个单位。注意.Net中DateTime::Ticks中的tick表示100纳秒,用于记录日期,和前面提到的tick不是一个概念。
Vista之前的系统以clock interval timer来作为quantum的计时。Vista(含Vista)之后,都是转化为clock cycle为计数。这之间的换算关系系统在启动时就算好并放在内核变量KiCyclesPerClockQuantum中。