RTOS 中中断延迟的正确定义是啥?

Posted

技术标签:

【中文标题】RTOS 中中断延迟的正确定义是啥?【英文标题】:What is the correct definition of interrupt latency in RTOS?RTOS 中中断延迟的正确定义是什么? 【发布时间】:2016-01-05 10:52:53 【问题描述】:

我阅读了 RTOS 中“中断延迟”的两种不同定义。

    “在计算中,中断延迟是从产生中断到服务中断源所经过的时间” (来源:https://en.wikipedia.org/wiki/Interrupt_latency)

    “保证外部中断与中断处理程序启动之间的最大延迟的能力。” (来源:What makes a kernel/OS real-time?)

现在,我的问题是“中断延迟”的正确定义是什么?

例如:

外部中断发生时间戳00 hr:00 min:20 seconds 在 ISR 内跳转执行时的时间戳:00 hr:00 min:25 秒 服务后执行退出 ISR 的时间戳:00 hr:00 min:43 seconds

现在中断延迟时间是多少?是5秒吗?还是 23 秒?

【问题讨论】:

第二个是determinism而不是latency的定义。 【参考方案1】:

我认为第一个定义是正确的,但是您误解了中断在实践中的工作方式以及“已服务”的含义。

控制流程是三个阶段的硬件中断->中断服务程序->进程。 ISR 通常很短,只是清除中断源并将进程标记为准备好运行。

例如,您有一个进程调用read 来访问磁盘上的数据。此过程将阻塞,直到磁盘执行完 IO。一旦 IO 发生,HW 就会引发中断,通知 CPU 进入 ISR,清除中断,然后将被阻塞的进程设置为可以调度。

为什么这是需要测量的中断延迟?因为这是所需的实际处理工作的地方。如果中断需要在指定时间内做出响应(即它是一个实时系统),那么我们需要知道从中断到我们开始处理该响应的时间。这意味着我们需要知道从中断到我们的实时进程被安排的延迟。

【讨论】:

是的,你是对的,我误解了“服务”一词。如果我理解正确,从您的回复中,我可以说“中断延迟是内核清除中断并解除阻塞(在此中断上)线程所花费的时间”? @Benvin:我不会说。中断延迟只是中断事件和中断处理程序启动之间的时间。上下文切换到任务所需的时间是上下文切换时间,由您的 RTOS 实现决定,执行中断处理程序所需的时间在您的控制范围内(即您编写代码 - 它是尽可能快且具有确定性)。从中断到处理程序线程执行所花费的时间可能很重要并且需要确定性,但这不是中断延迟

以上是关于RTOS 中中断延迟的正确定义是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 gdb 中中断失败断言的正确方法是啥?

embOS推出一个RTOS的革命性功能,支持微秒和CPU时钟周期级分辨率的任务调度和API延迟参数设置

embOS推出一个RTOS的革命性功能,支持微秒和CPU时钟周期级分辨率的任务调度和API延迟参数设置

使用 RTOS 实现(直流电机)PI 电流控制器的正确方法 [关闭]

在非 RTOS 系统中是不是可以中断任务

CMSIS-RTOS 中断处理Interrupt Handling