资料介绍
嵌入式操作系统中的抢占式调度策1
嵌入式操作系统中的抢占式调度策略
摘要
绝大多数嵌入式操作系统采用抢占式的调度方式。本文主要讲述采用抢占式方式进行任
务调度的嵌入式操作系统的调度策略和原理。
关键词 抢占式 多任务 中断
通过逐行阅读顺序程序的源代码,不难说出程序会向处理器提出什么样的特定操作
,并且也能说出这些操作的顺序。实际上,如果能够知道对一个顺序程序的所有输入,
那就不仅能精确预测到处理器所执行的一系列机器码,还能计算出系统最终的输出值或
系统行为。这样,无论这个程序运行的速度快慢,都能够得到一个唯一的结果。
然而,在现实中顺序操作程序是很少见的。譬如,在嵌入式系统C程序中的main(
)函数,尽管它看上去是顺序的,但是这种看似顺序执行的程序最终会被系统的硬件中
断,在某个时刻所打断。当外围设备中断产生后,相应的中断服务程序会运行,从而取
代当前main()函数的执行。这个过程就可以称为抢占。
抢占意味着main()函数将以比预期慢的速度执行。这是因为它执行速度的快慢与
系统中断的数量、中断程序的执行时间以及用于保存和恢复处理器状态的操作时间有着
直接的关系。实质上,大部分的处理器周期都被中断服务程序给占用了。除非对中断服
务程序有时间的限制,否则,这些中断自身并不会改变系统其它部分的输出,它们只是
减慢了程序的执行。
由于绝大多数中断服务程序处理来自于系统设备的中断,这样它们的执行必将会带
来系统状态的改变。这种状态的改变最终会给后续指令主序列中的系统行为带来变化,
指令主序列则必须做出适当的反应来避免状态改变带来的影响。此时,不但难以预测处
理器将执行的操作,同时也难以知道何时,并且以何种顺序来执行这些操作。
绝大多数处理器支持中断的嵌套。一个打断程序顺序执行的中断服务程序可以被另
一个更高优先级的中断服务程序所打断。当该高优先级的中断服务程序