uCOS学习笔记(一)——uCOS中的死循环

ucos操作系统学习笔记(一)

1、关于在单核处理器中的死循环问题

如果在单核处理器操作系统的某个任务中加入这样一句话while(1){},那么此时的执行会是怎么样的呢,让我们分析下

首先,如果是单核处理器,碰到这样的情况处理器立即进入死循环状态,除非有中断,会跳入中断服务函数中执行,完了始终是死循环状态,那么这种情况下,操作系统会扮演什么样的角色?我觉得此时操作系统是无能为力的,因为操作系统无法获得处理器的使用权,因而也就不能执行任务的调度,比如在430这样的单片机中,如果出现while(1){}这样的语句,那么我们来分析下,在时间片轮转情形下处理器的执行情况。

在μC/OS中任务执行完后是要等待一个时钟滴答,然后在这一个时钟滴答中肯定会有时间片的轮转发生,那末,时间片中断发生程序进入时钟滴答中断服务函数中执行,调用OSTimeTick函数给任务控制块中的时间延时项减一,让时间延时项减到零的任务进入就绪态,等待执行

那么在目前的情形中,时间片轮转可以发生,同样也会调用OSTimeTick,但是就绪态任务无法执行,因为,操作系统无法得到处理器的使用权

2、关于诸如删除任务、改变任务优先级、任务延时等

事实上,在ucos中唯一能表征一个任务的特征的是任务的OS_TCB,即任务控制块,包含了任务的状态,优先级,延时等等信息,如果现在要挂起一个任务,那么首先应该是检查任务是否存在以及是不是空闲任务等等,在得到这些信息确认后,从就绪表中清除该任务,然后将此任务的任务状态置位OS_STAT_SUSPEND这样,当任务调度程序进行任务调度时,就会检查相应位来判断是否该被调度。这样就实现了任务的挂起,同样,在任务恢复时也是对相应位置位,从而使得能够被再次调度。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值