第3章 μCOS-II操作系统任务调度.pptVIP

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

人民邮电出版社出版 杨宗德编著 μC/OS-II 操作系统标准教程 人民邮电出版社 出版 杨宗德,张兵 编著 2009年3月 第3章 μC/OS-II操作系统任务调度 μC/OS-II调度算法和调度方式 优先级调度算法原理为:给每一个任务分配一个惟一优先级,各优先级用一个整形数值标识,某优先级的值越大,其优先级越低;某优先级的值越小,其优先级越高。也就是说,如果当前操作系统准备进行调度,当有两个任务处于就绪状态, 系统将优先执行优先级别高的任务。 μC/OS-II操作系统有两种调度方式:任务级任务调度和中断级任务调度,μC/OS-II操作系统在完成中断后允许进行新的调度,因此,μC/OS-II操作系统是可抢占性的,是强实时性操作系统,这是μC/OS-II操作系统内核的重要特性。 μC/OS-II任务就绪表 优先级二进制码分配 更新就绪表时采用如下方法: 对OSRdyGrp和 OSRdyTbl[ptcb-OSTCBY]的修改算法如下: 获取最高优先级就绪任务 第3章 μC/OS-II操作系统任务调度 调度的主要功能 (1)查找当前就绪表中最高优先级任务的优先级值; (2)调用OS_SchedNew()函数进行任务切换,切换到新任务执行。 μC/OS-II操作系统使用OS_Sched()函数来执行任务级任务调度。 任务级任务切换OS_TASK_SW() 任务级任务切换是指从一个任务直接切换到另一个任务,引起该次切换是由于某一个非中断引起的事件(关于事件的概念请参阅后结章节)使一个更高优先级的任务处于就绪状态,暂停正在运行着的任务,转而切换去执行更高优先级任务。在整个过程中,不涉及到CPU状态的切换,μC/OS-II操作系统使用汇编程序来实现OS_TASK_SW()函数。 任务基本信息 CPU中的PC寄存器:任务(程序)当前执行的位置; CPU中的通用寄存器:任务当前执行代码所涉及的临时数据; CPU中的状态寄存器:存储当前CPU的状态。 任务级任务切换基本过程 (1)将当前任务的PC位置、通用寄存器数据、CPU的状态入栈; (2)修改全局变量OSPrioCur(当前任务优先级变量)的值为全局变量OSPrioHighRdy(最高优先级任务优先级)的值,即把最高就绪任务优先级设置为新的当前任务优先级; (3)修改原任务TCB的第1个成员(指向栈顶的指针*OSTCBStkPtr)的值为当前SP寄存,以便再次返回; (4)获取最高优先级的任务控制块中第1个成员(指向堆栈栈顶指针*OSTCBStkPtr)的值到sp寄存器; (5)修改OSTCBCur的值为新就绪最高优先级任务的任务控制块地址; (6)将新任务的PC位置、通用寄存器数据、CPU的状态出栈,开始执行新的任务。 调度器上锁与解锁 在调用函数OS_Sched()进行调度时,要求没有进入中断,因为操作系统期望中断处理程序执行时间尽可能短 。 第3章 μC/OS-II操作系统任务调度 μC/OS-II中断管理 (1)硬件中断一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口接收到数据、键盘击键以及时钟中断等; (2)软件中断(Soft Interrupt)通过在程序中执行的中断指令引起的中断,又叫软中断,软中断指令一般用于操作系统的系统调用入口,软中断是用户访问操作系统提供的服务(API函数)的惟一途径。 中断响应的过程 (1)进入中断,现场保护,保护当前任务的执行位置、寄存器临时数据以及CPU状态,这些过程处理的代码请参阅第9章; (2)执行系统进入中断处理函数OSIntEnter(),然后执行关于此中断的中断服务程序,这一程序由系统开发人员编写,此程序将根据中断不同执行不同的代码; (3)执行系统退出中断处理函数OSIntExit(),在此函数中,如果有更高优先级任务就绪,将引发新的调度,否则进行现场恢复,恢复到原任务位置重新运行。 第2步中断服务程序是预先设置的,如果中断发生,系统会根据中断向量表的入口地址约定转移到该地址开始执行。 ARM处理器中断响应 (1)拷贝当前CPSR到对应模式的SPSR寄存器中以存储当前程序状态,这些信息包括当前处理器模式、中断屏弊位以及控制标识。 (2)改变CPSR寄存器的模式位使处理器工作于对应模式、禁止中断位,其中,在任何异常情况下都将禁止IRQ请求位,当复位中断和FIQ中断发生时还将禁止FIQ请求位。 (3)保存返回地址到对应模式链接寄存器(LR)。 (4)设置当前程序PC寄存器到中断向量地址以处理异常。这将强制跳转到相应的中断处理程序中。 ARM处理器中断返回 (1)从相应模式的SPSR寄存器中恢复CPSR寄存器内容; (2)恢复存储在栈中的普通寄存器数据; (3)从相应模式的链接寄存器LR中恢复PC寄存

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档