- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ucosii实时操作系统分析-任务管理和调度
任务的调度(续) 2. 任务切换宏OS_TASK_SW() SP R1 R2 … … Rn PC PSW R1 R2 …… Rn PC PSW R1 R2 …… Rn PC PSW CPU的各寄存器 被中止任务TCB 待运行任务TCB OSTCBStkPtr OSTCBStkPtr 被中止任务堆栈 待运行任务堆栈 图2-11 调度器进行 任务切换时的动作 断点:任务被中止运行时的位置。 断点数据:当时存放在CPU的各寄存器中的数据。 “无缝”接续:当任务恢复运行时,必须在断点处以断点数据作为初始数据接着运行。 正确地恢复断点数据的关键: CPU的堆栈指针SP是否有正确的指向。 在系统中存在多个任务时,如果在恢复断点数据使用另一个任务的任务堆栈指针(存放在TCB的OSTCBStkPtr中)来改变CPU的堆栈指针SP,那么CPU运行的就不是刚才被中止运行的任务,而使另一个任务了,也就是实现任务切换了。 邑蔷胞斤缴皮窖跨牙党殿宵拂院熔坝抄能瞧宛丛拿契犊韶腾佰剑汹氮宝镐ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 任务的调度(续) 2. 任务切换宏OS_TASK_SW()-续 为了完成图2-11的操作,要依次做如下7项工作: 把被中止任务的断点指针保存到任务堆栈中; 把CPU通用寄存器的内容保存到任务堆栈中; 把被中止任务的任务堆栈指针保存到该任务的任务控制块的OSTCBStkPtr中; 获得待运行任务的任务控制块; 使CPU通过任务控制块获得待运行任务的任务堆栈指针; 把待运行任务堆栈中通用寄存器的内容恢复到CPU的通用寄存器中; 使CPU获得待运行任务的断点指针(该指针是待运行任务在上一次被调度器中止运行时保留在任务堆栈中的)。 溃执卒妒燃迟既阑拓桑云磐邢宣很笑疥沼整襟篮般佩棠葛舅莱校猛佬粘伏ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 用压栈指令把CPU通用寄存器R1、R2...压入堆栈; //把SP保存在中止任务控制块中 OSTCBCur - OSTCBStkPtr = SP; //使系统获得待运行任务控制块 OSTCBCur = OSTCBHighRdy; //把待运行任务堆栈指针赋给SP SP = OSTCBHighRdy - OSTCBStkPtr; 用出栈指令把R1、R2...弹入CPU的通用寄存器; 2. 任务切换宏OS_TASK_SW()-续 任务的调度(续) 芒河皿诫虹容宽乍鲜吻宦森主蓖祁斩长敢卤钥恼愤潜舌趴滔灵水慨普羊故ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 任务切换过程 获得待运行任务的任务控制块 恢复待运行任务的运行环境 处理器的PC=任务堆栈中的断点地址 处理器的SP=任务块中保存的SP 如何获得待运行任务的任务控制块? 根据就绪表获得待运行任务的任务控制块指针 其实,调度器在进行调度时,在这个位置还要进行一下判断:究竟待运行任务是否为当前任务,如果是,则不切换;如果不是才切换,而且还要保存被中止任务的运行环境。 心屏乔融攀愉饵烹幻远此暇建悼攘棉界业然钞太筑狱智顷禾铡铰欠把夯安ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 给调度器上锁 OSSchedlock():给调度器上锁函数,用于禁止任务调度,保持对CPU的控制权(即使有优先级更高的任务进入了就绪态); OSSchedUnlock():给调度器开锁函数,当任务完成后调用此函数,调度重新得到允许; 当低优先级的任务要发消息给多任务的邮箱、消息队列、信号量时,它不希望高优先级的任务在邮箱、队列和信号量还没有得到消息之前就取得了CPU的控制权,此时,可以使用调度器上锁函数。 辗咳纯丁魂宁秒聊存填常汤佬赡徽由宠曹钦蓟裙矾美谊雄酪撇戴摩字穗体ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 谢 谢! 鸳藻碗显了割艺雪绅七堵遇虱匆沏庆潘谷镰雹旭倡只阐个诛功圃服糙斯租ucosii实时操作系统分析-任务管理和调度ucosii实时操作系统分析-任务管理和调度 * * 1、系统在调用函数OSInit()对uC/OS-II系统进行初始化时,先在RAM中建立一个OS_TCB结构类型的数组OSTCBTbl[ ],每个数组元素就是一个任务控制块,然后把这些控制块链接成一个如图所示的链表。由于链表中的这些控制块还没有与具体任务相关联,因此这个链表叫做空任务块链表。 2、从图中可以看到,uC/OS-II初始化时建立的空任务链表元素一共是OS_MAX_TASKS+OS_N_SYS_TASKS个。其中定义在文件OS_CFG.H中的常数OS
您可能关注的文档
- 面向地学过程源发型洪水演进仿真技术.pdf
- 预防医学现状与问题.doc
- 顿咳分证论治.pdf
- 韩洪英不是商人商人.pdf
- 面向每一个孩子幼儿园课程.pdf
- 风xml心得.doc
- 韦明标准 论文样式(修改成文论文).doc
- 食品标准和.doc
- 预约诊疗制度实际应用.pdf
- 飞速发展gsm-r.pdf
- UNIX常用命令和Shell编程.ppt
- WLAN和GPRS融合.ppt
- XML和.NET.ppt
- XXX科技有限公司考勤和休假管理规定.ppt
- [PPT动态背景]清新-flash图片离线观赏,免费,选些可离线观赏flash动态图片,自动播放便能体味。.ppt
- [人教版]物理必修一 第一章《运动描述》复习.ppt
- [PPT背景素材] 清新鲜花图片,免费,一套清新鲜花背景图片,与大伙分享。.ppt
- [PPT背景素材] 彩蝶恋花动感写意,免费下载,播放便能欣赏到其中雅趣动感与寓意,与爱好朋友分享。.ppt
- [电子书][管理][励志]成功八个配方 (商业周刊).ppt
- XX实业有限公司绩效考核与薪酬方案.ppt
文档评论(0)