uC/OS的任务调度与通常意义下函数调用的区别

uCos的任务调用与通常意义下的函数调用的区别

通常意义下的函数调用是指以下情况:

  1. 保存当前调用函数(程序)的环境,程序指针跳转到被调用函数入口处,执行完被调用函数后,从堆栈中恢复调用函数的环境,继续执行原程序。
  2. 调用函数和被调用函数共用相同的堆栈,实际上被调用函数没有堆栈。
  3. 被调用函数的调用执行是由调用函数发出的。
  4. 被调用函数被调用后立即执行。

uCos的任务调用是指以下情况:

  1. 每个任务都有独立的堆栈空间,uCos下的任务调用是先把当前任务的执行环境保存在它自己的堆栈中,然后从被调用任务的堆栈恢复被调用任务的环境,这两个任务占用不同的堆栈空间。
  2. 被调用任务的入口地址来自其堆栈,而不是函数标号。
  3. 被调用函数的调用执行是由uCos调度器发出的,即由uCos内核调用的,而不是某个任务。
  4. 被调用任务进入就绪状态,即可以执行,但有可能不会立即执行。所以在一定意义上,任务的调度可以理解为返回到那个函数去执行,而不是调用那个函数来执行。任务永远不会返回,当前任务完成特定的功能后,释放微处理器占用权,进入等待状态,等待下一个“该函数返回”。当微处理器空闲时,uCos执行系统定义的优先级最低的空闲任务,这时每个时钟节拍到达时进行任务就绪状态检查和调度管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值