【专题1:电子工程师】 之 【17.基于STM32从0到1写操作系统 - 【8.任务时间片运行原理和实现】】

一个默默耕耘的工程师…
所有文章总目录:【专题1:电子工程师 专题2:qt工程师 专题3:后台工程师 专题4:生活】

1.时间片运行的原理

任务切换需要弄懂两个问题:

  • 由说来触发调度函数?
  • 各个任务运行多久?

  在【章节7.任务切换】中,运行完任务代码后,任务自己会调用一下任务调度函数,即触发pendSV异常,发生任务调度;任务的运行时间不定,任务代码执行完毕之后,该任务就结束了一次运行。

  如果通过时间片的方式运行,上面的两个问题怎样处理呢?
由谁触发?可以设置一个定时器,让定时器周期性产生一个中断,在定时器中断处理函数中调用任务调度函数。而各个任务的占用CPU的时长是一样的,这个时长就被称为时间片,时间片到了,任务就会切换到下一个任务运行。(从这个角度上,只要我们的调度算法非常优秀,整个操作系统就非常高校,这样看来操作系统写起来也很简单…)

2.SysTick定时器
  SysTick定时器就是为了实现时间片而诞生的。
【专题1:电子工程师】 之 【17.基于STM32从0到1写操作系统 - 【8.任务时间片运行原理和实现】】【专题1:电子工程师】 之 【17.基于STM32从0到1写操作系统 - 【8.任务时间片运行原理和实现】】【专题1:电子工程师】 之 【17.基于STM32从0到1写操作系统 - 【8.任务时间片运行原理和实现】】
待续…