本文章实例来源于开源操作系统SylixOS。
优先级位图仅仅是一个时间无关的就绪任务检出算法,真正要实现SMP还需要做很多工作。
天下操作系统的调度算法都是人类智慧的结晶,相差无几,无非是细节有一些区别,μCOS太简单,因此来分析下稍微复杂一点的国产操作硬实时系统SylixOS的调度实现。
有图有真相:
绿色的是废话,重要事情。
何谓优先级卷绕:我这里有可能产生了新的就绪任务,CPU大佬们(多核)请看看这旮瘩是不是需要调度。
CPU核心(一个CPU有多个CORE,我们这里讨论SMP(你竟然不知道SMP?!好吧,理解为对称多核即可,如果你还不明白我就举个反例,好多手机自诩8核,实际上是4主核,4辅核,辅助核心嘛,肯定能力不如主力核心,这就是不对称多核,再不明白请自行买块豆腐撞死))结构体中有正在执行任务结构体指针和即将执行任务指针也叫候选任务指针。
为了支持SMP所以就绪表有N+1个,N个数等于CPU核心个数代表N个本地就绪表(你完全可以叫CPU核心本地唯一不可或缺超级优先级排队就绪表,这真的是废话),这个额外的+1是全局就绪表。
SMP硬实时调度算法
最新推荐文章于 2025-07-12 22:59:15 发布