ThreadX 被认为是一个 RTOS。我知道 RTOS 的一般定义和要求,但是,任何人都可以帮助阐明为什么 ThreadX 可以被称为 RTOS,或者操作系统的哪些功能使其具有实时能力?
谢谢~
ThreadX 被认为是一个 RTOS。我知道 RTOS 的一般定义和要求,但是,任何人都可以帮助阐明为什么 ThreadX 可以被称为 RTOS,或者操作系统的哪些功能使其具有实时能力?
谢谢~
当程序员谈论实时操作系统时,他们经常提到与管理多个进程或线程相关的特性:互斥体、信号量和进程间(或线程间)通信等。
然而,真正的定义是系统必须保证某些给定的操作总是在一个已知的、确定的时间内发生(即以秒为单位的时间,而不是相对的时间)。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
这一切都意味着您的响应时间是确定性的。这是您在 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
无论系统大小,ThreadX 都会有相同的响应时间:如果系统有一个线程或多个、一个信号量或多个等,响应时间将是相同的。所有操作都有恒定的响应时间。线程抢占时间是有界且恒定的。中断响应时间是有界且恒定的。ThreadX 提供的功能水平有时在学术文献中被描述为“硬实时”。
不是专家,但是,当您对应用程序线程/进程施加时间限制时,它被称为实时软件。
在 RTOS 中,如果高优先级线程来了,那么低优先级线程将被挂起,直到高优先级线程完成(或进入空闲/挂起状态)。在任何高优先级线程处于活动状态之前,低优先级线程永远不会获得时间(启用事件时间片)。
在相同线程优先级的情况下,如果启用时间片,则每个线程将获得特定的时间量。
您还应该检查 RTOS 情况下的优先级反转。