欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统-Chapter5-任务管理与调度.ppt

    • 资源ID:59797723       资源大小:1.95MB        全文页数:153页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统-Chapter5-任务管理与调度.ppt

    电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心嵌入式系统-Chapter5-任务管理与调度 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第五章第五章任务管理与调度任务管理与调度电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心主要内容主要内容任务任务任务管理任务管理任务调度任务调度优先级反转优先级反转电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心High Priority TaskLow Priority TaskTaskTaskTaskTaskTaskTaskEventEventEach TaskInfinite LoopImportanceSplitting an application into TasksSplitting an application into Tasks电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心int main(void)/Initialize uCOS-II.OSInit();/Create the first task OSTaskCreate(TestTask1,(void*)11,&TestTaskStk1TASK_STK_SIZE,11);/Start multitasking.OSStart();return 0;void TestTask1(void*pdata)printf(%4u:*Test Task 1 First call*n,OSTime);/Create 3 other tasks OSTaskCreate(TestTask2,(void*)22,&TestTaskStk2TASK_STK_SIZE,22);OSTaskCreate(TestTask3,(void*)33,&TestTaskStk3TASK_STK_SIZE,33);OSTaskCreate(TestTask4,(void*)10,&TestTaskStk3TASK_STK_SIZE,10);while(1)printf(%4u:*Test Task 11*n,OSTime);OSTimeDly(1);Task demo based on uCOSTask demo based on uCOS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心void TestTask2(void*pdata)while(1)printf(%4u:*Test Task 22*n,OSTime);OSTimeDly(1);void TestTask3(void*pdata)while(1)printf(%4u:*Test Task 33*n,OSTime);OSTimeDly(1);void TestTask4(void*pdata)while(1)printf(%4u:+Test Task 10+n,OSTime);OSTaskSuspend(10);/Suspend yourself 程序运行结果程序运行结果程序运行结果程序运行结果电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心采用多任务的好处:采用多任务的好处:任务的任务的规模较小规模较小每个任务更容易编码和调试,其质量也更容易得到每个任务更容易编码和调试,其质量也更容易得到保证保证不少不少应用本身应用本身就是由多个任务构成的就是由多个任务构成的如一个应用可能需要进行以下任务的处理:计算、如一个应用可能需要进行以下任务的处理:计算、从网络获取数据和刷新显示屏幕从网络获取数据和刷新显示屏幕采用多任务的处理方式是应用问题的一个采用多任务的处理方式是应用问题的一个非常自然非常自然的解决方式的解决方式任务之间具有较高的独立性,耦合性小任务之间具有较高的独立性,耦合性小通过增加新的任务就能方便的通过增加新的任务就能方便的扩充系统功能扩充系统功能实时性强实时性强保证紧急事件得到优先处理成为可能保证紧急事件得到优先处理成为可能电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心在嵌入式实时系统中在嵌入式实时系统中任务任务(task)通常为)通常为进程进程(process)和)和线程线程(thread)的统称)的统称任务是任务是调度的基本单位调度的基本单位进程最初由进程最初由MulticsMultics的设计者在的设计者在6060年代提年代提出来的,主要包括以下内容:出来的,主要包括以下内容:一个正在执行的程序;一个正在执行的程序;计算机中正在运行的程序的一个实例;计算机中正在运行的程序的一个实例;可以分配给处理器,并由处理器执行的一个实体;可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。的系统资源所刻画的活动单元。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心进程由进程由代码代码、数据数据、堆栈堆栈和和进程控制块进程控制块构成。构成。进程控制块进程控制块包含了操作系统用来控制进程所需要包含了操作系统用来控制进程所需要的信息:的信息:进程状态进程状态CPU寄存器寄存器调度信息调度信息内存管理信息内存管理信息I/O状态信息等状态信息等早期的进程,包含了以下两个方面的内容:早期的进程,包含了以下两个方面的内容:资源资源。进程是资源分配的基本单位,一个进程包。进程是资源分配的基本单位,一个进程包括一个保存进程映像的虚拟地址空间、主存、括一个保存进程映像的虚拟地址空间、主存、I/O设备和文件等资源。设备和文件等资源。调度执行调度执行。进程作为操作系统的调度实体,是调。进程作为操作系统的调度实体,是调度的基本单位。度的基本单位。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心随着操作系统的发展,进程所包含的两随着操作系统的发展,进程所包含的两个方面的内容逐渐被分开:个方面的内容逐渐被分开:轻量级进程或线程轻量级进程或线程:调度执行的单位:调度执行的单位进程进程:资源分配的单位:资源分配的单位线程是进程内部一个相对独立的控制流,由线程是进程内部一个相对独立的控制流,由线程上下文和需要执行的一段程序指令构成线程上下文和需要执行的一段程序指令构成在进程中,在进程中,所有线程共享该进程的状态和资所有线程共享该进程的状态和资源源,可以访问相同的数据,可以访问相同的数据电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心使用线程的优势:使用线程的优势:创建创建:在一个已有进程中创建一个新线程比创建一个:在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;全新的进程所需的时间开销少;终止终止:终止一个线程比终止一个进程所花费的时间少;:终止一个线程比终止一个进程所花费的时间少;切换切换:线程切换比进程切换所花费的时间少;:线程切换比进程切换所花费的时间少;通信通信:使同一进程内部不同线程之间的:使同一进程内部不同线程之间的通信效率通信效率得到得到显著提高。显著提高。在大多数操作系统中,不同进程之间的通信需要内核的干预,在大多数操作系统中,不同进程之间的通信需要内核的干预,而同一进程内部不同线程之间则可直接通信。而同一进程内部不同线程之间则可直接通信。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心引入线程的概念后,可把进程和线程的引入线程的概念后,可把进程和线程的使用分为以下几种模型:使用分为以下几种模型:单进程单进程/单线程模型单线程模型(如MS-DOS):整个系统只有一个进程、一个线程 单进程单进程/多线程模型多线程模型:在单进程/多线程模型中,整个系统有一个进程、多个线程 多进程多进程/单线程模型单线程模型(如传统的UNIX):在多进程/单线程模型中,整个系统有多个进程,每个进程只有一个线程 多进程多进程/多线程模型多线程模型(如Windows NT、Solaris、Mach等):在多进程/多线程模型中,系统有多个进程,每个进程又可包含多个线程 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心单进程单进程/单线程模型单线程模型单进程单进程/多线程模型多线程模型多进程多进程/多线程模型多线程模型多进程多进程/单线程模型单线程模型电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心大多数嵌入式实时内核:单进程大多数嵌入式实时内核:单进程/多线程多线程模型,或简单地称为模型,或简单地称为任务模型任务模型把整个应用当作一个没有定义的进程来对待;把整个应用当作一个没有定义的进程来对待;应用则被划分为多个任务的形式来进行处理应用则被划分为多个任务的形式来进行处理。适用于实时性要求较高的、相对简单的应用适用于实时性要求较高的、相对简单的应用也有一些嵌入式实时操作系统采用了也有一些嵌入式实时操作系统采用了多多进程进程/多线程模型多线程模型:系统中包含多个进程,每个进程对应又包含系统中包含多个进程,每个进程对应又包含多个线程多个线程适合于处理复杂的应用适合于处理复杂的应用电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第一节第一节任任 务务 任务的定义及其主要特性任务的定义及其主要特性任务的内容任务的内容任务的分类任务的分类任务参数任务参数电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的定义及其主要特性任务的定义及其主要特性任务是一个具有任务是一个具有独立功能独立功能的的无限循环无限循环的程序段的的程序段的一次运行活动,是实时内核调度的单位,具有以一次运行活动,是实时内核调度的单位,具有以下特性:下特性:动态性动态性:任务状态是不断变化的。一般分为就绪态、运行态和等待态。一般分为就绪态、运行态和等待态。在多任务系统中,任务的状态将随着系统的需要不断进行变化。在多任务系统中,任务的状态将随着系统的需要不断进行变化。并行性并行性:系统中同时存在多个任务,这些任务在宏观上是同时运行的系统中同时存在多个任务,这些任务在宏观上是同时运行的。异步独立性异步独立性:每个任务各自按相互独立的不可预知的速度运行,走走停停每个任务各自按相互独立的不可预知的速度运行,走走停停。多任务运行情况多任务运行情况多任务运行情况多任务运行情况电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务主要包含以下内容:任务主要包含以下内容:代码代码:一段可执行的程序一段可执行的程序数据数据:程序所需要的相关数据(变量、工作空:程序所需要的相关数据(变量、工作空间、缓冲区等)间、缓冲区等)堆栈堆栈程序执行的上下文环境程序执行的上下文环境电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务通常包含一个具有任务通常包含一个具有无限循环无限循环的程序的程序/*ioTask implements data obtaining and handling continuously*/void ioTask(void)int data;initial();/*The following sentences get data and handle data continuously*/while(TRUE)data=getData();handleData(data);电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心 void YourTask(void*pdata)for(;)/*USER CODE*/Call one of uC/OS-IIs services:OSFlagPend();OSMboxPend();OSMutexPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();/*USER CODE*/void YourTask(void*pdata)/*USER CODE*/OSTaskDel(OS_PRIO_SELF);电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心void TestTask2(void*pdata)while(1)printf(%4u:*Test Task 22*n,OSTime);OSTimeDly(1);void TestTask3(void*pdata)while(1)printf(%4u:*Test Task 33*n,OSTime);OSTimeDly(1);void TestTask4(void*pdata)while(1)printf(%4u:+Test Task 10+n,OSTime);OSTaskSuspend(10);/Suspend yourself 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务与程序的区别:任务与程序的区别:任务能真实地描述工作内容的任务能真实地描述工作内容的并发性并发性,而程,而程序不能;序不能;程序是任务的组成部分程序是任务的组成部分除程序外,任务还包括数据、堆栈及其上下文环除程序外,任务还包括数据、堆栈及其上下文环境等内容;境等内容;程序是静态的,任务是动态的;程序是静态的,任务是动态的;任务有任务有生命周期生命周期,有诞生、有消亡,是短暂,有诞生、有消亡,是短暂的;而程序是相对长久的;的;而程序是相对长久的;一个程序可对应多个任务,反之亦然;一个程序可对应多个任务,反之亦然;任务具有创建其他任务的功能,而程序没有任务具有创建其他任务的功能,而程序没有。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务上下文环境(任务上下文环境(contextcontext)包括了实时内核包括了实时内核管理任务管理任务、以及处理器、以及处理器执行任执行任务务所需要的所有信息。所需要的所有信息。任务优先级任务优先级任务的状态任务的状态等实时内核所需要的信息等实时内核所需要的信息以及处理器的以及处理器的各种寄存器的内容(各种寄存器的内容(hardware context):程序计数器、堆栈指针、通用寄存器等:程序计数器、堆栈指针、通用寄存器等的内容的内容任务的上下文环境通过任务的上下文环境通过任务控制块任务控制块(Task Control Block,TCB)来体现。)来体现。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务任务1 1任务任务2 2任务任务3 3内核内核内核代码内核代码内核数据内核数据栈栈数据数据任务任务控制块控制块代码代码栈栈数据数据任务任务控制块控制块代码代码栈栈数据数据任务任务控制块控制块代码代码任务任务1 1任务任务2 2任务任务3 3多任务系统多任务系统多任务系统多任务系统示意图示意图示意图示意图电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类按照到达情况的可预测性,任务可以划分按照到达情况的可预测性,任务可以划分为:为:周期任务周期任务(periodic task)非周期任务非周期任务按照重要程度,可分为:按照重要程度,可分为:关键任务关键任务(critical task)非关键任务非关键任务(noncritical task)电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类周期任务与非周期任务周期任务与非周期任务周期任务每隔一个固定的时间间隔就会执行周期任务每隔一个固定的时间间隔就会执行一次。一次。举例:飞行器可能需要每隔举例:飞行器可能需要每隔100ms获得一次关于获得一次关于飞行器的速度、高度和姿态数据,控制传感器获飞行器的速度、高度和姿态数据,控制传感器获取这些数据就需要通过周期任务来进行。取这些数据就需要通过周期任务来进行。非周期任务执行的间隔时间则为不确定的。非周期任务执行的间隔时间则为不确定的。举例:移动通信设备中的通信任务,该任务只有举例:移动通信设备中的通信任务,该任务只有在需要进行通信的情况下才会得到执行。在需要进行通信的情况下才会得到执行。非周期任务分为:非周期任务分为:sporadic task:有最小到达间隔时间限制有最小到达间隔时间限制aperiodic task:没有到达时间限制没有到达时间限制电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类关键任务与非关键任务关键任务与非关键任务关键任务:关键任务:为需要得到需要得到及时执行及时执行的任务,否则将出现灾难性的的任务,否则将出现灾难性的后果后果举例:飞行器中用于处理生命支持系统和稳定性控制系统举例:飞行器中用于处理生命支持系统和稳定性控制系统的任务的任务非关键任务:非关键任务:如果没有得到及时执行,则不会产生严重后果如果没有得到及时执行,则不会产生严重后果 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数任务参数:任务参数:优先级(优先级(priority)周期(周期(period)计算时间(计算时间(computation time)就绪时间(就绪时间(ready time)截止时间(截止时间(deadline)电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数任务的优先级任务的优先级表示任务对应工作内容在处理上的表示任务对应工作内容在处理上的优先程度优先程度优先级越高,表明任务越需要得到优先处理优先级越高,表明任务越需要得到优先处理飞行器中处理稳定性控制的任务,就需要具有较飞行器中处理稳定性控制的任务,就需要具有较高的优先级,一旦执行条件得到满足,应及时得高的优先级,一旦执行条件得到满足,应及时得到执行到执行任务的优先级分为任务的优先级分为静态优先级静态优先级和和动态优先级动态优先级。静态优先级:任务的优先级被确定后,在系统运静态优先级:任务的优先级被确定后,在系统运行过程中将不再发生变化;行过程中将不再发生变化;动态优先级:系统运行过程中,任务的优先级是动态优先级:系统运行过程中,任务的优先级是可以动态变化的。可以动态变化的。返回返回电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数周期周期周期任务所具有的参数,表示任务周期性执行的间隔时间任务的计算时间任务的计算时间任务在特定硬件环境下特定硬件环境下被完整执行所需要的时间,也被称为是任务的执行时间任务的执行时间(execution time)。由于任务每次执行的软件环境的差异性,导致任务在各次具体执行过程中的计算时间各有不同。通常用最坏情况下的执行时间最坏情况下的执行时间(worst case time)或是需要的最长执行时间来表示,也可用统计时间统计时间(statistical time)来表示。返回返回电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数任务的就绪时间任务的就绪时间任务具备了在处理器上被执行所需要条件时的时间。任务的截止时间任务的截止时间意味着任务需要在该时间到来之前被执行完成。截止时间可以通过绝对截止时间绝对截止时间(absolute deadline)和相对截止时间相对截止时间(relative time)两种方式来表示相对截止时间为任务的绝对截止时间减去任务的就绪时间。截止时间可以分为强截止时间强截止时间(hard deadline)和弱截弱截止时间止时间(soft deadline)两种情况:具有强截止时间的任务即为关键任务关键任务,如果截止时间不能得到满足,就会出现严重的后果。拥有关键任务的实时系统又被称为强实时强实时(hard real-time)系统,否则称为弱实时弱实时(soft real-time)系统。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第二节第二节任务管理任务管理任务状态与变迁任务状态与变迁空闲任务空闲任务任务控制块任务控制块任务切换任务切换任务队列任务队列优先级位图算法优先级位图算法任务管理机制任务管理机制电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务状态与变迁任务状态与变迁任务拥有的任务拥有的资源情况资源情况是不断变化的,导致是不断变化的,导致任务状态任务状态也表现出不断变化的特性。也表现出不断变化的特性。不同的实时内核实现方式对任务状态的定不同的实时内核实现方式对任务状态的定义不尽相同,但是都可以概括为三种基本义不尽相同,但是都可以概括为三种基本的状态:的状态:等待等待(waiting):任务在等待某个事件的发):任务在等待某个事件的发生;生;就绪就绪(ready):):任务等待获得处理器资源;任务等待获得处理器资源;执行执行(running):任务获得处理器资源,所):任务获得处理器资源,所包含的代码内容正在被执行包含的代码内容正在被执行。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务状态与变迁任务状态与变迁在单处理器系统中:在单处理器系统中:任何时候都任何时候都只有一个任务在只有一个任务在CPUCPU中执行中执行如果没有任何事情可做,就运行如果没有任何事情可做,就运行空闲任务空闲任务执行空执行空操作操作任何一个可以执行的任务都必须处于任何一个可以执行的任务都必须处于就绪状态就绪状态调度程序从任务的调度程序从任务的就绪队列就绪队列中选择下一个需要执中选择下一个需要执行的任务。行的任务。处于就绪状态的任务拥有除处于就绪状态的任务拥有除CPU以外的其他所有以外的其他所有需要的资源。需要的资源。任务还可能处于任务还可能处于等待状态等待状态如果任务在需要等待如果任务在需要等待I/O设备或其他任务提供的数设备或其他任务提供的数据,而数据又还没有到达该任务的情况下,就处据,而数据又还没有到达该任务的情况下,就处于等待状态于等待状态电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务状态与变迁任务状态与变迁任务会在不同的状态之间进行转换,即任务会在不同的状态之间进行转换,即任务状态的变迁任务状态的变迁就绪态就绪态运行态运行态等待态等待态获得获得CPUCPU被高优先级被高优先级任务抢占或任务抢占或超时超时获得资源获得资源需要需要资源资源任务状态变迁任务状态变迁任务状态变迁任务状态变迁电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务任务1 1任务任务2 2任务任务3 3调度调度程序程序0 05 5101015152020252530303535404045455050运行运行等待等待就绪就绪三个任务进行状态转换的过程三个任务进行状态转换的过程 包含三个任务和一个调度程序。调度程序用来确定下一个包含三个任务和一个调度程序。调度程序用来确定下一个需要投入运行的任务,因此需要投入运行的任务,因此调度程序本身也需要占用一定调度程序本身也需要占用一定的处理时间的处理时间。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心Task states and transition of uCOSTask states and transition of uCOSOSMBoxPOST()OSQPost()OSQPostFront()OSSemPost()OSTASKResume()OSTimeDlyResume()OSTimeTick()OSMBoxPend()OSQPend()OSSemPend()OSTaskSuspend()OSTimeDly()OSTimeDlyHMSM()InterruptOSIntExit()OSStart()OSIntExit()OS_TASK_SW()OSTaskDel()OSTaskCreate()OSTaskCreateExt()OSTaskDel()Task is PreemptedOSTaskDel()WAITINGDORMANTREADYRUNNINGISR电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心空闲任务空闲任务Which is executed when Which is executed when none of the none of the other tasksother tasks is ready to run.is ready to run.The idle task is always set to the The idle task is always set to the lowest priority.lowest priority.The idle task The idle task can never be deletedcan never be deleted by by application software.application software.Idle Task is created by OSIdle Task is created by OS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心void OS_TaskIdle(void*pdata)/*Prevent compiler warning for not using pdata*/pdata=pdata;for(;)OS_ENTER_CRITICAL();OSIdleCtr+;OS_EXIT_CRITICAL();/*Call user definable HOOK */OSTaskIdleHook();Idle Task of uCOSIdle Task of uCOSOSIdleCtr is used by the statistics task to determine how OSIdleCtr is used by the statistics task to determine how much CPU time(in percentage)is actually being consumed much CPU time(in percentage)is actually being consumed by the application software.by the application software.电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务控制块任务控制块任务管理是通过对任务管理是通过对任务控制块任务控制块(Task Control Task Control BlockBlock,TCBTCB)的操作来实现的。)的操作来实现的。任务控制块任务控制块是包含任务相关信息的数据结构是包含任务相关信息的数据结构包含了任务执行过程中所需要的所有信息。包含了任务执行过程中所需要的所有信息。任务控制块大都包括以下信息:任务控制块大都包括以下信息:任务的名字任务的名字任务执行的起始地址任务执行的起始地址任务的优先级任务的优先级任务的状态任务的状态任务的硬件上下文(堆栈指针、任务的硬件上下文(堆栈指针、PC和寄存器等和寄存器等)任务的队列指针等内容任务的队列指针等内容 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心task nametask IDtask statustask prioritytask context(registers and flags of CPU)任务控制块示意图任务控制块示意图任务控制块示意图任务控制块示意图电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务控制块任务控制块为节约内存,为节约内存,任务数量任务数量通常需要进行预先通常需要进行预先配置配置按照配置的任务数量初始化任务控制块,一个任务对按照配置的任务数量初始化任务控制块,一个任务对应一个初始的任务控制块,形成一个应一个初始的任务控制块,形成一个空闲任务控制块空闲任务控制块链链。在任务创建时,实时内核从空闲任务控制在任务创建时,实时内核从空闲任务控制块链中为任务分配一个任务控制块。块链中为任务分配一个任务控制块。随后对任务的操作,都是基于对应的随后对任务的操作,都是基于对应的任务控制块任务控制块来进来进行的。行的。当任务被删除后,对应的任务控制块又会被实时内核当任务被删除后,对应的任务控制块又会被实时内核回收到回收到空闲任务控制块链空闲任务控制块链。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心typedef struct os_tcb OS_STK *OSTCBStkPtr;/*Pointer to current top of stack*/#if OS_TASK_CREATE_EXT_EN 0 void *OSTCBExtPtr;/*Pointer to user definable data for TCB extension*/OS_STK *OSTCBStkBottom;/*Pointer to bottom of stack */INT32U OSTCBStkSize;/*Size of task stack(in number of stack elements)*/INT16U OSTCBOpt;/*Task options as passed by OSTaskCreateExt()*/INT16U OSTCBId;/*Task ID(0.65535)*/#endif struct os_tcb*OSTCBNext;/*Pointer to next TCB in the TCB list*/struct os_tcb*OSTCBPrev;/*Pointer to previous TCB in the TCB list*/TCB of uCOSTCB of uCOS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心#if(OS_Q_EN0)&(OS_MAX_QS0)|(OS_MBOX_EN0)|(OS_SEM_EN0)|(OS_MUTEX_EN0)OS_EVENT *OSTCBEventPtr;/*Pointer to event control block*/#endif#if(OS_Q_EN 0)&(OS_MAX_QS 0)|(OS_MBOX_EN 0)void*OSTCBMsg;/*Message received from OSMboxPost()or OSQPost()*/#endifTCB of uCOSTCB of uCOS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心#if(OS_VERSION=251)&(OS_FLAG_EN 0)&(OS_MAX_FLAGS 0)#if OS_TASK_DEL_EN 0 OS_FLAG_NODE *OSTCBFlagNode;/*Pointer to event flag node*/#endif OS_FLAGS OSTCBFlagsRdy;/*Event flags that made task ready to run*/#endif INT16U OSTCBDly;/*Nbr ticks to delay task or,timeout waiting for event*/INT8U OSTCBStat;/*Task status*/INT8U OSTCBPrio;/*Task priority(0=highest,63=lowest)*/TCB of uCOSTCB of uCOS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心INT8U OSTCBX;/*Bit position in group corresponding to task priority(0.7)*/INT8U OSTCBY;/*Index into ready table corresponding to task priority*/INT8U OSTCBBitX;/*Bit mask to access bit position in ready table */INT8U OSTCBBitY;/*Bit mask to access bit position in ready group */#if OS_TASK_DEL_EN 0 BOOLEAN OSTCBDelReq;/*Indicates whether a task needs to delete itself */#endif OS_TCB;TCB of uCOSTCB of uCOS电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务切换任务切换任务切换任务切换(context switchingcontext switching)保存当前任务的上下文,并恢复需要执行的任保存当前任务的上下文,并恢复需要执行的任务的上下文的过程。务的上下文的过程。当发生任务切换时:当发生任务切换时:当前正在运行的任务的上下文就需要通过该任当前正在运行的任务的上下文就需要通过该任务的务的任务控制块任务控制块保存起来;保存起来;把需要把需要投入运行的任务投入运行的任务的上下文从对应的任务的上下文从对应的任务控制块中恢复出来。控制块中恢复出来。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务任务1 1任务任务2 2任务任务3 3调度调度程序程序0 05 5101015152020252530303535404045455050运行运行等待等待就绪就绪在时刻在时刻8 8即发生了任务切换,即发生了任务切换,任务任务1 1的上下文需要保存到任务的上下文需要保存到任务1 1的任务的任务控制块中去控制块中去。经过调度程序的处理,在时刻经过调度程序的处理,在时刻1010任务任务2 2投入运行,需要把投入运行,需要把任务任务2 2的任务的任务控制块中关于上下文的内容恢复到控制块中关于上下文的内容恢复到CPUCPU的寄存器中的寄存器中。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务任务1 1任务任务2 2实时内核调度程序实时内核调度程序保存任务保存任务1 1的上下文到的上下文到TCB1TCB1从从TCB2TCB2恢复任务恢复任务2 2的上下文的上下文保存任务保存任务2 2的上下文到的上下文到TCB2TCB2从从TCB1TCB1恢复任务恢复任务1 1的上下文的上下文时间时间任务任务1 1执行一段时间后,由于某种原因,需要进行任务切换,进入实时内执行一段时间后,由于某种原因,需要进行任务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内容保存到任务核的调度程序。调度程序首先把当前的上下文内容保存到任务1 1的任务控的任务控制块制块TCB1TCB1中,然后又把任务中,然后又把任务2 2的上下文从的上下文从TCB2TCB2中恢复到中恢复到CPUCPU寄存器,随后寄存器,随后任务任务2 2得到执行。任务得到执行。任务2 2执行一段时间后,由于某种原因,需要进行任务执行一段时间后,由于某种原因,需要进行任务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内容保切换,进入实时内核的调度程序。调度程序首先把当前的上下文内容保存到任务存到任务2 2的任务控制块的任务控制块TCB2TCB2中,然后又把任务中,然后又把任务1 1的上下文从的上下文从TCB1TCB1中恢复中恢复到到CPUCPU寄存器,随后任务寄存器,随后任务1 1得到执行。得到执行。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务切换任务切换任务切换将导致任务切换将导致任务状态任务状态发生变化:发生变化:当前正在运行的任务将由当前正在运行的任务将由运行状态运行状态变为变为就绪就绪或是等待或是等待状态;状态;需要投入运行的任务则由需要投入运行的任务则由就绪状态就绪状态变为变为运行运行状态状态。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务切换任务切换 任任务务切切换换基基本本步步骤骤 1 保存任务上下文环境保存任务上下文环

    注意事项

    本文(嵌入式系统-Chapter5-任务管理与调度.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开