- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式实幺时操作系统μcos原理与实践2
嵌入式实时操作系统μC/OS原理与实践;第二章 任务管理;2.1任务管理数据结构;2.1任务管理数据结构;2.1.2空闲链表和就绪链表 ;2.1.3任务表 ;2.1.3任务优先级指针表;2.1.4 任务堆栈;2.1.4 任务堆栈
任务堆栈演示;2.1.5任务就绪表和就绪组;2.1.5 任务就绪表和就绪组-设置任务就绪;2.1.5 任务就绪表和就绪组-获取就绪任务中的最高优先级 ;;2.2 任务控制块初始化 ;Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.;2.3 操作系统初始化 ;创建一个任务,任务从无到有。任务创建函数分两种,
一种是基本的创建函数OSTaskCreate,
另一种是扩展的任务创建函数OSTaskCreateExt。
着重讲解OSTaskCreate。
表2.20 创建任务OS_TaskCreat。
表2.21 堆栈初始化函数OSTaskStkInit的一个版本
;2.4 任务的删除 ;2.4 任务的删除 ;2.4 任务的删除-请求删除
;2.4 任务的挂起和恢复 ;2.4 任务的挂起和恢复
流程 ;2.7 任务的调度和多任务的启动;就绪的任务进入获得CPU才能运行。任务切换函数就是执行这样的操作系统服务功能:如果正在运行的任务不是优先级最高的或即将被阻塞,需选择一个优先级最高的就绪的任务运行。该过程中非常重要的一点是,要保留正在运行任务运行的上下文,也就是运行环境,如CPU寄存器的值,以便在任务重新开始运行之前能恢复CPU寄存器的值。当然还要将将要运行的任务的上下文恢复到CPU寄存器。
OS_SchedNew
这个函数被其他μC/OS-II系统服务调用,用来确定最高优先级的就绪任务。该函数运行的结果就是给全局变量‘OSPrioHighRdy’赋值。显然,OSPrioHighRdy是最高优先级任务的优先级。
表2.31 OS_SchedNew代码分析
OS_Sched的分析
表2.32 OS_Sched代码分析
2. OS_TASK_SW的分析
;2. OS_TASK_SW的分析
(1) 80x86CPU
;2.8 特殊任务;2.8 特殊任务;习题
1.任务控制块是一个什么样的数据结构?请用C语言定义一个任务控制块数组,并对其进行初始化。
2.论述任务控制块初始化过程中构建任务控制块空闲链表的过程。
3.就绪表和就绪组的用途是什么?论述他们之间的关系。
4.编写代码实现将优先级为13,23,33的任务就绪,然后取消优先级为25的任务的就绪标志。
5.使用C语言创建一个任务堆栈,将这个堆栈赋值给一个任务控制块。
6.论述任务堆栈的增长方向对入栈出栈操作的影响。
7.解析任务调度的过程
8.任务创建函数OSTaskCreate和OSTaskCreateEXT有哪些区别?
9.任务是如何挂起和恢复的?
10.为什么要请求删除任务而不直接删除?请求删除任务函数有哪些功能,流程是什么?
11.论述统计任务是如何进行CPU利用率统计的。
文档评论(0)