抢占式多任务系统
FreeRTOS
是一个抢占式的实时多任务系统,运行过程如下:
高优先级的任务可以打断低优先级任务的运行,从而取得CPU
的使用权,这样就保证了紧急任务的运行。
可以为那些对实时性要求高的任务设置一个很高的优先级,例如自动驾驶中的障碍物检测任务。
高优先级的任务执行完成以后,重新把CPU
的使用权归还给低优先级的任务,这个就是抢占式多任务系统的基本原理。
时间片调度
对于同等优先级任务来说,每个任务允许运行一个时间片。当前任务消耗完一个时间片后,CPU
的使用权将会移交给同等优先级下的另一个任务。
时间片的长度是由configTICK_RATE_HZ
决定的。如果configTICK_RATE_HZ
为1000
,那么一个时间片的长度就是1ms
。
任务状态
FreeRTOS
中的任务永远处于下面几个状态中的某一个:
运行态
当一个任务正在运行时,那么这个任务就处于运行态。
就绪态
就绪态是指那些已经准备就绪,随时可以运行的任务,但是目前还没有运行。<