Timer 内核是否可以设置;“硬件定时器”;CPU是否有专用的硬件定时器用于调度?

Timer 内核是否可以设置;“硬件定时器”;CPU是否有专用的硬件定时器用于调度?,timer,operating-system,kernel,cpu,scheduling,Timer,Operating System,Kernel,Cpu,Scheduling,根据我的理解,CPU有一个“硬件定时器”,在其间隔到期时触发中断 内核使用此硬件计时器实现进程的调度机制,因此如果硬件计时器触发编号为123的中断,内核会将此中断编号映射到执行调度程序代码的中断处理程序(该处理程序将决定下一步执行哪个进程) 我有两个问题: 内核可以设置硬件计时器的间隔吗,或者间隔是一个不能通过编程更改的固定数字吗 CPU是否有用于调度的专用硬件计时器,或者是否有许多硬件计时器,内核可以选择要用于调度的计时器 编辑:我更感兴趣的硬件体系结构是PC,但我想知道其他体系结构(例如:

根据我的理解,CPU有一个“硬件定时器”,在其间隔到期时触发中断

内核使用此硬件计时器实现进程的调度机制,因此如果硬件计时器触发编号为
123
的中断,内核会将此中断编号映射到执行调度程序代码的中断处理程序(该处理程序将决定下一步执行哪个进程)

我有两个问题:

  • 内核可以设置硬件计时器的间隔吗,或者间隔是一个不能通过编程更改的固定数字吗
  • CPU是否有用于调度的专用硬件计时器,或者是否有许多硬件计时器,内核可以选择要用于调度的计时器


  • 编辑:我更感兴趣的硬件体系结构是PC,但我想知道其他体系结构(例如:手机、raspberry PI等)是否以类似方式工作。

    详细信息是硬件特定的(可能与各种主板、芯片组、处理器不同;请阅读)。了解(和)

    另请参见


    (所以这两个问题的答案通常都是肯定的)

    详细信息是特定于硬件的(不同的主板、芯片组、处理器可能不同;请阅读相关内容)。了解(和)

    另请参见


    (所以这两个问题的答案通常都是肯定的)

    从早期开始,IBM兼容PC就有PITs(可编程间隔计时器):IBM PC和IBM PC XT都有Intel 8253,IBM PC AT推出了Intel 8254

    摘自1984年4月的《IBM PC技术参考》,第1-11页:

    系统定时器 系统使用三个可编程定时器/计数器,如下所示:通道0是一个通用定时器,为实现一天中的时间时钟、通道1时间和从直接存储器访问(DMA)通道请求刷新周期提供恒定的时基,通道2支持扬声器的音调生成。[……]

    通道0正是“恒定时基”,即您要求的“间隔”。回答你的第一个问题,它是可变的;它是可编程的间隔计时器

    然而,原始IBM PC中内置的CPU是Intel 8088,基本上是带有8位数据总线的Intel 8086。真正的模式是当时最先进的;几年后,Intel 80286引入了保护模式,因此在DOS主宰市场的时代,有效的多任务处理,更不用说抢占式多任务或多线程处理了

    快进到IBM PC AT,世界上有幸拥有支持保护模式的CPU,Intel 80286,并引入Intel 8254,8253的“[…]超集”(来自8254 PIT数据表)。如果您真的想深入了解坑,请阅读底部链接的8253/8254数据表。它可能也值得一看Linux。因为最新的内核太复杂了,不可能在二十分钟内真正理解特定的部分,我建议你看看,第一个版本
    \u timer\u interrupt
    内核/system\u调用中。s
    可能很有趣,从那里你可以去任何你想去的地方

    关于第二个问题:有多个计时器源,但只有一个适合间隔计时,即通道0。IBM兼容程序仍然符合上面所示的系统计时器布局。它们保留了相同的功能,但可能会在此基础上增加更多功能,或者改变硬件的工作方式和打包方式。现在,确实存在像高分辨率计时器一样的附加计时器,但使用它们进行中断计时会破坏兼容性



    从早期开始,IBM兼容PC就有PIT(可编程间隔计时器):IBM PC和IBM PC XT都有Intel 8253,IBM PC AT推出Intel 8254

    摘自1984年4月的《IBM PC技术参考》,第1-11页:

    系统定时器 系统使用三个可编程定时器/计数器,如下所示:通道0是一个通用定时器,为实现一天中的时间时钟、通道1时间和从直接存储器访问(DMA)通道请求刷新周期提供恒定的时基,通道2支持扬声器的音调生成。[……]

    通道0正是“恒定时基”,即您要求的“间隔”。回答你的第一个问题,它是可变的;它是可编程的间隔计时器

    然而,原始IBM PC中内置的CPU是Intel 8088,基本上是带有8位数据总线的Intel 8086。真正的模式是当时最先进的;几年后,Intel 80286引入了保护模式,因此在DOS主宰市场的时代,有效的多任务处理,更不用说抢占式多任务或多线程处理了

    快进到IBM PC AT,世界上有幸拥有支持保护模式的CPU,Intel 80286,并引入Intel 8254,8253的“[…]超集”(来自8254 PIT数据表)。如果您真的想深入了解坑,请阅读底部链接的8253/8254数据表。它可能也值得一看Linux。因为最新的内核太复杂了,不可能在二十分钟内真正理解特定的部分,我建议你看看,第一个版本
    \u timer\u interrupt
    内核/system\u调用中。s
    可能很有趣,从那里你可以去任何你想去的地方

    关于第二个问题:有多个计时器源,但只有一个适合间隔计时,即通道0。IBM兼容程序仍然符合SystemT