我在RTOS中读到了两个不同的“中断延迟”定义。
“在计算中,中断延迟是从产生中断到服务中断源的过程所经过的时间” (来源:https://en.wikipedia.org/wiki/Interrupt_latency)
“能够保证外部中断与中断处理程序启动之间的最大延迟。” (来源:What makes a kernel/OS real-time?)
现在,我的问题是'中断延迟'的正确定义是什么?
例如:
外部中断发生时间戳: 00 hr:00 min:20秒
执行跳入ISR时的时间戳: 00 hr:00 min:25秒
维修后执行退出ISR时的时间戳: 00 hr:00 min:43秒
现在中断延迟时间是多少?是5秒吗?还是23秒?
答案 0 :(得分:1)
我认为第一个定义是正确的,但是你误解了中断在实践中是如何工作的以及它是什么意思和服务"。
控制流程是三级HW中断 - >中断服务程序 - >处理。 ISR通常非常短,只是清除中断源并将进程标记为准备好运行。
例如,您有一个调用read
来访问磁盘上数据的进程。此过程将阻塞,直到磁盘执行IO。一旦IO发生,硬件就会引发一个中断,通知进入ISR的CPU,清除中断,然后设置被阻止的进程,以便进行调度。
为什么需要测量中断延迟?因为这是所需的实际处理工作。如果中断需要在指定时间内响应(即它是一个实时系统),那么我们需要知道从中断开始直到我们开始处理该响应的时间。这意味着我们需要知道中断的延迟,直到我们的实时流程进行调度。