电电侠 想学习RTOS,奈何不知从何下手,唉 实时操作系统?我熟啊,且听我慢慢给你道来
科科君
实时操作系统(RTOS)广泛应用于消费电子、娱乐产品、家用电器、工业设备、医疗仪器、军事武器和科研设备中,在航空航天控制系统、汽车工业、银行金融、机器人系统、安全和电信以及交通控制等安全攸关领域发挥着关键作用。
电电侠 应用领域真广啊,我还想知道学习RTOS的关键是什么 那必须是调度,调度调度惊起一番。。。
科科君
RTOS首先至少需支持优先级抢占式调度,任务间同步与通信应能避免优先级反转, 并提供高精度定时器。RTOS往往运行在资源受限的设备,调度资源确定性与调度时间确 定性是重要需求,进而可以保证在事先确定的时间内使用系统资源。
电电侠 有点明白了,科科大大快快继续讲 接下来我们将探讨基于优先级的抢占式调度
科科君
在我们的例子中,当一个优先级更高的任务进入就绪状态时,当前的任务会停止运行。这意味着一个任务可以处在三个状态之一:运行中(执行中)、就绪和挂起。可以用如下状态转换图描述任务在抢占式调度中的行为。
电电侠 那什么时候任务处于运行状态?什么时候处于就绪状态? 只有在被RTOS调度时一个任务才能进入运行状态,在此之前它必须处在就绪状态,在基于优先级的系统中它还必须处在就绪队列的第一位。
科科君
任务挂起或者被抢占时会离开运行状态。当任务结束执行,或者因为某种原因无法继续时,任务会挂起,比如在本例中任务需要进行特定时长的延时。当任务进入挂起状态时会释放处理器的使用权,从而允许其他任务运行(见下图)。释放可以是任务自行触发的,也可以是 RTOS强制的。一个运行中的任务可以用两种方式自行释放处理器:其一,任务完成了必需的操作退出;其二,任务因为内部产生的信号(内部事件)放弃对处理器的控制。
下图列举了强制释放处理器的原因
科科君
电电侠 有没有任务状态模型可供参考呢 下图即为任务状态的一般模型,详细过程如下所述
科科君
当抢占发生时,任务即使没有完成也会被迫放弃处理器,此时任务并没有被挂起,而是会返回就绪队列。任务在队列中的位置是由优先级决定的,它会在队列中等待到下一次被调度。当条件满足时任务会从挂起状态进入就绪状态,比如完成一个事件、经过特定的时间或者某种事件和时间的组合。不同的任务有不同的挂起状态。
简单示例
如果需要,任务模型可以进一步扩充并显示任务的创建和删除。在基于优先级的系统中,任务的就绪和再调度会变得很复杂,下图是一个简单的例子,图中展示了优先级对任务在就绪和挂起队列中位置的影响,以及当任务就绪时就绪队列是如何变化的。
电电侠 学习到了,不过还有一个小问题,可否解释下“再调度(reschedule/rescheduling)”? 再调度是决定接下来要运行的任务的过程,也可翻译为重新调度。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !