定时器中断与虚拟循环
Timer interrrupts vs Dummy loops
在区分体系结构、编程问题和操作系统方面,使用定时器中断而不是虚拟循环来实现时间延迟有什么优势?任何帮助将不胜感激。提前致谢。
虚拟循环取决于处理器速度。当您使用定时器中断时,您将处理对事件的更快响应,并且您将提供功耗。
一旦设置了硬件计时器,它就会独立于 CPU 正在执行的任何代码进行计数。 CPU 可以 运行 另一项任务、服务中断,甚至可以在计时器 运行ning 时进入睡眠状态以节省电量。然后当定时器中断发生时 CPU 将唤醒 and/or 切换回等待任务以服务定时器到期。计时器的持续时间不受 CPU 在计时器计数时所做的任何事情的影响。
在虚拟循环中,CPU 正忙于计数,因此它无法切换到另一项任务或进入睡眠状态。如果虚拟循环被中断,则周期将增加处理中断所需的时间。换句话说,在处理中断时,虚拟循环暂停。
虚拟循环的持续时间可能会受到编译器 and/or 链接器选项的影响。例如,如果您更改编译器优化级别,则虚拟循环的速度可能会发生变化。或者,如果虚拟循环函数位于具有不同数量等待状态的不同内存中,则虚拟循环的速度可能会发生变化。硬件计时器将不受这些更改的影响。
虚拟循环需要 CPU 持续工作(增加计数器,或将阈值与系统计时器进行比较)。
CPU 时间无所事事,因此得名 Dummy Loop。
在处理多项任务时 OS,这很糟糕,因为这些时间本来可以用来做其他事情。
如果您只有一项任务/没有其他事情可做。是时候花在低能耗模式上了(除了省电外,这对电池供电的设备非常重要)。
在区分体系结构、编程问题和操作系统方面,使用定时器中断而不是虚拟循环来实现时间延迟有什么优势?任何帮助将不胜感激。提前致谢。
虚拟循环取决于处理器速度。当您使用定时器中断时,您将处理对事件的更快响应,并且您将提供功耗。
一旦设置了硬件计时器,它就会独立于 CPU 正在执行的任何代码进行计数。 CPU 可以 运行 另一项任务、服务中断,甚至可以在计时器 运行ning 时进入睡眠状态以节省电量。然后当定时器中断发生时 CPU 将唤醒 and/or 切换回等待任务以服务定时器到期。计时器的持续时间不受 CPU 在计时器计数时所做的任何事情的影响。
在虚拟循环中,CPU 正忙于计数,因此它无法切换到另一项任务或进入睡眠状态。如果虚拟循环被中断,则周期将增加处理中断所需的时间。换句话说,在处理中断时,虚拟循环暂停。
虚拟循环的持续时间可能会受到编译器 and/or 链接器选项的影响。例如,如果您更改编译器优化级别,则虚拟循环的速度可能会发生变化。或者,如果虚拟循环函数位于具有不同数量等待状态的不同内存中,则虚拟循环的速度可能会发生变化。硬件计时器将不受这些更改的影响。
虚拟循环需要 CPU 持续工作(增加计数器,或将阈值与系统计时器进行比较)。
CPU 时间无所事事,因此得名 Dummy Loop。
在处理多项任务时 OS,这很糟糕,因为这些时间本来可以用来做其他事情。
如果您只有一项任务/没有其他事情可做。是时候花在低能耗模式上了(除了省电外,这对电池供电的设备非常重要)。