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

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

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

  2. “保证外部中断与中断处理程序启动之间的最大延迟的能力。” (来源: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的定义。

标签: interrupt latency rtos


【解决方案1】:

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

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

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

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

【讨论】:

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