河南省建设厅官方网站李学军,北京教育学会网站建设,app手机电视网站设计方案,企业制作小程序1、前后台系统#xff0c;协作式内核系统#xff0c;与占先式内核系统#xff0c;有什么不同呢#xff1f;
记得在 21IC 上看过这样的比喻, 你(小工)在用厕所#xff0c;经理在外面排第一#xff0c;老板在外面排第二。 如果是前后台#xff0c;不管是谁#xff0c;都…1、前后台系统协作式内核系统与占先式内核系统有什么不同呢
记得在 21IC 上看过这样的比喻, 你(小工)在用厕所经理在外面排第一老板在外面排第二。 如果是前后台不管是谁都必须按排队的次序使用厕所 如果是协作式那么可以等你用完厕所老板就要比经理先进入 如果是占先式只要有更高级的人在外面等那么厕所里无论是谁都要第一时间让出来让最高级别的人先用。
2、只有延时服务的协作式的内核Cooperative Multitasking
正在运行的主任务都通过延时服务主动放弃对 CPU 的控制权。 在时间中断中对各个任务的的延时进行计时如果某个任务的延时结束将任务重新在就绪表中置位。 最低级的系统任务 TaskScheduler()在三个主任务在放弃对 CPU 的控制权后开始不断地进行调度。如果某个任务在就绪表中置位通过调度进入最高级别的任务中继续运行。
3、完善的协作式的内核
现在为上面的协作式内核添加一些 OS 中所必须的服务 1 挂起和重新运行任务 2 信号量(在必要时候可以扩展成邮箱和信息队列) 3 延时
4、时间片轮番调度法的内核Round-Robin Sheduling
时间片轮调法是非常有趣的。任务没有优先级在时间中断的调度下每个任务都轮流运行相同的时间。如果在内核中没有加入其它服务感觉上就好像是有三个大循环在同时运行。
5、占先式内核(只带延时服务)Preemptive Multitasking
占先式内核可以在任务中进行调度这个在协作式的内核中已经做到了同时它也可以在中断结束后进行调度这个问题已经在时间片轮番调度法中已经做到了 由于中断是可以嵌套的只有当各层嵌套中要求调度并且中断嵌套返回到最初进入的中 断的那一层时才能进行任务调度
6、占先式内核(完善的服务)
如果将前面所提到的占先式内核和协作式内核组合在一起很容易就可以得到一个功能较 为完善的占先式内核它的功能有 1,挂起和恢复任务 2,任务延时 3,信号量(包括共享型和独占型)
7、FreeRTOS 支持的调度方式
FreeRTOS 操作系统支持三种调度方式抢占式调度时间片调度和合作式调度。 实际应用主要是抢占式调度和时间片调度合作式调度用到的很少。 抢占式调度 每个任务都有不同的优先级任务会一直运行直到被高优先级任务抢占或者遇到阻塞式的 API 函数比如 vTaskDelay。 时间片调度 每个任务都有相同的优先级任务会运行固定的时间片个数或者遇到阻塞式的 API 函数比如vTaskDelay才会执行同优先级任务之间的任务切换。 在 FreeRTOS 操作系统中只有同优先级任务才会使用时间片调度