最新嵌入式实时操作系统μCOS原理与实践2PPT课件.ppt
-
资源ID:77598187
资源大小:1.36MB
全文页数:29页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
最新嵌入式实时操作系统μCOS原理与实践2PPT课件.ppt
嵌入式实时操作系统嵌入式实时操作系统COSCOS原原理与实践理与实践2 2作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 任务管理任务管理2.1 任务管理数据结构2.2 任务控制块初始化2.3 操作系统初始化2.4 任务的创建2.5 任务的删除2.6 任务挂起和恢复2.7 任务的调度和多任务的启动2.8 特殊任务Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 空间换时间!Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 任务控制块的初始化是在创建任务的时候必须要执行的操作,对任务控制块的初始化是在创建任务的时候必须要执行的操作,对任务控制块和一些相关的数据结果进行了处理。任务控制块和一些相关的数据结果进行了处理。参数参数:prio被创建的任务的优先级被创建的任务的优先级ptos任务堆栈栈顶的地址任务堆栈栈顶的地址pbos任务堆栈栈底的地址,如果是用任务堆栈栈底的地址,如果是用OSTaskCreate()来创建来创建的任务,那么是没有扩展功能的,不能进行堆栈检查,就不主要适用这的任务,那么是没有扩展功能的,不能进行堆栈检查,就不主要适用这个参数,这个参数可以传递为个参数,这个参数可以传递为NULLid任务的任务的ID,16位,取值范围是位,取值范围是0到到65535stk_size堆栈的大小堆栈的大小pext任务控制块的扩展块的地址任务控制块的扩展块的地址opt其他的选项其他的选项返回值返回值:OS_ERR_NONE成功调用成功调用OS_ERR_TASK_NO_MORE_TCB如果没有空闲的任务控制块如果没有空闲的任务控制块Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 操作系统初始化函数操作系统初始化函数OS_INIT是操作系统在开始运行的最初,对是操作系统在开始运行的最初,对全局变量、任务控制块、就绪表、事件及消息队列等重要数据结全局变量、任务控制块、就绪表、事件及消息队列等重要数据结构进行的初始化操作,并创建空闲任务、统计任务等系统任务。构进行的初始化操作,并创建空闲任务、统计任务等系统任务。该函数必须在创建用户对象及调用该函数必须在创建用户对象及调用OSStart()启动实时任务调度启动实时任务调度之前运行。之前运行。操作系统初始化函数见表操作系统初始化函数见表2.15OS_InitMisc实现对操作系统一些混杂的全局变量的初始化 OS_InitRdyList对就绪表进行初始化的工作 OS_InitTCBList 控制块链表初始化OS_InitTaskIdle创建操作系统空闲任务Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 2.4任务的创建任务的创建 Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 删除任务是创建任务的逆过程,删除任务是创建任务的逆过程,任务创建设置就绪表,就绪组,任务删除则取消设置;任务创建设置就绪表,就绪组,任务删除则取消设置;任务创建将任务控制块从空闲链表移到就绪链表;删除操任务创建将任务控制块从空闲链表移到就绪链表;删除操作则相反。作则相反。Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ 当以其他任务的优先级作为参数的时候,当以其他任务的优先级作为参数的时候,OsTaskDel粗暴地删除粗暴地删除了任务,这在某些情况下是有效的,但是却不是必须这么做。通了任务,这在某些情况下是有效的,但是却不是必须这么做。通知对方任务,告诉它要删除你了,请任务自己删除自己是一种更知对方任务,告诉它要删除你了,请任务自己删除自己是一种更好的做法。因为这么做,任务可以在删除自己之前先放弃自己使好的做法。因为这么做,任务可以在删除自己之前先放弃自己使用的资源,如缓冲区、信号量、邮箱、队列等。如果总是用用的资源,如缓冲区、信号量、邮箱、队列等。如果总是用OsTaskDel删除一个任务,这个任务占用的资源不能得到释放,删除一个任务,这个任务占用的资源不能得到释放,系统就会产生内存泄漏,在内存泄漏累积到比较大的时候最后,系统就会产生内存泄漏,在内存泄漏累积到比较大的时候最后,系统就会因为没有可用的内存崩溃。系统就会因为没有可用的内存崩溃。OsTaskDelReq名称虽然是请求,却是集请求和响应于一段代名称虽然是请求,却是集请求和响应于一段代码的。该代码的功能是:码的。该代码的功能是:1.请求删除某任务请求删除某任务2.查看是否有任务要删除自己查看是否有任务要删除自己Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ OSTaskSuspend将任务阻塞,也就是被剥夺将任务阻塞,也就是被剥夺CPU的使用权而暂的使用权而暂时终止运行,转到阻塞状态。通过时终止运行,转到阻塞状态。通过OSTaskSuspend将任务转到将任务转到阻塞态被称为挂起任务。阻塞态被称为挂起任务。被挂起的任务不能运行,直到其他任务以该任务的优先级作为参被挂起的任务不能运行,直到其他任务以该任务的优先级作为参数调用数调用OSTaskResume来恢复它,才能将该任务的状态重新设置来恢复它,才能将该任务的状态重新设置为就绪状态。为就绪状态。Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ (1)80 x86CPU 2.OS_TASK_SW的分析 (2)表2.33 OS_TASK_SW代码分析 2.OS_TASK_SW的分析 (3)举例 例如现在系统中运行了任务A和任务B。任务A的优先级是4,任务B的优先级为5。系统创建了任务A和任务B,创建之后,任务A由于优先级高而获得运行,假设任务A调用OsTaskSuspend挂起自己,这时候任务B就将被操作系统调度获得运行。这时候首先要保存任务A的运行环境,首先将任务A恢复运行的时候继续运行的的地址nextstart推入堆栈,然后使用pushfd将标志寄存器,接着使用pushad将EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI依次压入堆栈中。因为经过进栈的操作,所以堆栈的地址变了,所以将当前任务堆栈的地址重新写回任务控制块的第一项,如表2.1所示的任务堆栈指针OSTCBStkPtr。这样,将任务A的CPU的运行环境保存在自己的堆栈里了,并且将重新获得运行后将要运行的代码的地址nextstart也保存在堆栈里,栈顶的地址也保存在控制块中。我们设这时候nextstart的地址是AddressForContunue,图示压入堆栈的内容如图:之后,任务B的运行环境被恢复并获得运行。任务B调用OsTaskResume恢复任务A时,由于任务A的优先级高,将被调 度执行。操作系统将再一次执行表2.33的代码。Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ Evaluation only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.作者卢有亮作者卢有亮图书图书PPT和全部代码下载和全部代码下载http:/ only.Created with Aspose.Slides for.NET 3.5 Client Profile 5.2.0.0.Copyright 2004-2011 Aspose Pty Ltd.结束语结束语谢谢大家聆听!谢谢大家聆听!29