由于嵌入式系统只有一个CPU,因此在一个具体时刻只能允许多个任务中的一个任务使用CPU。根据系统中的任务获得使用CPU的权利的方式,多任务实时操作系统的内核分为可剥夺型内核和不可剥夺型内核两种类型。但无论在两种类型的内核中,每一种任务都必须具有一个唯一的优先级别来表示它获得CPU的权利。
不可剥夺型内核也叫合作型多任务内核。在这种内核中,总是优先级别高的任务最先获得CPU的使用权。为防止某个任务始终霸占CPU的使用权,这种内核要求每个任务必须能主动放弃CPU的使用权。
在可剥夺型内核中,CPU总是运行多个任务中优先级别最高的那个任务,即使CPU正在运行某个低级别的任务,当有高优先级别的任务准备就绪时,该优先级别的任务就会剥夺正在运行任务的CPU使用权,从而使自己获得CPU的使用权。
由于可剥夺型内核实时性较好,所以目前大多数嵌入式实时操作系统是可剥夺型内核。
一、不可剥夺型内核的执行过程:
(1)当任务A运行时发生中断,进入中断服务程序,使更高优先级任务B就绪。
(2)中断服务执行完毕,返回,继续运行任务A。
(3)直到任务A结束,任务B才获得运行。
![](https://i-blog.csdnimg.cn/blog_migrate/4556f951fca7ed62a55207794ff3f4d9.png)
二、可剥夺型内核的执行过程:
(1)当任务A运行时发生中断,进入中断服务程序,使更高优先级任务B就绪。
(2)中断服务执行完毕,返回,任务B优先级较高,获得运行。
(3)直到任务B结束,任务A才获得运行。
![](https://i-blog.csdnimg.cn/blog_migrate/d2115c272d3076bf441d138dedd685ea.png)