目的
学习和理解实时操作系统
声明
习题答案是笔者基于相关书籍和网上内容自己理解的,有不对或疑问的地方大家一起沟通
一. 什么是可剥夺性内核
CPU总是在处理处于就绪态任务中优先级最高的那个任务。即使当前CPU正在运行某个低优先级的任务,当高优先级的任务处于就绪态时,就会终止这个低优先级任务的运行,切换到处于就绪态的最高优先级的任务运行。“剥夺”在这个场景下得到充分体现。
扩展:与其对应的是不可剥夺性内核。最开始,处于就绪态优先级最高的任务开始运行,后面除非这个任务自己主动放弃CPU使用权,否则其它任务始终得不到运行(即使处于就绪态高优先级任务),当其放弃CPU使用权后,就会切换到就绪态优先级最高的任务开始运行,如此重复。
小结:嵌入式操作系统中如果选择不可剥夺性内核,由于需要任务主动放弃,所以其实时性就会差些,故大多都选择可剥夺性内核。
二.一个应用程序为什么一定要使用空闲任务
空闲任务:任务有五种工作状态,在某个时刻系统很可能没有处于就绪态的任务,如果没有空闲任务,系统运行哪个任务呢。所以对于UCOS系统就规定了这样一个任务(不允许删除)当系统处于上述场景时运行空闲任务
应用:可以在空闲任务的时候做一些比较费时间的事,例如打包数据,擦flash等。
三.统计任务是必须使用的吗?
不是必须的。该任务的目的:统计CPU的使用率,只是一个debug的功能。
四.什么叫做任务的优先权?uc/OS-II是用什么来描述任务优先权的?
操作系统运行在CPU上,只有一个CPU(不考虑多核),某一个时刻只能运行一个任务,到底要先运行哪个任务呢,所以需要给任务确定好优先级,以表明任务的重要程度,让操作系统基于某种规则来运行任务。
uc/OS-II在创建任务的时候给任务指定优先级,任务控制块中有优先级成员。最多可以创建64个任务,数字越小优先级越高,并且系统中任务数量可以配置(默认将最低优先级给空闲任务,统计任务赋值给统计任务)。