今天把源码下载下来,打算看一下源码。博客开始记录,但能预测到这是一件对其他人没有帮助的事,希望大家都别看,太丢人。
直奔主题,对于一个操作系统来说,最重要或者说是最关键的是内核调度策略了。
进而调用svcKernelStart()
讲道理,每次rt_tsk_prio()感觉应该是找到下一个任务所在,偶尔没有任务的时候,就会去执行空线程,那么这个函数应该在分时调度策略的时候在定时器里去调度,优先级调度也是如此?猜测应该是在每个任务里面都有一个类似于线程控制标识符,或是一个队列或是一个函数,去找下一个应该执行的任务。
没找到。 其实就我的理解来说,内核调度的基本应该就像linux内核中的secheduler()函数一样,它把各个线程之间的一个标志符给串起来,由此来进行调度。当然任务的注册与删除是以红黑树为基本数据结构的。但在这里,我能看到一些依照优先级调用任务的函数,但我好奇的是什么时候调用,在什么地方调用。这才是真正要考虑的问题吧。
看到了一个这样的函数:
我觉得这个就类似于上文所述的scheduler()函数,而且它会在:
CMSIS RTOS2学习笔记day1
最新推荐文章于 2024-06-17 15:49:57 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)