ThreadX被认为是RTOS。 我知道RTOS的一般定义和要求,但是,任何人都可以帮助解释为什么ThreadX可以被称为RTOS,或者,OS的哪些功能使其能够实时运行?
感谢〜
答案 0 :(得分: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
答案 1 :(得分:0)
这一切意味着您的响应时间是确定性的。 这是您在RTOS中最重要的事情之一。
在threadx中,您的线程具有优先级。操作系统由硬件中断计时器驱动,调度程序确保根据优先级正确调度线程。
例如,如果线程A(高优先级)正在等待信号量并且线程B(低优先级)正在运行,那么一旦信号量变为可用,则线程B将被中断并且线程A将被启动。
Threadx还有许多其他功能可以优化上下文切换时间。 例如,每个线程都有自己的堆栈。
答案 2 :(得分:0)
不是专家,但是,当您在应用程序线程/进程上施加时间限制时,它称为实时软件。
在RTOS中,如果出现高优先级线程,则低优先级线程将被挂起,直到高优先级线程完成(或进入空闲/暂停状态)为止。低优先级线程永远不会获得时间(启用事件时间片),直到任何高优先级线程处于活动状态。
在相同线程优先级的情况下,如果启用了时间片,则每个线程将获得特定的时间量。
在RTOS情况下,您还应该检查优先级倒置。
答案 3 :(得分:0)
无论系统大小,ThreadX 都会有相同的响应时间:如果系统有一个或多个线程,一个信号量或多个等,响应时间将是相同的。所有操作都有恒定的响应时间。线程抢占时间是有界且恒定的。中断响应时间是有界且恒定的。 ThreadX 提供的功能级别有时在学术文献中被描述为“硬实时”。