点击蓝色字体关注我们哦
阅读本文之前,需要具备以下两点条件:
了解arm汇编或者x86汇编
熟悉c语言程序开发
调度器是什么
任务调度器的存在,主要是为了充分利用计算机的硬件资源,要让计算机尽可能"同时"多干一点点活。这些活其实是由处理器执行某段代码来完成的,一般我们把这段程序称为进程。进程通过负责完成某件事情,但是如果这件事情太过于复杂的话,就必须招几个小弟来帮忙干活了,这些小弟我们把它叫做线程。特别地,在嵌入式RTOS里面,没有进程这个概念,而线程则被称为任务
按理说,一个处理器在任意时刻,只能执行一个任务。它想要真正地并行运行任务,必须要具备多个处理器,比如说同/异构多核cpu。
如果非要让一个处理器兼顾所有的任务,唯一的做法就是让每个任务各自在处理器上执行一小会,然后再换下一个任务上处理器,直到所有的任务都执行结束。任务调度器就是实现这种任务伪并行的软件模块,与调度器配合工作的还有调度算法,本文暂不分析调度算法。
怎么实现任务调度器
一个任务一旦获得处理器而运行,是通过处理器的寄存器来运行指令并进行数据的读写处理的。也可以说任务的行为是通过寄存器来体现的。注意:这里的寄存器,不是指芯片的外设寄存器,而是芯片内核的寄存器。
内核的寄存器是计算机非常底层的机制了,哪怕是C语言这种号称最接近机器语言的高级语言,也并不能直接控制内核寄存器。所以在实现一款任务调度器的时候,必须是要使用汇编语言(当然机器语言