77范文网 - 专业文章范例文档资料分享平台

uC/OS-II内核超时等待机制的分析(2)

来源:网络收集 时间:2012-08-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

        if(--ptcb->OSTCBDly==0){
         if(!(ptcb->OSTCBStat&OS_STAT_SUSPEND)){//(1)
         OSRdyGrp|=ptcb->OSTCBBity; //(2)
         OSRdyTbl[ptcb->OSTCBY]|=ptcb->OSTCBBitX;//(3)
         }else   {
        ptcb->OSTCBDly=1;
      }
     }
    }
   ptcb=ptcb->OSTCBNext;
   OS_EXIT_CRITICAL();
  }
  OS_ENTER_CRITICAL();
  OSTime++;
  OS_EXIT_CRITICAL();
 }
    语句(1),(2),(3)表明:时钟中断服务程序在每一个时钟中断在需要的情况下对任务的延迟项进行减1操作,如果任务T的定时时间间隔到期(延迟项被减为0),并且任务T没有附加的挂起操作,任务T就会进入就绪表,然而该函数却没有进一步将任务T移出资源R的等待队列,也就是说此时任务T跨了两个状态,这两个状态从本质上讲是矛盾的。虽然任务T此时处于就绪状态,但未必马上就能获得执行权,这取决于任务T的优先级。在任务T没有被调度执行之前的这段时间内,假设资源R到达了,比如一个中断服务程序调用了OSSemPost函数,会是什么情况呢?我们再来分析OSSemPost函数。
 void OSSemPost(OS_EVENT *pevent)
 {
  OS_ENTER_CRITICAL();
  if(pevent->OSEventGrp!=0x00){
   OS_EventTaskRdy(pevent,(void*)0,OS_STAT_SEM);//(4)
    OS_EXIT_CRITICAL();
    OS_Sched();
    return(OS_NO_ERR);
  }
  if(pevent->OSEventCnt<65535){
   pevent->OSEventCnt++;
   OS_EXIT_CRITICAL();
   return(OS_NO_ERR);
  }
  OS_EXIT_CRITICAL();
  return(OS_SEM_OVF);
   }
  }
    从语句(4)可以看出,在资源R的等待列表中有等待任务的情况下,等待表中最高优先级的任务将从等待列表中删除,并且进入就绪表。如果等待表中的最高优先级任务就是前面讲的等待超时的任务T,这相当于任务T又一次进入就绪表,不过只有一次从等待表中删除。任务T获取到了资源,只不过是在超时时间以外获取到的。任务T获得执行权以后从调度程序返回将运行函数OSSemPend()语句(6)处的条件代码,此时语句(5)处的条件不成立,任务按获取到资源对待。
 void OSSemPend(OS_EVENT *pevent,INT16U timeout,INT8U *err)
 {
  OS_ENTER_CRITICAL();
  if(pevent->OSEventType!=OS_EVENT_TYPE_SEM){
   OS_EXIT_CRITICAL();
   *err=OS_ERR_EVENT_TYPE;
  }
  if(pevent->OSEventCnt>0){
   pevent->OSEventCnt--;
   OS_EXIT_CRITICAL();
   *err=OS_NO_ERR;
  }else if(OSIntNesting>0){
   OS_EXIT_CRITICAL();
   *err=OS_ERR_PEND_ISR;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说计算机uC/OS-II内核超时等待机制的分析(2)在线全文阅读。

uC/OS-II内核超时等待机制的分析(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/lunwen/jisuanji/120519.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: