是什么让 RTOS 行为可预测?
What makes RTOS behaviour predictable ?
当可能涉及其他变量和因素(如硬件)时,如何确保中断延迟不会超过某个值?
硬件延迟是可以预测的。它不一定是常数,但它肯定是有界的——例如中断进入通常是 12 个周期,但有时可能需要 15 个周期。
RTOS 延迟是可以预测的。它也不是恒定的,但例如您可以确定,RTOS 不会在任何时候阻止中断超过 1000 个周期。通常它会阻止它们的时间短得多,但绝不会超过规定的时间。
如果您的应用程序没有做一些奇怪的事情(比如 while (1);
在具有最高优先级的线程中),那么整个系统的延迟将是硬件延迟和 RTOS 延迟的总和。
这里的重要事实是,使用 real-time 操作系统编写应用程序并不是应用程序也是 real-time 的唯一要求。在您的应用程序中,您必须确保不违反 real-time 约束。 RTOS 的主要工作是 NOT 妨碍您这样做,因此它可能不会引入 random/unpredictable 延迟。
通常,RTOS 中最重要的 "predictable" 事情是未阻塞的最高优先级线程正在执行。时期。在 GPOS 中(比如台式机、平板电脑或智能手机中的 GPOS),情况并非如此,因为调度程序通过允许它们 运行 一段时间来主动防止低优先级线程饥饿,即使现在有更重要的事情要做。这使得应用程序的行为不可预测,因为有一天它可能会在 10us 内做出反应,而在另一天它可能会在 10s 内做出反应,因为调度程序认为这是将日志保存到硬盘驱动器或可能进行垃圾收集的好时机.
或者您可以认为对于 RTOS,延迟在微秒范围内,也许是几毫秒。对于 GPOS,最大延迟可能是几十秒。
当可能涉及其他变量和因素(如硬件)时,如何确保中断延迟不会超过某个值?
硬件延迟是可以预测的。它不一定是常数,但它肯定是有界的——例如中断进入通常是 12 个周期,但有时可能需要 15 个周期。
RTOS 延迟是可以预测的。它也不是恒定的,但例如您可以确定,RTOS 不会在任何时候阻止中断超过 1000 个周期。通常它会阻止它们的时间短得多,但绝不会超过规定的时间。
如果您的应用程序没有做一些奇怪的事情(比如 while (1);
在具有最高优先级的线程中),那么整个系统的延迟将是硬件延迟和 RTOS 延迟的总和。
这里的重要事实是,使用 real-time 操作系统编写应用程序并不是应用程序也是 real-time 的唯一要求。在您的应用程序中,您必须确保不违反 real-time 约束。 RTOS 的主要工作是 NOT 妨碍您这样做,因此它可能不会引入 random/unpredictable 延迟。
通常,RTOS 中最重要的 "predictable" 事情是未阻塞的最高优先级线程正在执行。时期。在 GPOS 中(比如台式机、平板电脑或智能手机中的 GPOS),情况并非如此,因为调度程序通过允许它们 运行 一段时间来主动防止低优先级线程饥饿,即使现在有更重要的事情要做。这使得应用程序的行为不可预测,因为有一天它可能会在 10us 内做出反应,而在另一天它可能会在 10s 内做出反应,因为调度程序认为这是将日志保存到硬盘驱动器或可能进行垃圾收集的好时机.
或者您可以认为对于 RTOS,延迟在微秒范围内,也许是几毫秒。对于 GPOS,最大延迟可能是几十秒。