Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 调度程序的RTC与PIT_Operating System_Osdev - Fatal编程技术网

Operating system 调度程序的RTC与PIT

Operating system 调度程序的RTC与PIT,operating-system,osdev,Operating System,Osdev,我的教授说,建议使用PIT而不是RTC来实现基于历元的循环调度程序。他没有真正提到任何具体原因,我也想不出任何具体原因。有什么想法吗?RTC可以更改(毕竟,它是一个正常的“时钟”),这意味着从操作系统的角度来看,它的值是不可信的。它也可能没有足够的分辨率和/或精度来满足操作系统调度程序中断的需要。PITs速度更快。RTC的增量通常不超过8 kHz,并且最常见的配置是以1 Hz(每秒一次)的频率增量。我个人会使用PIT(如果您只能在这两个选项中进行选择,现代操作系统使用HPET iirc) 第一,

我的教授说,建议使用PIT而不是RTC来实现基于历元的循环调度程序。他没有真正提到任何具体原因,我也想不出任何具体原因。有什么想法吗?

RTC可以更改(毕竟,它是一个正常的“时钟”),这意味着从操作系统的角度来看,它的值是不可信的。它也可能没有足够的分辨率和/或精度来满足操作系统调度程序中断的需要。

PITs速度更快。RTC的增量通常不超过8 kHz,并且最常见的配置是以1 Hz(每秒一次)的频率增量。

我个人会使用PIT(如果您只能在这两个选项中进行选择,现代操作系统使用HPET iirc)

第一,它可以以更快的频率产生中断(尽管我怀疑在毫秒内抢占进程是否有益)

第二,它在PIC芯片上具有更高的优先级,这意味着它不能被其他IRQ中断

就我个人而言,我使用PIT作为调度器,使用RTC计时器作为挂钟计时

  • PIT具有中断功能
  • PIT具有比实时时钟更高的分辨率

  • 虽然这并不能直接回答这个问题,但这里有一些关于选择抢占计时器的进一步见解

    在现代系统(i586+;我不确定i486的外部本地APIC(LAPIC)是否有计时器)上,两者都不应该使用,因为您总是获得本地APIC计时器,这是每个核心的。还有更多:使用PIT或RTC进行定时器中断已经过时


    LAPIC定时器通常用于现代系统的抢占,而HPET用于高精度事件。在有HPET的系统上,通常没有物理坑;此外,HPET的前两个比较器能够替换PIT和RTC中断源,这是最简单的配置,在大多数情况下是首选。

    什么是“可以更改”。。。?只要您可以访问IO端口,您还可以更改PIT的频率。此外,RTC也可以像PIT一样工作,生成周期性中断,尽管速度稍慢。您的第一点无效,RTC确实具有周期性中断功能。是的,您是对的。RTC通常提供警报和其他中断。但在我的记忆中,非PC系统中的RTC就像一个挂钟。