给一个口头定义:

如果两个函数总不可能同时执行(比如顺次执行的),并能保证自己执行的原子性,那么这两个函数

处于同一个任务平面。


推论:

合作式调度器所有的任务都在主循环里面执行,都是依次执行的,都能保证自己的原子性。那么可以

说合作式调度器的任务都是在同一个任务平面的。


混合式调度器引入了一个中断,假定这个中断执行完成之前,不允许嵌套,并且有且只有一个这样的

中断,那么我们说,合作式调度器拥有两个任务平面:

显然,主循环里面执行的函数都属于同一个任务平面;中断处理程序里面执行的函数也都属于一个平面,

只不过是不同于主循环平面的另外一个世界。

不同平面间如果存在公共的存储器资源,那么对于这部分资源的访问就必须要进行临界区保护。


同一个任务平面里面的任务都是合作调度的——也就是顺次执行的,你方唱罢我登场。

不同平面的任务之间如果没有建立任何联系(比如信号亮通讯),那么执行顺序以及原子性都无法保证。


抢占式调度器是一个典型的多任务平面系统:

调度器自己的调度程序占用一个任务平面,可以说大部分系统服务都是可以被主观上判定为属于这个任务

平面的(根据定义你很容易找到这种说法的依据:1、不可能同时执行;2、原子性)

调度器调度的每一个任务都有自己独有的任务平面……所谓的任务切换,实际上就是任务平面切换,我喜

欢称之为宇宙切换,或者多维空间切换(很科幻,但是印象很深刻哈)


混合调度器的任务平面切换是硬件完成的,所以不需要额外代码。