网站设计和建设自考题,亚马逊雨林动物大全,嵌入式开发板推荐,长沙地铁最新消息文章目录 任务并行的概念RTOS如何实现多任务调度#xff1f; 任务并行的概念
在生活中#xff0c;经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息#xff0c;这里面就存在两个任务#xff1a;任务一、吃饭。任务二、手机回复信息。 假如你无法一心多用… 文章目录 任务并行的概念RTOS如何实现多任务调度 任务并行的概念
在生活中经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息这里面就存在两个任务任务一、吃饭。任务二、手机回复信息。 假如你无法一心多用在一个时间段中只能处理一个任务这时 就会循环执行吃饭时间a1 ~ a6。 同样在一个时间段中只能处理手机回复信息任务这时会循环执行手机回复信息任务时间b1 ~ b6。 若要使任务并行运行可以将吃饭和手机回复信息两个任务的时间打碎并且穿插在一起运行时间a1、b1、a2、b2、a3、b3、a4、b4、a5、b5、a6、b6 当你的大脑处理任务的速度足够快在宏观上看两个任务是同步进行。
RTOS也是如此若想要将多任务同时进行的时候RTOS将时间分成很多个小片段每个小片段调度不同的任务运行。这样就实现多任务在RTOS上是并列运行的。 RTOS如何实现多任务调度
在RTOS中存在多个任务假如 task1~ task10为了实现多任务同时调度运行内部维护三类任务链表 Ready List 就绪链表、Delay List 等待链表、Suspend List 挂起链表。 Ready List 就绪链表 分为 6个优先级不同的链表。任务可以根据自身的优先级进行站队。 优先级值越小任务优先级越高。task3优先级高于其他队列。 当系统时间片段到达时会触发Tick中断中断里执行两个动作 1、循环遍历每个就绪链表找出最高优先级的任务。 2、执行
如果task3 任务运行过程出现阻塞会将task3移动到Delay List 等待链表。此时当Tick中断到来时遍历优先级为4里的任务取出task1运行完将task1移动至task10后面。接着取出task2运行完将task2移动至 此时task1后面。以此类推。