嵌入式系统-Chapter5-任务管理与调度.ppt
《嵌入式系统-Chapter5-任务管理与调度.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统-Chapter5-任务管理与调度.ppt(153页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心嵌入式系统-Chapter5-任务管理与调度 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第五章第五章任务管理与调度任务管理与调度电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心主要内容主要内容任务任务任务管理任务管理任务调度任务调度优先级反转优先级反转电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心High Prior
2、ity 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,&TestTaskS
3、tk1TASK_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(TestTa
4、sk4,(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(
5、%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 程序运行结果程序运行结果程序运行结果程序运行结果电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心采用多任务的好处:采用多任务的好处:任务的任务的规模较小规模较小每个任务更容易编码和调试,其质量也更容易得到每个任务更容易编码和调试,其质量也更容易得到保证保证不少不少应用本身应用本身就是由多个任务构
6、成的就是由多个任务构成的如一个应用可能需要进行以下任务的处理:计算、如一个应用可能需要进行以下任务的处理:计算、从网络获取数据和刷新显示屏幕从网络获取数据和刷新显示屏幕采用多任务的处理方式是应用问题的一个采用多任务的处理方式是应用问题的一个非常自然非常自然的解决方式的解决方式任务之间具有较高的独立性,耦合性小任务之间具有较高的独立性,耦合性小通过增加新的任务就能方便的通过增加新的任务就能方便的扩充系统功能扩充系统功能实时性强实时性强保证紧急事件得到优先处理成为可能保证紧急事件得到优先处理成为可能电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心在嵌入式实时系统中在嵌入式实时系统中任务
7、任务(task)通常为)通常为进程进程(process)和)和线程线程(thread)的统称)的统称任务是任务是调度的基本单位调度的基本单位进程最初由进程最初由MulticsMultics的设计者在的设计者在6060年代提年代提出来的,主要包括以下内容:出来的,主要包括以下内容:一个正在执行的程序;一个正在执行的程序;计算机中正在运行的程序的一个实例;计算机中正在运行的程序的一个实例;可以分配给处理器,并由处理器执行的一个实体;可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。的系统资
8、源所刻画的活动单元。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心进程由进程由代码代码、数据数据、堆栈堆栈和和进程控制块进程控制块构成。构成。进程控制块进程控制块包含了操作系统用来控制进程所需要包含了操作系统用来控制进程所需要的信息:的信息:进程状态进程状态CPU寄存器寄存器调度信息调度信息内存管理信息内存管理信息I/O状态信息等状态信息等早期的进程,包含了以下两个方面的内容:早期的进程,包含了以下两个方面的内容:资源资源。进程是资源分配的基本单位,一个进程包。进程是资源分配的基本单位,一个进程包括一个保存进程映像的虚拟地址空间、主存、括一个保存进程映像的虚拟地址空间、主存、I/
9、O设备和文件等资源。设备和文件等资源。调度执行调度执行。进程作为操作系统的调度实体,是调。进程作为操作系统的调度实体,是调度的基本单位。度的基本单位。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心随着操作系统的发展,进程所包含的两随着操作系统的发展,进程所包含的两个方面的内容逐渐被分开:个方面的内容逐渐被分开:轻量级进程或线程轻量级进程或线程:调度执行的单位:调度执行的单位进程进程:资源分配的单位:资源分配的单位线程是进程内部一个相对独立的控制流,由线程是进程内部一个相对独立的控制流,由线程上下文和需要执行的一段程序指令构成线程上下文和需要执行的一段程序指令构成在进程中,在进程中
10、,所有线程共享该进程的状态和资所有线程共享该进程的状态和资源源,可以访问相同的数据,可以访问相同的数据电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心使用线程的优势:使用线程的优势:创建创建:在一个已有进程中创建一个新线程比创建一个:在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;全新的进程所需的时间开销少;终止终止:终止一个线程比终止一个进程所花费的时间少;:终止一个线程比终止一个进程所花费的时间少;切换切换:线程切换比进程切换所花费的时间少;:线程切换比进程切换所花费的时间少;通信通信:使同一进程内部不同线程之间的:使同一进程内部不同线程之间的通信效率通信效
11、率得到得到显著提高。显著提高。在大多数操作系统中,不同进程之间的通信需要内核的干预,在大多数操作系统中,不同进程之间的通信需要内核的干预,而同一进程内部不同线程之间则可直接通信。而同一进程内部不同线程之间则可直接通信。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心引入线程的概念后,可把进程和线程的引入线程的概念后,可把进程和线程的使用分为以下几种模型:使用分为以下几种模型:单进程单进程/单线程模型单线程模型(如MS-DOS):整个系统只有一个进程、一个线程 单进程单进程/多线程模型多线程模型:在单进程/多线程模型中,整个系统有一个进程、多个线程 多进程多进程/单线程模型单线程模型
12、(如传统的UNIX):在多进程/单线程模型中,整个系统有多个进程,每个进程只有一个线程 多进程多进程/多线程模型多线程模型(如Windows NT、Solaris、Mach等):在多进程/多线程模型中,系统有多个进程,每个进程又可包含多个线程 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心单进程单进程/单线程模型单线程模型单进程单进程/多线程模型多线程模型多进程多进程/多线程模型多线程模型多进程多进程/单线程模型单线程模型电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心大多数嵌入式实时内核:单进程大多数嵌入式实时内核:单进程/多线程多线程模型,或简单地称为模型,或简单
13、地称为任务模型任务模型把整个应用当作一个没有定义的进程来对待;把整个应用当作一个没有定义的进程来对待;应用则被划分为多个任务的形式来进行处理应用则被划分为多个任务的形式来进行处理。适用于实时性要求较高的、相对简单的应用适用于实时性要求较高的、相对简单的应用也有一些嵌入式实时操作系统采用了也有一些嵌入式实时操作系统采用了多多进程进程/多线程模型多线程模型:系统中包含多个进程,每个进程对应又包含系统中包含多个进程,每个进程对应又包含多个线程多个线程适合于处理复杂的应用适合于处理复杂的应用电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第一节第一节任任 务务 任务的定义及其主要特性任务的
14、定义及其主要特性任务的内容任务的内容任务的分类任务的分类任务参数任务参数电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的定义及其主要特性任务的定义及其主要特性任务是一个具有任务是一个具有独立功能独立功能的的无限循环无限循环的程序段的的程序段的一次运行活动,是实时内核调度的单位,具有以一次运行活动,是实时内核调度的单位,具有以下特性:下特性:动态性动态性:任务状态是不断变化的。一般分为就绪态、运行态和等待态。一般分为就绪态、运行态和等待态。在多任务系统中,任务的状态将随着系统的需要不断进行变化。在多任务系统中,任务的状态将随着系统的需要不断进行变化。并行性并行性:系统中同时存在
15、多个任务,这些任务在宏观上是同时运行的系统中同时存在多个任务,这些任务在宏观上是同时运行的。异步独立性异步独立性:每个任务各自按相互独立的不可预知的速度运行,走走停停每个任务各自按相互独立的不可预知的速度运行,走走停停。多任务运行情况多任务运行情况多任务运行情况多任务运行情况电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务主要包含以下内容:任务主要包含以下内容:代码代码:一段可执行的程序一段可执行的程序数据数据:程序所需要的相关数据(变量、工作空:程序所需要的相关数据(变量、工作空间、缓冲区等)间、缓冲区等)堆栈堆栈程序执行的上下文环境程序执行的上下文环境电
16、子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务通常包含一个具有任务通常包含一个具有无限循环无限循环的程序的程序/*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);电子科技大学嵌入式软件工程中心电子科技大学
17、嵌入式软件工程中心 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
18、);电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心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
19、 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务与程序的区别:任务与程序的区别:任务能真实地描述工作内容的任务能真实地描述工作内容的并发性并发性,而程,而程序不能;序不能;程序是任务的组成部分程序是任务的组成部分除程序外,任务还包括数据、堆栈及其上下文环除程序外,任务还包括数据、堆栈及其上下文环境等内容;境等内容;程序是静态的,任务是动态的;程序是静态的,任务是动态的;任务有任务有生命周期生命周期,有诞生、有消亡,是短暂,有诞生、有消亡,是短暂的;而程序是相对长久的;的;而程序是相对长久的;一个程序可对应多个任务,反之亦然;一个程序可对应多个任务,反之亦然
20、;任务具有创建其他任务的功能,而程序没有任务具有创建其他任务的功能,而程序没有。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的内容任务的内容任务上下文环境(任务上下文环境(contextcontext)包括了实时内核包括了实时内核管理任务管理任务、以及处理器、以及处理器执行任执行任务务所需要的所有信息。所需要的所有信息。任务优先级任务优先级任务的状态任务的状态等实时内核所需要的信息等实时内核所需要的信息以及处理器的以及处理器的各种寄存器的内容(各种寄存器的内容(hardware context):程序计数器、堆栈指针、通用寄存器等:程序计数器、堆栈指针、通用寄存器等的内容的
21、内容任务的上下文环境通过任务的上下文环境通过任务控制块任务控制块(Task Control Block,TCB)来体现。)来体现。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务任务1 1任务任务2 2任务任务3 3内核内核内核代码内核代码内核数据内核数据栈栈数据数据任务任务控制块控制块代码代码栈栈数据数据任务任务控制块控制块代码代码栈栈数据数据任务任务控制块控制块代码代码任务任务1 1任务任务2 2任务任务3 3多任务系统多任务系统多任务系统多任务系统示意图示意图示意图示意图电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类按照到达情况的可预测性
22、,任务可以划分按照到达情况的可预测性,任务可以划分为:为:周期任务周期任务(periodic task)非周期任务非周期任务按照重要程度,可分为:按照重要程度,可分为:关键任务关键任务(critical task)非关键任务非关键任务(noncritical task)电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类周期任务与非周期任务周期任务与非周期任务周期任务每隔一个固定的时间间隔就会执行周期任务每隔一个固定的时间间隔就会执行一次。一次。举例:飞行器可能需要每隔举例:飞行器可能需要每隔100ms获得一次关于获得一次关于飞行器的速度、高度和姿态数据,控制传感器
23、获飞行器的速度、高度和姿态数据,控制传感器获取这些数据就需要通过周期任务来进行。取这些数据就需要通过周期任务来进行。非周期任务执行的间隔时间则为不确定的。非周期任务执行的间隔时间则为不确定的。举例:移动通信设备中的通信任务,该任务只有举例:移动通信设备中的通信任务,该任务只有在需要进行通信的情况下才会得到执行。在需要进行通信的情况下才会得到执行。非周期任务分为:非周期任务分为:sporadic task:有最小到达间隔时间限制有最小到达间隔时间限制aperiodic task:没有到达时间限制没有到达时间限制电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务的分类任务的分类关键任
24、务与非关键任务关键任务与非关键任务关键任务:关键任务:为需要得到需要得到及时执行及时执行的任务,否则将出现灾难性的的任务,否则将出现灾难性的后果后果举例:飞行器中用于处理生命支持系统和稳定性控制系统举例:飞行器中用于处理生命支持系统和稳定性控制系统的任务的任务非关键任务:非关键任务:如果没有得到及时执行,则不会产生严重后果如果没有得到及时执行,则不会产生严重后果 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数任务参数:任务参数:优先级(优先级(priority)周期(周期(period)计算时间(计算时间(computation time)就绪时间(就绪时间(re
25、ady time)截止时间(截止时间(deadline)电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务参数任务参数任务的优先级任务的优先级表示任务对应工作内容在处理上的表示任务对应工作内容在处理上的优先程度优先程度优先级越高,表明任务越需要得到优先处理优先级越高,表明任务越需要得到优先处理飞行器中处理稳定性控制的任务,就需要具有较飞行器中处理稳定性控制的任务,就需要具有较高的优先级,一旦执行条件得到满足,应及时得高的优先级,一旦执行条件得到满足,应及时得到执行到执行任务的优先级分为任务的优先级分为静态优先级静态优先级和和动态优先级动态优先级。静态优先级:任务的优先级被确定后,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 Chapter5 任务 管理 调度
限制150内