1

ThreadX 被认为是一个 RTOS。我知道 RTOS 的一般定义和要求,但是,任何人都可以帮助阐明为什么 ThreadX 可以被称为 RTOS,或者操作系统的哪些功能使其具有实时能力?

谢谢~

4

4 回答 4

2

当程序员谈论实时操作系统时,他们经常提到与管理多个进程或线程相关的特性:互斥体、信号量和进程间(或线程间)通信等。

然而,真正的定义是系统必须保证某些给定的操作总是在一个已知的、确定的时间内发生(即以秒为单位的时间,而不是相对的时间)。Linux 或 Windows 都不是真正实时的。Linux 或 Windows 计算机可以非常快,以至于您想要完成的任何事情几乎总是足够快地发生 - 但不能保证它总是在最长时间内。如果您正在构建一个软件系统来控制医疗设备或大型工厂设备,那么您需要在 x 毫秒内停止或启动某些东西,而不是“很快”或“通常足够快”。

现在在实践中,要在一个有用的、非平凡的系统中提供这种保证,通常需要先发制人的多任务、多线程以及通常提到的所有功能,因此如果没有它们,您将很难找到一个 RTOS。但是,RTOS 的定义特征名副其实:可以知道事情会在真实的时间内发生。

至于您的具体问题,来自 ThreadX 网站:

ThreadX is deteriminstic. A high priority thread starts responding to 
an external event on the order of the time it takes to perform a 
highly optimized ThreadX context switch.

    - Boot time: 300 cycles
    - Context switch time: <100 cycles
    - Semaphore get: 30 cycles
于 2016-05-11T17:06:38.410 回答
0

这一切都意味着您的响应时间是确定性的。这是您在 RTOS 中想要的最重要的事情之一。

在 threadx 中,您的线程具有优先级。操作系统由硬件中断计时器驱动,调度程序确保线程根据它们的优先级正确调度。

例如,如果线程 A(高优先级)正在等待一个信号量而线程 B(低优先级)正在运行,那么一旦信号量可用,线程 B 将被中断并启动线程 A。

Threadx 具有许多其他功能来优化上下文切换时间。例如,每个线程都有自己的堆栈。

有关更多详细信息,您应该得到这个:http ://www.amazon.com/Real-Time-Embedded-Multithreading-Using-ThreadX/dp/1578201349/ref=sr_1_2?s=books&ie=UTF8&qid=1390859108&sr=1-2&keywords=实时+时间+线程x

于 2014-01-27T21:45:43.610 回答
0

无论系统大小,ThreadX 都会有相同的响应时间:如果系统有一个线程或多个、一个信号量或多个等,响应时间将是相同的。所有操作都有恒定的响应时间。线程抢占时间是有界且恒定的。中断响应时间是有界且恒定的。ThreadX 提供的功能水平有时在学术文献中被描述为“硬实时”。

于 2021-04-05T21:38:49.097 回答
0

不是专家,但是,当您对应用程序线程/进程施加时间限制时,它被称为实时软件。

在 RTOS 中,如果高优先级线程来了,那么低优先级线程将被挂起,直到高优先级线程完成(或进入空闲/挂起状态)。在任何高优先级线程处于活动状态之前,低优先级线程永远不会获得时间(启用事件时间片)。

在相同线程优先级的情况下,如果启用时间片,则每个线程将获得特定的时间量。

您还应该检查 RTOS 情况下的优先级反转。

于 2019-09-11T15:17:03.343 回答