以前玩汇编,明白两种程序结构,一种是顺序型的,就是从头到尾.尾巴上跳到头上,一直循环运行.还有一种就是定时,一个时间段一个标志位了,也就是时间片轮询,另外一个就是中断处理,中断主要是处理突发状况,像按键,像外部信号突然过来要处理等等 ,就是突发的事件.
今天看网上一些对UCOS的评论,发现系统可以运行得更有效率,上面两种结构有一个问题,当A任务运行后,运行完,检测B有没有就绪,没有就一直在检测标志位,或者A任务运行中,突然中断了,有突发事件了,这时处理突发事件,处理完了,要回到A任务,但是这时B任务更紧急了,这时在汇编中也有处理的方法,直接把A任务的标志位给撤了,但是这样其实他返回的时候,虽然标志位撤了,但是还是先回到A任务的,只不过这次的A任务执行完了,下一个A任务才不做.但是我看UCOS可以直接就去处理更紧急的B任务,这种操作就更人性化了,汇编中我是在A任务中有加一段B任务是否更紧急的判断代码,来判断是不是要跳到B任务去,同样B任务也有一段代码来判断A是否更紧急,现在还没看懂UCOS是如何做到从中断返回,直接去处理B任务的,但是UCOS在中断返回直接就跳到B任务,这个操作有点秀,当然代码如何实现我没看明白,汇编至少要把本轮的A执行完才能跳到B,就是加了B的判断,也得汇编走到判断处才能跳到B,所以返回就直接跳到B,这个操作很秀,继续努力,看懂代码对自己是有一个提升.
A任务,中断,返回直接执行B任,如何实现返回直接就跳转了,难道是改变了返回的地址?
|