嵌入式实时操作系统优先级抢占式调度机制解析

描述

电电侠   想学习RTOS,奈何不知从何下手,唉   实时操作系统?我熟啊,且听我慢慢给你道来

 

科科君

实时操作系统(RTOS)广泛应用于消费电子、娱乐产品、家用电器、工业设备、医疗仪器、军事武器和科研设备中,在航空航天控制系统、汽车工业、银行金融、机器人系统、安全和电信以及交通控制等安全攸关领域发挥着关键作用。

电电侠   应用领域真广啊,我还想知道学习RTOS的关键是什么   那必须是调度,调度调度惊起一番。。。

 

科科君

RTOS首先至少需支持优先级抢占式调度,任务间同步与通信应能避免优先级反转, 并提供高精度定时器。RTOS往往运行在资源受限的设备,调度资源确定性与调度时间确 定性是重要需求,进而可以保证在事先确定的时间内使用系统资源。

电电侠   有点明白了,科科大大快快继续讲   接下来我们将探讨基于优先级的抢占式调度

 

科科君

在我们的例子中,当一个优先级更高的任务进入就绪状态时,当前的任务会停止运行。这意味着一个任务可以处在三个状态之一:运行中(执行中)、就绪和挂起。可以用如下状态转换图描述任务在抢占式调度中的行为。

嵌入式

电电侠   那什么时候任务处于运行状态?什么时候处于就绪状态?   只有在被RTOS调度时一个任务才能进入运行状态,在此之前它必须处在就绪状态,在基于优先级的系统中它还必须处在就绪队列的第一位。

 

科科君  

任务挂起或者被抢占时会离开运行状态。当任务结束执行,或者因为某种原因无法继续时,任务会挂起,比如在本例中任务需要进行特定时长的延时。当任务进入挂起状态时会释放处理器的使用权,从而允许其他任务运行(见下图)。释放可以是任务自行触发的,也可以是 RTOS强制的。一个运行中的任务可以用两种方式自行释放处理器:其一,任务完成了必需的操作退出;其二,任务因为内部产生的信号(内部事件)放弃对处理器的控制。

下图列举了强制释放处理器的原因

 

科科君

嵌入式

电电侠   有没有任务状态模型可供参考呢   下图即为任务状态的一般模型,详细过程如下所述

 

科科君

嵌入式

当抢占发生时,任务即使没有完成也会被迫放弃处理器,此时任务并没有被挂起,而是会返回就绪队列。任务在队列中的位置是由优先级决定的,它会在队列中等待到下一次被调度。当条件满足时任务会从挂起状态进入就绪状态,比如完成一个事件、经过特定的时间或者某种事件和时间的组合。不同的任务有不同的挂起状态。

简单示例

如果需要,任务模型可以进一步扩充并显示任务的创建和删除。在基于优先级的系统中,任务的就绪和再调度会变得很复杂,下图是一个简单的例子,图中展示了优先级对任务在就绪和挂起队列中位置的影响,以及当任务就绪时就绪队列是如何变化的。

嵌入式

电电侠   学习到了,不过还有一个小问题,可否解释下“再调度(reschedule/rescheduling)”?   再调度是决定接下来要运行的任务的过程,也可翻译为重新调度。

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分