#1楼主:任务调度问题
文章发表于:2008-07-21 12:34
请问任务级任务调度一定要使用软中断来切换么?如果使用函数调度的方法会有什么影响?(函数实现是由汇编代码实现)。
看到ZLG的SMALL RTOS和UCOS的代码不一样,前者是由软中断来实现的,后者是用函数调度来实现的。
#2
文章发表于:2008-07-22 08:53
任务调度是不一定需要软中断来切换的。在任务调度过程中主要是将CPU寄存器中的值保存到任务的堆栈中,然后切换堆栈指针(新任务的堆栈切换给CPU),用堆栈中的值初始化CPU寄存器。从这个过程来看,任务调度的过程和中断处理过程完全一致,所以最好的办法就是用软中断来实现任务调度过程。问题是,某些微控制器没有软中断的功能,例如51-MCU,所以也可以用函数的方法的方法来模拟这一过程,由于涉及到堆栈的操作,所以只能用汇编语言来实现。用函数来模拟的缺点在于效率比软中断的方式低。
#4
文章发表于:2008-07-22 19:04
效率低是指任务切换的速度,表现在速度慢。
用软中断做的话,很多操作都是CPU硬件完成的,模拟的话,都是软件指令来实现的,所以模拟的办法效率低。
#5
文章发表于:2008-07-23 17:36
如果是函数调度的话是不是在调度函数的过程中需要压栈出栈的过程花费时间?
谁能描述下这个过程在嵌入式里是怎么实现的?谢谢~~