返回该小组首页 回复主题
darkrainbow

darkrainbow

小组等级:     E币:304  (E币换礼)

#1楼主:任务调度问题

文章发表于:2008-07-21 12:34

请问任务级任务调度一定要使用软中断来切换么?如果使用函数调度的方法会有什么影响?(函数实现是由汇编代码实现)。

看到ZLG的SMALL RTOS和UCOS的代码不一样,前者是由软中断来实现的,后者是用函数调度来实现的。

tiloog

   小组等级:    E币:1146  (E币换礼)

#2

文章发表于:2008-07-22 08:53

任务调度是不一定需要软中断来切换的。在任务调度过程中主要是将CPU寄存器中的值保存到任务的堆栈中,然后切换堆栈指针(新任务的堆栈切换给CPU),用堆栈中的值初始化CPU寄存器。从这个过程来看,任务调度的过程和中断处理过程完全一致,所以最好的办法就是用软中断来实现任务调度过程。问题是,某些微控制器没有软中断的功能,例如51-MCU,所以也可以用函数的方法的方法来模拟这一过程,由于涉及到堆栈的操作,所以只能用汇编语言来实现。用函数来模拟的缺点在于效率比软中断的方式低。

darkrainbow

   小组等级:    E币:304  (E币换礼)

#3

文章发表于:2008-07-22 17:05

谢谢您的回复。你说的效率低是什么?表现在哪里?

tiloog

   小组等级:    E币:1146  (E币换礼)

#4

文章发表于:2008-07-22 19:04

效率低是指任务切换的速度,表现在速度慢。

用软中断做的话,很多操作都是CPU硬件完成的,模拟的话,都是软件指令来实现的,所以模拟的办法效率低。

darkrainbow

   小组等级:    E币:304  (E币换礼)

#5

文章发表于:2008-07-23 17:36

如果是函数调度的话是不是在调度函数的过程中需要压栈出栈的过程花费时间?

谁能描述下这个过程在嵌入式里是怎么实现的?谢谢~~

lhj200304

   小组等级:    E币:721  (E币换礼)

#6

文章发表于:2008-09-22 09:09

看看周立功的smallrtos的源代码就明白了

总共 , 当前 /

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

  • DesignDesign
  • HTMLHTML

浏览该小组的用户还看过...

所有小组精华文章