在μc/os系统中内核负责任务的调度及管理,但内核也有一些缺点,那就是会增加ROM及RAM的用量,一般内核占cpu 2~5%。
实时系统-调度
调度是内核的主要职责之一,它决定轮到哪个任务运行。
时间片轮转法:相同优先级的任务工作相同时间后轮转。
优先级:缺点同处于就绪状态的任务,运行先后的值,通常在程序编写时就已经确定,在单片机中,cpu总是让优先级最高的任务先运行,优先级0为最高,越往后越低。
剥夺:任务主动放弃cpu使用权让其他优先级高的任务运行,μc/os II 系统是不可剥夺的系统。
优先级反转:
①:优先级为3的任务进入就绪状态,没有更高的优先级的任务处于就绪状态,优先级为3的任务进入运行状态并占用优先级为1的任务的共用资源。
②:优先级为1的任务进入就绪状态,因为优先级为3的任务占用优先级1的共用资源,优先级1的任务进入挂起状态。
③:优先级为2的任务进入就绪状态,因为和优先级为3的任务没有共用资源,优先级2的任务进入运行状态。
此处优先级为2的任务比优先级为1的任务先运行,相当于优先级1的任务与优先级为2的任务优先级交换,所以称为优先级反转,并且在任务间存在共享资源时容易出现。
信号量:
信号量为共用资源,信号量分标志性信号量和计数式信号量,标志性信号量一个任务使用时其他任务不可使用,计数式信号量可同时有有限个任务使用。
时钟节拍
滴答定时器(systemtick)
一般为10~20ms,决定任务的切换频率,时钟节拍过快会增加cpu的负担,过慢会浪费系统资源。