【发布时间】:2014-01-09 19:34:01
【问题描述】:
我的教授说建议使用 PIT 而不是 RTC 来实现基于 epoch 的循环调度器。他并没有真正提到任何具体的原因,我也想不出来。有什么想法吗?
【问题讨论】:
我的教授说建议使用 PIT 而不是 RTC 来实现基于 epoch 的循环调度器。他并没有真正提到任何具体的原因,我也想不出来。有什么想法吗?
【问题讨论】:
虽然这不能直接回答问题,但这里有一些关于选择抢占计时器的进一步见解。
在现代系统上(i586+;我不确定 i486 的外部本地 APIC (LAPIC) 是否有计时器)您都不应该使用,因为您总是获得本地 APIC 计时器,它是按核心的。还有更多:使用 PIT 或 RTC 进行定时器中断已经过时了。
LAPIC 计时器通常用于现代系统的抢占,而 HPET 用于高精度事件。在具有 HPET 的系统上,通常没有物理 PIT;此外,HPET 的前两个比较器能够替换 PIT 和 RTC 中断源,这对它们来说是最简单的配置,并且在大多数情况下是首选。
【讨论】:
【讨论】:
PIT 更快。 RTC 通常以不超过 8 kHz 的速度递增,并且最常配置为以 1 Hz 的频率递增(每秒一次)。
【讨论】:
我个人会使用 PIT(如果您只能在这两者之间进行选择,现代操作系统使用 HPET iirc)
第一,它可以以更快的频率产生中断(尽管我怀疑在毫秒内抢占进程是否有益)
二,它在PIC芯片上具有更高的优先级,这意味着它不能被其他IRQ中断。
我个人将 PIT 用于调度程序,将 RTC 计时器用于挂钟计时。
【讨论】:
RTC 可以更改(毕竟,它是一个普通的“时钟”),这意味着从操作系统的角度来看,它的值是不可信的。它也可能没有足够好的分辨率和/或 OS 调度程序中断所需的精度。
【讨论】: