网站大量收购独家精品文档,联系QQ:2885784924

4UCOS时间片轮转调度算法详解.pdfVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4UCOS时间片轮转调度算法详解.pdf

UCOS 时间片轮转调度算法详解 引言.:UCOS 和我修改的UCOS 的区别 UCOS 一种只支持优先级抢占型调度的操作系统。它不支持同一个优先级有2 个及以上的任 务同时运作。 我修改的UCOS 支持不同优先级调度的同时,支持同一个优先级有2 个以上的任务以时间 片轮转方式进行调度。 这个就是UCOS 和我修改的UCOS 的区别。 我修改后的UCOS ,在以后的文段中就称为“FIFO-UCOS ”。 FIFO 就是先进先出的意思,和时间片轮转调度差不多的意思。 一. FIFO-UCOS 第一讲--核心思想 我不对UCOS 做过多的解释,我本人对UCOS 的代码也没有看完。 事实上这个代码是我一年半以前做出来的了,当时就是为了帮一个朋友完成论文,并且为我 卖的S3C44B0 开发板增加一些东西吧。(不过我的板子最后没有卖出去多少,题外话,也许 这个东西并没有多少人热心吧) 这一年半我再也没有从事过软件开发(我一直都是硬件工程师),对UCOS 也有些遗忘了。 也许有的东西讲错了,还请包函。 当时和那个做论文的朋友讨论的时候,他也设计了一个调度方式,但是事实证明没有我做的 那个好。毕竟它增加了另外一个PCB 链。 UCOS 写得很好,把很多东西都做得很完善了。我要说的核心思想,就只有下面一小段话, 注意看了哦: UCOS 在调度的时候,会按照优先级选择进程进行调度,我做的部分就仅仅是在他进行优先 级检查之前,把和运行态同等级的进程进行了替换,替换成了时间片轮转调度的下一个进程! 呵呵,核心思想讲完了。下一节讲解具体代码了。 本人提供UCOS 在S3C44B0 上运行的完整代码。 注意,是UCOS 代码,不是FIFO-UCOS ; 发邮件到我邮箱:keterzhang@ 请不要在这个地方回复邮件地址问我要,我不想复制地址那么麻烦,就直接回复你的邮件是 最简单的。 二.TCB 的修改 FIFO-UCOS 和UCOS 并不能完全兼容,最大的改变,就是对TCB 的结构做了改动,加入了 我自己的段。   该部分代码在UCOS-II.H 文件中:   typedef struct os_tcb {    OS_STK *OSTCBStkPtr; /* Pointer to current top of stack */      #if OS_TASK_CREATE_EXT_EN 0    void *OSTCBExtPtr; /* Pointer to user definable data for TCB extension */    OS_STK *OSTCBStkBottom; /* Pointer to bottom of stack */    INT32U OSTCBStkSize; /* Size of task stack (in number of stack elements) */    INT16U OSTCBOpt; /* Task options as passed by OSTaskCreateExt() */      #endif    INT16U OSTCBId; /* Task ID (0..65535) */       struct os_tcb *OSTCBNext; /* Pointer to next TCB in the TCB list */    struct os_tcb *OSTCBPrev; /* Pointer to previous TCB in the TCB list */      #if ((OS_Q_EN 0) (OS_MAX_QS 0)) || (OS_MBOX_EN 0) || (OS_SEM_EN 0) || (OS_MUTEX_EN 0)    OS_EVENT *OSTCBEventPtr; /* Pointer to event control block */   #endif      #if ((OS_Q_EN 0) (OS_MAX_QS 0)) || (OS_MBOX_EN 0)    void *OSTCBMsg; /* Message received from OSMboxPost() or OSQPost() */   #endif      #if (OS_VERSION = 251) (OS_FLAG_EN 0) (OS_MAX_FLAGS 0)   #if OS_TASK_DEL_EN 0    OS_FLAG_NODE *OSTCBFlagNode; /*

文档评论(0)

suijiazhuang1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档