我的意思是实时操作系统如何以及为什么能够满足最后期限而不会错过它们?或者这只是一个神话(他们不会错过最后期限)?它们与常规操作系统有何不同,以及是什么阻止了常规操作系统成为RTOS?
会议截止日期是您编写的应用程序的功能.RTOS只提供帮助您满足截止日期的设施.你也可以在一个大的主循环中编写"裸机"(没有RTOS),并满足你的最后期限.
还要记住,与更通用的操作系统不同,RTOS具有非常有限的任务和进程集.
RTOS提供的一些功能:
基于优先级的调度程序
系统时钟中断程序
确定性行为
基于优先级的调度程序
对于单个任务/进程,大多数RTOS具有32到256个可能的优先级.调度程序将以最高优先级运行任务.当正在运行的任务放弃CPU时,将运行下一个最高优先级的任务,依此类推......
系统中优先级最高的任务将具有CPU,直到:
它运行完成(即它自愿放弃CPU)
准备好更高优先级的任务,在这种情况下,原始任务被新(更高优先级)任务抢占.
作为开发人员,您的工作是分配任务优先级,以便满足您的最后期限.
系统时钟中断例程
RTOS通常会提供某种系统时钟(从500 uS到100 ms),允许您执行时间敏感的操作.如果你有一个1ms的系统时钟,并且你需要每50ms做一次任务,那么通常有一个API可以让你说"在50ms内唤醒我".此时,任务将一直处于休眠状态,直到RTOS将其唤醒.
请注意,只是被唤醒并不能确保您将在那时完全运行.这取决于优先级.如果当前正在运行具有更高优先级的任务,则可能会延迟.
确定性行为
RTOS非常长,以确保无论您有10个任务,还是100个任务,都不需要更长时间来切换上下文,确定下一个最高优先级任务是什么,等等......
通常,RTOS操作尝试为O(1).
RTOS中确定性行为的主要区域之一是中断处理.当发出中断线信号时,RTOS立即切换到正确的中断服务程序并立即处理中断(无论当前运行的任何任务的优先级如何).
请注意,大多数特定于硬件的ISR将由项目开发人员编写.RTOS可能已经为串行端口,系统时钟,网络硬件提供了ISR,但任何专门的(起搏器信号,执行器等......)都不会成为RTOS的一部分.
这是一个粗略的概括,与其他一切一样,有各种各样的RTOS实现.一些RTOS以不同的方式做事,但上面的描述应该适用于大部分现有的RTOS.