Timer 系统时钟中断优先级和阻塞中断

Timer 系统时钟中断优先级和阻塞中断,timer,operating-system,interrupt,Timer,Operating System,Interrupt,假设我们有一个操作系统,它运行在一个完全符合其要求的CPU上。这个操作系统是滴答驱动的。系统时钟中断来自外部定时器(周期模式),为了简单起见,外部定时器连接到一些CPU IRQn引脚 IRQ引脚按中断优先级排序。IRQ0具有最高优先级,IRQn具有最低优先级。优先权的存在至少有两个原因。第一个当然是当两个中断同时到达时,选择一个优先级较高的中断。第二个原因如下:当中断发生时,硬件会禁用进一步的中断。当中断处于ISR启用状态(可能的嵌套中断)时,只能发生优先级较高的中断。我对此有一些疑问 我的第一

假设我们有一个操作系统,它运行在一个完全符合其要求的CPU上。这个操作系统是滴答驱动的。系统时钟中断来自外部定时器(周期模式),为了简单起见,外部定时器连接到一些CPU IRQn引脚

IRQ引脚按中断优先级排序。IRQ0具有最高优先级,IRQn具有最低优先级。优先权的存在至少有两个原因。第一个当然是当两个中断同时到达时,选择一个优先级较高的中断。第二个原因如下:当中断发生时,硬件会禁用进一步的中断。当中断处于ISR启用状态(可能的嵌套中断)时,只能发生优先级较高的中断。我对此有一些疑问

我的第一个问题可能非常简单,我可以自己回答(也许),但我想读可靠的答案

  • 如何选择计时器勾选优先级?它是系统中最低的中断优先级吗?*
这是第二个问题

  • 如果计时器滴答声中断恰好发生在CPU为另一个中断提供服务时,并且进一步的中断被禁用,该怎么办?
这是我的补充。如果发生上述情况(在第二个问题中),则有可能丢失系统滴答声。它会引起什么大问题吗

*如果计时器勾号优先级不是系统中的最低中断优先级,则可能出现这样的情况:CPU处于ISR中,优先级低于系统勾号中断,并启用进一步的中断,并且我们可能需要调度的用户进程存储在堆栈上的某个位置,在系统勾号例程中找不到它

我知道这一切都可能依赖于系统,但我对任何类似于这种情况的典型解决方案都感兴趣


对不起,我说的是英语。

通常,计时器计时中断用于超时那些要求超时的系统调用,例如I/O读取调用和线程间同步等待。在那些I/O/无论什么完成都与超时“同时”发生的情况下,给完成中断一个比超时更高的优先级似乎是合理的,也就是说,它只是偷偷潜入了电线下:)我怀疑它没有太多,但是,从整体性能来看。我的意思是,为什么要担心呢?如果勾号中断延迟到更高优先级的中断完成,它可能会发现,也可能不会发现设置为触发的超时已从其队列中消失/whatever-OK,因此它除了返回中断外,什么也不做。如果计时器中断了一个低优先级中断,该中断即将发出超时呼叫完成的信号,那么是的,系统必须设计为向呼叫发起人线程和中断的ISR发出呼叫失败的信号。很有趣,不是吗:)非常感谢。我想是的,但我还是有点担心我的想法。“这个操作系统是滴答驱动的”首先,你应该试着在这一点上更精确一点。打勾的目的到底是什么?是否提供全球系统时间?安排时间?什么是由滴答声驱动的?当您知道您能够根据勾号所驱动的操作系统功能的重要性为勾号分配适当的优先级时。@DanielJour也谢谢您。