嵌入式系统-Chapter5-任务管理与调度ppt课件_第1页
嵌入式系统-Chapter5-任务管理与调度ppt课件_第2页
嵌入式系统-Chapter5-任务管理与调度ppt课件_第3页
嵌入式系统-Chapter5-任务管理与调度ppt课件_第4页
嵌入式系统-Chapter5-任务管理与调度ppt课件_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心嵌入式系统及运用嵌入式系统及运用电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第五章第五章义务管理与调度义务管理与调度电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心主要内容主要内容 义务义务 义务管理义务管理 义务调度义务调度 优先级反转优先级反转电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心High Priority TaskLow Priority TaskTaskTaskTaskTaskTaskTaskEventEventEach TaskInfinite LoopImportance电

2、子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心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); /Creat

3、e 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)

4、; 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心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); OSTask

5、Suspend(10); /Suspend yourself 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心采用多义务的益处:采用多义务的益处:义务的规模较小义务的规模较小每个义务更容易编码和调试,其质量也更容每个义务更容易编码和调试,其质量也更容易得到保证易得到保证不少运用本身就是由多个义务构成的不少运用本身就是由多个义务构成的如一个运用能够需求进展以下义务的处置:如一个运用能够需求进展以下义务的处置:计算、从网络获取数据和刷新显示屏幕计算、从网络获取数据和刷新显示屏幕采用多义务的处置方式是运用问题的一个非采用多义务的处置方式是运用问题的一个非常自然的处理方式常自然的处理方式义

6、务之间具有较高的独立性,耦合性小义务之间具有较高的独立性,耦合性小经过添加新的义务就能方便的扩展系统功能经过添加新的义务就能方便的扩展系统功能实时性强实时性强保证紧急事件得到优先处置成为能够保证紧急事件得到优先处置成为能够电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心 在嵌入式实时系统中在嵌入式实时系统中 义务义务tasktask通常为进程通常为进程processprocess和和线程线程threadthread的统称的统称 义务是调度的根本单位义务是调度的根本单位 进程最初由进程最初由MulticsMultics的设计者在的设计者在6060年代提年代提出来的,主要包括以下内容:

7、出来的,主要包括以下内容: 一个正在执行的程序;一个正在执行的程序; 计算机中正在运转的程序的一个实例;计算机中正在运转的程序的一个实例; 可以分配给处置器,并由处置器执行的可以分配给处置器,并由处置器执行的一个实体;一个实体; 由一个顺序的执行线程、一个当前形状由一个顺序的执行线程、一个当前形状和一组相关的系统资源所描写的活动单和一组相关的系统资源所描写的活动单元。元。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心进程由代码、数据、堆栈和进程控制块构成。进程由代码、数据、堆栈和进程控制块构成。进程控制块包含了操作系统用来控制进程所进程控制块包含了操作系统用来控制进程所需求的信息

8、:需求的信息:进程形状进程形状CPUCPU存放器存放器调度信息调度信息内存管理信息内存管理信息I/OI/O形状信息等形状信息等早期的进程,包含了以下两个方面的内容:早期的进程,包含了以下两个方面的内容: 资源。进程是资源分配的根本单位,一个进资源。进程是资源分配的根本单位,一个进程包括一个保管进程映像的虚拟地址空间、程包括一个保管进程映像的虚拟地址空间、主存、主存、I/OI/O设备和文件等资源。设备和文件等资源。调度执行。进程作为操作系统的调度实体,调度执行。进程作为操作系统的调度实体,是调度的根本单位。是调度的根本单位。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心 随着操作系

9、统的开展,进程所包含的两随着操作系统的开展,进程所包含的两个方面的内容逐渐被分开:个方面的内容逐渐被分开: 轻量级进程或线程:调度执行的单位轻量级进程或线程:调度执行的单位 进程:资源分配的单位进程:资源分配的单位 线程是进程内部一个相对独立的控制流,线程是进程内部一个相对独立的控制流,由线程上下文和需求执行的一段程序指由线程上下文和需求执行的一段程序指令构成令构成 在进程中,一切线程共享该进程的形状在进程中,一切线程共享该进程的形状和资源,可以访问一样的数据和资源,可以访问一样的数据电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心 运用线程的优势:运用线程的优势: 创建:在一个已

10、有进程中创建一个新线程比创建创建:在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;一个全新的进程所需的时间开销少; 终止:终止一个线程比终止一个进程所破费的时终止:终止一个线程比终止一个进程所破费的时间少;间少; 切换:线程切换比进程切换所破费的时间少;切换:线程切换比进程切换所破费的时间少; 通讯:使同一进程内部不同线程之间的通讯效率通讯:使同一进程内部不同线程之间的通讯效率得到显著提高。得到显著提高。 在大多数操作系统中,不同进程之间的通讯需求在大多数操作系统中,不同进程之间的通讯需求内核的干涉,而同一进程内部不同线程之间那么内核的干涉,而同一进程内部不同线程之间那么可

11、直接通讯。可直接通讯。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心 引入线程的概念后,可把进程和线程的引入线程的概念后,可把进程和线程的运用分为以下几种模型:运用分为以下几种模型: 单进程单进程/ /单线程模型如单线程模型如MS-DOSMS-DOS:整个:整个系统只需一个进程、一个线程系统只需一个进程、一个线程 单进程单进程/ /多线程模型:在单进程多线程模型:在单进程/ /多线程多线程模型中,整个系统有一个进程、多个线模型中,整个系统有一个进程、多个线程程 多进程多进程/ /单线程模型如传统的单线程模型如传统的UNIXUNIX:在多进程在多进程/ /单线程模型中,整个系统有

12、多单线程模型中,整个系统有多个进程,每个进程只需一个线程个进程,每个进程只需一个线程 多进程多进程/ /多线程模型如多线程模型如Windows NTWindows NT、SolarisSolaris、MachMach等:在多进程等:在多进程/ /多线程多线程模型中,系统有多个进程,每个进程又模型中,系统有多个进程,每个进程又可包含多个线程可包含多个线程 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心单进程单进程/ /单线程模型单线程模型单进程单进程/ /多线程模型多线程模型多进程多进程/ /多线程模型多线程模型多进程多进程/ /单线程模型单线程模型电子科技大学嵌入式软件工程中心电

13、子科技大学嵌入式软件工程中心 大多数嵌入式实时内核:单进程大多数嵌入式实时内核:单进程/ /多线程多线程模型,或简单地称为义务模型模型,或简单地称为义务模型 把整个运用当作一个没有定义的进程来把整个运用当作一个没有定义的进程来对待;对待; 运用那么被划分为多个义务的方式来进运用那么被划分为多个义务的方式来进展处置。展处置。 适用于实时性要求较高的、相对简单的适用于实时性要求较高的、相对简单的运用运用 也有一些嵌入式实时操作系统采用了多也有一些嵌入式实时操作系统采用了多进程进程/ /多线程模型:多线程模型: 系统中包含多个进程,每个进程对应又系统中包含多个进程,每个进程对应又包含多个线程包含多个

14、线程 适宜于处置复杂的运用适宜于处置复杂的运用电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第一节第一节任任 务务 义务的定义及其主要特性义务的定义及其主要特性义务的内容义务的内容义务的分类义务的分类义务参数义务参数电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的定义及其主要特性义务的定义及其主要特性 义务是一个具有独立功能的无限循环的程序段的义务是一个具有独立功能的无限循环的程序段的一次运转活动,是实时内核调度的单位,具有以一次运转活动,是实时内核调度的单位,具有以下特性:下特性: 动态性:义务形状是不断变化的。动态性:义务形状是不断变化的。 普通分为就绪态、

15、运转态和等待态。普通分为就绪态、运转态和等待态。 在多义务系统中,义务的形状将随着系统的需求在多义务系统中,义务的形状将随着系统的需求不断进展变化。不断进展变化。 并行性:并行性: 系统中同时存在多个义务,这些义务在宏观上是系统中同时存在多个义务,这些义务在宏观上是同时运转的。同时运转的。 异步独立性:异步独立性: 每个义务各自按相互独立的不可预知的速度运转,每个义务各自按相互独立的不可预知的速度运转,走走停停。走走停停。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的内容义务的内容 义务主要包含以下内容:义务主要包含以下内容: 代码:一段可执行的程序代码:一段可执行的程序

16、 数据:程序所需求的相关数据变量、任数据:程序所需求的相关数据变量、任务空间、缓冲区等务空间、缓冲区等 堆栈堆栈 程序执行的上下文环境程序执行的上下文环境电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的内容义务的内容 义务通常包含一个具有无限循环的程序义务通常包含一个具有无限循环的程序/*ioTask implements data obtaining and handling continuously*/void ioTask(void)int data; initial();/*The following sentences get data and handle dat

17、a 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); OST

18、imeDly(); 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 *

19、n, OSTime); OSTimeDly(1); void TestTask4(void *pdata) while (1) printf(%4u: + Test Task 10 +n, OSTime); OSTaskSuspend(10); /Suspend yourself 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的内容义务的内容 义务与程序的区别:义务与程序的区别: 义务能真实地描画任务内容的并发性,义务能真实地描画任务内容的并发性,而程序不能;而程序不能; 程序是义务的组成部分程序是义务的组成部分 除程序外,义务还包括数据、堆栈及其除程序外,义务还包括数据、堆

20、栈及其上下文环境等内容;上下文环境等内容; 程序是静态的,义务是动态的;程序是静态的,义务是动态的; 义务有生命周期,有诞生、有消亡,是义务有生命周期,有诞生、有消亡,是短暂的;而程序是相对长久的;短暂的;而程序是相对长久的; 一个程序可对应多个义务,反之亦然;一个程序可对应多个义务,反之亦然; 义务具有创建其他义务的功能,而程序义务具有创建其他义务的功能,而程序没有。没有。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的内容义务的内容 义务上下文环境义务上下文环境contextcontext 包括了实时内核管理义务、以及处置器执包括了实时内核管理义务、以及处置器执行义务所

21、需求的一切信息。行义务所需求的一切信息。 义务优先级义务优先级 义务的形状等实时内核所需求的信息义务的形状等实时内核所需求的信息 以及处置器的各种存放器的内容以及处置器的各种存放器的内容hardware contexthardware context:程序计数器、堆:程序计数器、堆栈指针、通用存放器等的内容栈指针、通用存放器等的内容 义务的上下文环境经过义务控制块义务的上下文环境经过义务控制块Task Task Control BlockControl Block,TCBTCB来表达。来表达。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务义务1 1义务义务2 2义务义务3 3

22、内核内核内核代码内核代码内核数据内核数据栈栈数据数据义务义务控制块控制块代码代码栈栈数据数据义务义务控制块控制块代码代码栈栈数据数据义务义务控制块控制块代码代码义务义务1 1义务义务2 2义务义务3 3电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的分类义务的分类 按照到达情况的可预测性,义务可以划分按照到达情况的可预测性,义务可以划分为:为: 周期义务周期义务periodic taskperiodic task 非周期义务非周期义务 按照重要程度,可分为:按照重要程度,可分为: 关键义务关键义务critical taskcritical task 非关键义务非关键义务non

23、critical tasknoncritical task电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的分类义务的分类 周期义务与非周期义务周期义务与非周期义务 周期义务每隔一个固定的时间间隔就会周期义务每隔一个固定的时间间隔就会执行一次。执行一次。 举例:飞行器能够需求每隔举例:飞行器能够需求每隔100ms100ms获得一获得一次关于飞行器的速度、高度和姿态数据,次关于飞行器的速度、高度和姿态数据,控制传感器获取这些数据就需求经过周控制传感器获取这些数据就需求经过周期义务来进展。期义务来进展。 非周期义务执行的间隔时间那么为不确非周期义务执行的间隔时间那么为不确定的。定的

24、。 举例:挪动通讯设备中的通讯义务,该举例:挪动通讯设备中的通讯义务,该义务只需在需求进展通讯的情况下才会义务只需在需求进展通讯的情况下才会得到执行。得到执行。 非周期义务分为:非周期义务分为: sporadic tasksporadic task:有最小到达间隔时间限:有最小到达间隔时间限制制 aperiodic taskaperiodic task:没有到达时间限制:没有到达时间限制电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务的分类义务的分类 关键义务与非关键义务关键义务与非关键义务 关键义务:关键义务: 为需求得到及时执行的义务,否那么将出为需求得到及时执行的义务,否

25、那么将出现灾难性的后果现灾难性的后果 举例:飞行器中用于处置生命支持系统和举例:飞行器中用于处置生命支持系统和稳定性控制系统的义务稳定性控制系统的义务 非关键义务:非关键义务: 假设没有得到及时执行,那么不会产生严假设没有得到及时执行,那么不会产生严重后果重后果 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务参数义务参数 义务参数:义务参数: 优先级优先级prioritypriority 周期周期periodperiod 计算时间计算时间computation timecomputation time 就绪时间就绪时间ready timeready time 截止时间截止时间

26、deadlinedeadline电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务参数义务参数 义务的优先级义务的优先级 表示义务对应任务内容在处置上的优先程表示义务对应任务内容在处置上的优先程度度 优先级越高,阐明义务越需求得到优先处优先级越高,阐明义务越需求得到优先处置置 飞行器中处置稳定性控制的义务,就需求飞行器中处置稳定性控制的义务,就需求具有较高的优先级,一旦执行条件得到满具有较高的优先级,一旦执行条件得到满足,应及时得到执行足,应及时得到执行 义务的优先级分为静态优先级和动态优先义务的优先级分为静态优先级和动态优先级。级。 静态优先级:义务的优先级被确定后,在静态优先

27、级:义务的优先级被确定后,在系统运转过程中将不再发生变化;系统运转过程中将不再发生变化; 动态优先级:系统运转过程中,义务的优动态优先级:系统运转过程中,义务的优先级是可以动态变化的。先级是可以动态变化的。 前往前往电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务参数义务参数 周期周期 周期义务所具有的参数,表示义务周期性周期义务所具有的参数,表示义务周期性执行的间隔时间执行的间隔时间 义务的计算时间义务的计算时间 义务在特定硬件环境下被完好执行所需求义务在特定硬件环境下被完好执行所需求的时间,也被称为是义务的执行时间的时间,也被称为是义务的执行时间execution time

28、execution time。 由于义务每次执行的软件环境的差别性,由于义务每次执行的软件环境的差别性,导致义务在各次详细执行过程中的计算时导致义务在各次详细执行过程中的计算时间各有不同。间各有不同。 通常用最坏情况下的执行时间通常用最坏情况下的执行时间worst worst case timecase time或是需求的最长执行时间来表或是需求的最长执行时间来表示,也可用统计时间示,也可用统计时间statistical timestatistical time来表示。来表示。 前往前往电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务参数义务参数 义务的就绪时间义务的就绪时间

29、义务具备了在处置器上被执行所需求条件义务具备了在处置器上被执行所需求条件时的时间。时的时间。 义务的截止时间义务的截止时间 意味着义务需求在该时间到来之前被执行意味着义务需求在该时间到来之前被执行完成。完成。 截止时间可以经过绝对截止时间截止时间可以经过绝对截止时间absolute deadlineabsolute deadline和相对截止时间和相对截止时间relative timerelative time两种方式来表示两种方式来表示 相对截止时间为义务的绝对截止时间减去相对截止时间为义务的绝对截止时间减去义务的就绪时间。义务的就绪时间。 截止时间可以分为强截止时间截止时间可以分为强截止时

30、间hard hard deadlinedeadline和弱截止时间和弱截止时间soft deadlinesoft deadline两种情况:两种情况: 具有强截止时间的义务即为关键义务,假具有强截止时间的义务即为关键义务,假设截止时间不能得到满足,就会出现严重设截止时间不能得到满足,就会出现严重的后果。的后果。 拥有关键义务的实时系统又被称为强实时拥有关键义务的实时系统又被称为强实时hard real-timehard real-time系统,否那么称为弱系统,否那么称为弱实时实时soft real-timesoft real-time系统。系统。 电子科技大学嵌入式软件工程中心电子科技大学嵌

31、入式软件工程中心第二节第二节义务管理义务管理义务形状与变化义务形状与变化空闲义务空闲义务义务控制块义务控制块义务切换义务切换义务队列义务队列优先级位图算法优先级位图算法义务管理机制义务管理机制电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务形状与变化义务形状与变化 义务拥有的资源情况是不断变化的,导致义务拥有的资源情况是不断变化的,导致义务形状也表现出不断变化的特性。义务形状也表现出不断变化的特性。 不同的实时内核实现方式对义务形状的定不同的实时内核实现方式对义务形状的定义不尽一样,但是都可以概括为三种根本义不尽一样,但是都可以概括为三种根本的形状:的形状: 等待等待waiti

32、ngwaiting:义务在等待某个事件的:义务在等待某个事件的发生;发生; 就绪就绪readyready: 义务等待获得处置器资义务等待获得处置器资源;源; 执行执行runningrunning:义务获得处置器资源,:义务获得处置器资源,所包含的代码内容正在被执行。所包含的代码内容正在被执行。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务形状与变化义务形状与变化 在单处置器系统中:在单处置器系统中: 任何时候都只需一个义务在任何时候都只需一个义务在CPUCPU中执行中执行 假设没有任何事情可做,就运转空闲义务执行假设没有任何事情可做,就运转空闲义务执行空操作空操作 任何一个

33、可以执行的义务都必需处于就绪形状任何一个可以执行的义务都必需处于就绪形状 调度程序从义务的就绪队列中选择下一个需求调度程序从义务的就绪队列中选择下一个需求执行的义务。执行的义务。 处于就绪形状的义务拥有除处于就绪形状的义务拥有除CPUCPU以外的其他一切以外的其他一切需求的资源。需求的资源。 义务还能够处于等待形状义务还能够处于等待形状 假设义务在需求等待假设义务在需求等待I/OI/O设备或其他义务提供的设备或其他义务提供的数据,而数据又还没有到达该义务的情况下,数据,而数据又还没有到达该义务的情况下,就处于等待形状就处于等待形状电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务

34、形状与变化义务形状与变化 义务会在不同的形状之间进展转换,即义务会在不同的形状之间进展转换,即义务形状的变化义务形状的变化就绪态就绪态运转态运转态等待态等待态获得获得CPUCPU被高优先级被高优先级义务抢占或义务抢占或超时超时获得资源获得资源需求需求资源资源电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务义务1 1义务义务2 2义务义务3 3调度调度程序程序0 05 5101015152020252530303535404045455050运转运转等待等待就绪就绪三个义务进展形状转换的过程三个义务进展形状转换的过程 包含三个义务和一个调度程序。调度程序用来确定下一个包含三个义务

35、和一个调度程序。调度程序用来确定下一个需求投入运转的义务,因此调度程序本身也需求占用一定需求投入运转的义务,因此调度程序本身也需求占用一定的处置时间。的处置时间。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心OSMBoxPOST()OSQPost()OSQPostFront()OSSemPost()OSTASKResume()OSTimeDlyResume()OSTimeTick()OSMBoxPend()OSQPend()OSSemPend()OSTaskSuspend()OSTimeDly()OSTimeDlyHMSM()InterruptOSIntExit()OSStar

36、t()OSIntExit()OS_TASK_SW()OSTaskDel()OSTaskCreate()OSTaskCreateExt()OSTaskDel()Task is PreemptedOSTaskDel()WAITINGDORMANTREADYRUNNINGISR电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心空闲义务空闲义务 Which is executed when none of the Which is executed when none of the other tasks is ready to run. other tasks is ready to ru

37、n. The idle task is always set to the The idle task is always set to the lowest priority. lowest priority. The idle task can never be deleted by The idle task can never be deleted by application software. application software. Idle Task is created by OSIdle Task is created by OS电子科技大学嵌入式软件工程中心电子科技大学

38、嵌入式软件工程中心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(); 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务控制块义务控制块 义务管理是经过对义务控制块义务管理是经过对义务控制块Task Control Task

39、 Control BlockBlock,TCBTCB的操作来实现的。的操作来实现的。 义务控制块是包含义务相关信息的数据构造义务控制块是包含义务相关信息的数据构造 包含了义务执行过程中所需求的一切信息。包含了义务执行过程中所需求的一切信息。 义务控制块大都包括以下信息:义务控制块大都包括以下信息: 义务的名字义务的名字 义务执行的起始地址义务执行的起始地址 义务的优先级义务的优先级 义务的形状义务的形状 义务的硬件上下文堆栈指针、义务的硬件上下文堆栈指针、PCPC和存放器等和存放器等) ) 义务的队列指针等内容义务的队列指针等内容 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心t

40、ask nametask IDtask statustask prioritytask contextregisters and flags of CPU电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务控制块义务控制块 为节约内存,义务数量通常需求进展预先为节约内存,义务数量通常需求进展预先配置配置 按照配置的义务数量初始化义务控制块,按照配置的义务数量初始化义务控制块,一个义务对应一个初始的义务控制块,构一个义务对应一个初始的义务控制块,构成一个空闲义务控制块链。成一个空闲义务控制块链。 在义务创建时,实时内核从空闲义务控制在义务创建时,实时内核从空闲义务控制块链中为义务分配

41、一个义务控制块。块链中为义务分配一个义务控制块。 随后对义务的操作,都是基于对应的义务随后对义务的操作,都是基于对应的义务控制块来进展的。控制块来进展的。 当义务被删除后,对应的义务控制块又会当义务被删除后,对应的义务控制块又会被实时内核回收到空闲义务控制块链。被实时内核回收到空闲义务控制块链。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心typedef struct os_tcb OS_STK *OSTCBStkPtr; /* Pointer to current top of stack*/#if OS_TASK_CREATE_EXT_EN 0 void *OSTCBExt

42、Ptr; /* 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) */#

43、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*/电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心#if (OS_Q_EN0)&(OS_MAX_QS0)|(OS_MBOX_EN0)|(OS_SEM_EN0)|(OS_MUTEX_EN0) OS_EVENT *OSTCBEventPtr; /* Pointer to event control b

44、lock */#endif#if (OS_Q_EN 0) & (OS_MAX_QS 0) | (OS_MBOX_EN 0) void *OSTCBMsg; /* Message received from OSMboxPost() or OSQPost()*/#endif电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心#if (OS_VERSION = 251) & (OS_FLAG_EN 0) & (OS_MAX_FLAGS 0)#if OS_TASK_DEL_EN 0 OS_FLAG_NODE *OSTCBFlagNode; /* Pointer to

45、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) */电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中

46、心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_TAS

47、K_DEL_EN 0 BOOLEAN OSTCBDelReq; /* Indicates whether a task needs to delete itself */#endif OS_TCB;电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换 义务切换义务切换context switchingcontext switching 保管当前义务的上下文,并恢复需求执行保管当前义务的上下文,并恢复需求执行的义务的上下文的过程。的义务的上下文的过程。 当发生义务切换时:当发生义务切换时: 当前正在运转的义务的上下文就需求经过当前正在运转的义务的上下文就需求经过该义务的义

48、务控制块保管起来;该义务的义务控制块保管起来; 把需求投入运转的义务的上下文从对应的把需求投入运转的义务的上下文从对应的义务控制块中恢复出来。义务控制块中恢复出来。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务义务1 1义务义务2 2义务义务3 3调度调度程序程序0 05 5101015152020252530303535404045455050运转运转等待等待就绪就绪在时辰在时辰8 8即发生了义务切换,义务即发生了义务切换,义务1 1的上下文需求保管到义务的上下文需求保管到义务1 1的义务的义务控制块中去。控制块中去。经过调度程序的处置,在时辰经过调度程序的处置,在时辰10

49、10义务义务2 2投入运转,需求把义务投入运转,需求把义务2 2的义务的义务控制块中关于上下文的内容恢复到控制块中关于上下文的内容恢复到CPUCPU的存放器中。的存放器中。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务义务1 1义务义务2 2实时内核调度程序实时内核调度程序保管义务保管义务1 1的上下文到的上下文到TCB1TCB1从从TCB2TCB2恢复义务恢复义务2 2的上下文的上下文保管义务保管义务2 2的上下文到的上下文到TCB2TCB2从从TCB1TCB1恢复义务恢复义务1 1的上下文的上下文时间时间义务义务1 1执行一段时间后,由于某种缘由,需求进展义务切换,进入

50、实时执行一段时间后,由于某种缘由,需求进展义务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内容保管到义务内核的调度程序。调度程序首先把当前的上下文内容保管到义务1 1的义的义务控制块务控制块TCB1TCB1中,然后又把义务中,然后又把义务2 2的上下文从的上下文从TCB2TCB2中恢复到中恢复到CPUCPU存放器,存放器,随后义务随后义务2 2得到执行。义务得到执行。义务2 2执行一段时间后,由于某种缘由,需求进展执行一段时间后,由于某种缘由,需求进展义务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内义务切换,进入实时内核的调度程序。调度程序首先把当前的上下文内容保管到

51、义务容保管到义务2 2的义务控制块的义务控制块TCB2TCB2中,然后又把义务中,然后又把义务1 1的上下文从的上下文从TCB1TCB1中中恢复到恢复到CPUCPU存放器,随后义务存放器,随后义务1 1得到执行。得到执行。 电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换义务切换将导致义务形状发生变化:义务切换将导致义务形状发生变化:当前正在运转的义务将由运转形状变为就绪或当前正在运转的义务将由运转形状变为就绪或是等待形状;是等待形状;需求投入运转的义务那么由就绪形状变为运转需求投入运转的义务那么由就绪形状变为运转形状。形状。电子科技大学嵌入式软件工程中心电子科技大

52、学嵌入式软件工程中心义务切换义务切换 义义务务切切换换根根本本步步骤骤 1 保管义务上下文环境保管义务上下文环境2 更新当前运转义务的控制块内容,将更新当前运转义务的控制块内容,将其形状改为就绪或等待形状其形状改为就绪或等待形状3 将义务控制块移到相应队列就绪队将义务控制块移到相应队列就绪队列或等待队列列或等待队列4 选择另一个义务进展执行选择另一个义务进展执行(调度调度)5 改动需投入运转义务的控制块内容,改动需投入运转义务的控制块内容,将其形状变为运转形状将其形状变为运转形状6 恢复需投入运转义务的上下文环境恢复需投入运转义务的上下文环境电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件

53、工程中心义务切换义务切换义务切换义务切换时机时机中断、自陷中断、自陷运转义务因缺乏资源而被运转义务因缺乏资源而被阻塞阻塞时间片轮转调度时时间片轮转调度时高优先级义务处于就绪时高优先级义务处于就绪时退出退出电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换 中断、自陷中断、自陷 如当如当I/OI/O中断发生的时候中断发生的时候 假设假设I/OI/O活动是一个或多个义务正在等待活动是一个或多个义务正在等待的事件,内核将把相应的处于等待形状的的事件,内核将把相应的处于等待形状的义务转换为就绪形状义务转换为就绪形状 同时,内核还将确定能否继续执行当前处同时,内核还将确定能否继

54、续执行当前处于运转形状的义务,或是用高优先级的就于运转形状的义务,或是用高优先级的就绪义务抢占该义务绪义务抢占该义务 自陷自陷 由于执行义务中当前指令所引起,将导致由于执行义务中当前指令所引起,将导致实时内核处置相应的错误或异常事件,并实时内核处置相应的错误或异常事件,并根据事件类型,确定能否进展义务的切换根据事件类型,确定能否进展义务的切换前往前往电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换运转义务因缺乏资源而被阻塞运转义务因缺乏资源而被阻塞如,义务执行过程中进展如,义务执行过程中进展I/O操作时如操作时如翻开文件,假设此前该文件已被其他翻开文件,假设此前该文

55、件已被其他义务翻开,将导致当前义务处于等待形义务翻开,将导致当前义务处于等待形状,而不能继续执行状,而不能继续执行前往前往电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换时间片轮转调度时时间片轮转调度时内核将在时钟中断处置程序中确定当前内核将在时钟中断处置程序中确定当前正在运转的义务的执行时间能否曾经超正在运转的义务的执行时间能否曾经超越了设定的时间片;越了设定的时间片;假设超越了时间片,实时内核将停顿当假设超越了时间片,实时内核将停顿当前义务的运转,把当前义务的形状变为前义务的运转,把当前义务的形状变为就绪形状,并把另一个义务投入运转就绪形状,并把另一个义务投入运

56、转前往前往电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心义务切换义务切换高优先级义务处于就绪时高优先级义务处于就绪时假设采用基于优先级的抢占式调度算法,假设采用基于优先级的抢占式调度算法,将导致当前义务停顿运转,使更高优先将导致当前义务停顿运转,使更高优先级的义务处于运转形状级的义务处于运转形状电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心void OS_Sched (void) INT8U y; OS_ENTER_CRITICAL(); if (OSIntNesting = 0) & (OSLockNesting = 0) /* Sched. only i

57、f all ISRs done & not locked */ y = OSUnMapTblOSRdyGrp; /*Get pointer to HPT ready*/ OSPrioHighRdy = (INT8U)(y OSTCBStkPtr = SP; OSTCBCur = OSTCBHighRdy; SP = OSTCBHighRdy-OSTCBStkPtr; POP R4, R3, R2 and R1 from the new stack; Execute a return from interrupt instruction;电子科技大学嵌入式软件工程中心电子科技大学嵌入式软

58、件工程中心CPULOW MEMORYHIGH MEMORYLOW MEMORYHIGH MEMORYOSTCBCurOSTCBHighRdyStack GrowthspR1R2R3R4PCPSW(1)(5)(4)(2)(3)OS_TCBOS_TCBLow Priority TaskHigh Priority TaskR3R4R2R1PCPSW电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心CPULOW MEMORYHIGH MEMORYLOW MEMORYHIGH MEMORYOSTCBCurOSTCBHighRdyStack GrowthspR1R2R3R4PCPSW(1)(3)

59、OS_TCBOS_TCBLow Priority TaskHigh Priority TaskPSWPCR1R2R3R4R4R3R2R1PCPSW(2)(3)电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心CPULOW MEMORYHIGH MEMORYLOW MEMORYHIGH MEMORYOSTCBHighRdyspR1R2R3R4PCPSWOS_TCBOS_TCBLow Priority TaskHigh Priority TaskPSWPCR1R2R3R4R4R3R2R1PCPSWOSTCBCur(1)(2)(3)(4)(4)Stack Growth电子科技大学嵌入式软件

60、工程中心电子科技大学嵌入式软件工程中心LOW MEMORYHIGH MEMORYSWSEG_taskOFF_taskAXCXDXBXSPBPSIDIESDSLOW MEMORYHIGH MEMORYSWSEG_taskOFF_taskAXCXDXBXSPBPSIDIESDSSWSSSPAXBXDXDSESSIDIBPCSIPCXOS_TCBOS_TCBOSTCBCurOSTCBHighRdyOSTCBCur-OSTCBStkPtr80 x86 CPU(Real Mode)OSTCBHighRdy-OSTCBStkPtrPUSH ESPUSH DSPUSHAOS_TASK_SW() (INT 128 )POP DSPOP ESPOPAIRETStack Growth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论