- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
任务的调度(续) 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运行的就不是刚才被中止运行的任务,而使另一个任务了,也就是实现任务切换了。 任务的调度(续) 2. 任务切换宏OS_TASK_SW()-续 为了完成图2-11的操作,要依次做如下7项工作: 把被中止任务的断点指针保存到任务堆栈中; 把CPU通用寄存器的内容保存到任务堆栈中; 把被中止任务的任务堆栈指针保存到该任务的任务控制块的OSTCBStkPtr中; 获得待运行任务的任务控制块; 使CPU通过任务控制块获得待运行任务的任务堆栈指针; 把待运行任务堆栈中通用寄存器的内容恢复到CPU的通用寄存器中; 使CPU获得待运行任务的断点指针(该指针是待运行任务在上一次被调度器中止运行时保留在任务堆栈中的)。 用压栈指令把CPU通用寄存器R1、R2...压入堆栈; //把SP保存在中止任务控制块中 OSTCBCur - OSTCBStkPtr = SP; //使系统获得待运行任务控制块 OSTCBCur = OSTCBHighRdy; //把待运行任务堆栈指针赋给SP SP = OSTCBHighRdy - OSTCBStkPtr; 用出栈指令把R1、R2...弹入CPU的通用寄存器; 2. 任务切换宏OS_TASK_SW()-续 任务的调度(续) 任务切换过程 获得待运行任务的任务控制块 恢复待运行任务的运行环境 处理器的PC=任务堆栈中的断点地址 处理器的SP=任务块中保存的SP 如何获得待运行任务的任务控制块? 根据就绪表获得待运行任务的任务控制块指针 其实,调度器在进行调度时,在这个位置还要进行一下判断:究竟待运行任务是否为当前任务,如果是,则不切换;如果不是才切换,而且还要保存被中止任务的运行环境。 给调度器上锁 OSSchedlock():给调度器上锁函数,用于禁止任务调度,保持对CPU的控制权(即使有优先级更高的任务进入了就绪态); OSSchedUnlock():给调度器开锁函数,当任务完成后调用此函数,调度重新得到允许; 当低优先级的任务要发消息给多任务的邮箱、消息队列、信号量时,它不希望高优先级的任务在邮箱、队列和信号量还没有得到消息之前就取得了CPU的控制权,此时,可以使用调度器上锁函数。 谢 谢! * * 1、系统在调用函数OSInit()对uC/OS-II系统进行初始化时,先在RAM中建立一个OS_TCB结构类型的数组OSTCBTbl[ ],每个数组元素就是一个任务控制块,然后把这些控制块链接成一个如图所示的链表。由于链表中的这些控制块还没有与具体任务相关联,因此这个链表叫做空任务块链表。 2、从图中可以看到,uC/OS-II初始化时建立的空任务链表元素一共是OS_MAX_TASKS+OS_N_SYS_TASKS个。其中定义在文件OS_CFG.H中的常数OS_MAX_TASKS 指明了用户任务的最大数目;而定义在文件UCOS_II.H中的常数OS_N_SYSTASKS指明了系统任务的数目(在图中,其值为2:一个空闲任务,一个统计任务)。 3、每当应用程序调用系统函数OSTaskCreate()或OSTaskCreateExt()创建一个任务时,系统就会将任务控制块链表头指针OSTCBFreeList指向的任务控制块分配给该任务。在给任务控制块中的各成员赋值后,就按任务控制块链表的头指针OSTCBList 将其加入到任务控制块链表中。 * 1、为了管理上的方便,uC/OS-II把每一个任务都作为一个节点,然后把它连接成如图3-5所示的一个任务链表。 目前,uC/OS-II最多可以对64个任务(包括用户任务和系统任务)进行管理。 * * 1、从程序设计角度来看,一个UC/OS-II任务的代码就是一个C语言函数。为了可以传递各种不同类型的数据甚至是函数,任务的参数是一个void类型的指针。 2、为了有效的对中断进行控制,在任务的代码里可使用uC/OS-II定
您可能关注的文档
- TRIZ发明的40个发明原理.ppt
- t检验和u检验-6版.ppt
- TKA的康复治疗2.ppt
- U1P5 Listening exercise.ppt
- TRIZ理论培训教材.ppt
- TTT培训师培训(授课方式).ppt
- U1P2art Reading.ppt
- U2 fruitful questions.ppt
- U2P3 poems Language points.ppt
- U2P2poems Reading.ppt
- 2025年中国3D腹腔镜成像设备行业市场行情动态及发展趋向分析报告.docx
- 2025年中国铜箔行业市场全景调查及发展趋势分析报告.docx
- 2025年中国医疗电动推杆产业发展态势及投资前景趋势报告.docx
- 2025年中国摩托车启动电池行业投资潜力研究及发展趋势预测报告.docx
- 2025年中国枸橼酸西地那非行业市场全景调查及投资策略研究报告.docx
- 2025年中国绿色建筑行业市场现状调研及投资机会预测报告.docx
- 2025年中国隐形矫治器行业竞争格局分析及市场供需预测报告.docx
- 2025年中国医用消毒机行业发展动态及投资前景分析报告.docx
- 强化训练人教版7年级数学下册《平面直角坐标系》专项攻克试题(含详细解析).docx
- 2024-2025学年人教版7年级数学下册《平面直角坐标系》专题测试练习题(含答案详解).docx
最近下载
- 唐宋八大家之苏轼17舌尖上的东坡 - 毕业文章.docx VIP
- Job-朗文2A-Chapter4-People-at-work英语课件-(第一课时).ppt VIP
- 《汽车电工电子技术基础》说课程标准.pptx VIP
- 银川市农牧局2018年度食品安全工作自查报告.docx VIP
- 电商客服合作协议范本5篇.docx VIP
- JTJT343-1996港口地区有线电话通信系统工程设计规范.pdf VIP
- 唐宋八大家之苏轼16笑对人生 - 高中教育.docx VIP
- 2018款马自达阿特兹全车电路图.pdf VIP
- 食品管理文件管理制度(2025版).docx VIP
- 成都生物城建设有限公司成都天府生物医药产业加速器五期项目.pdf VIP
文档评论(0)