Linux和Windows中的时间管理

Linux大全评论1.5K views阅读模式

首先是两个常用概念: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中。

企鹅博客
  • 本文由 发表于 2020年9月17日 15:46:19
  • 转载请务必保留本文链接:https://www.qieseo.com/209845.html

发表评论