嵌入式实时操作系统的任务管理及任务调度

合集下载

控制系统中的实时操作系统与嵌入式系统

控制系统中的实时操作系统与嵌入式系统

控制系统中的实时操作系统与嵌入式系统在控制系统中,实时操作系统(RTOS)和嵌入式系统(Embedded System)起着至关重要的作用。

它们通过协同工作,为各种应用提供高效的控制和管理。

本文将探讨实时操作系统和嵌入式系统的特点、功能以及它们在控制系统中的应用。

一、实时操作系统的特点和功能实时操作系统是一种专用的操作系统,其最主要的特点是能够满足严格的时间约束和实时要求。

相比于一般的操作系统,实时操作系统需要具备以下几个关键特点:1. 高实时性:实时操作系统需要能够及时响应外部事件的发生,以满足对系统实时性的要求。

它能够在给定的时间范围内完成任务,并保证任务的及时性。

2. 可预测性:实时操作系统需要能够在确定的时间范围内执行任务,并提供可预测的性能。

这对于需要对事件进行精确控制的应用非常重要,如航空航天、医疗设备等。

3. 可靠性:实时操作系统需要具备高度的可靠性,能够保证任务的正确执行并防止系统崩溃或死锁的发生。

对于一些关键应用,如核能、交通信号灯等,系统的可靠性尤为重要。

4. 多任务处理:实时操作系统能够同时处理多个任务,确保任务之间的优先级和时序关系的正确性。

它能够根据不同的任务要求,分配系统资源,实现任务的协调和调度。

5. 低延迟:实时操作系统需要具备较低的延迟,以保证任务的实时性和响应性。

它能够快速地处理任务请求,并及时地提供响应。

二、嵌入式系统的特点和功能嵌入式系统是一种集成度高、功耗低、功能强大的特殊计算机系统。

它通常用于特定的应用领域,并且嵌入到其他设备中以实现特定的功能。

嵌入式系统具备以下几个关键特点:1. 紧凑性:嵌入式系统通常具有小体积、低成本和低功耗的特点。

它需要满足在有限的硬件资源和空间条件下实现功能的需求。

2. 可靠性:嵌入式系统需要具备高可靠性,能够在恶劣的环境条件下正常工作。

它需要具备抗干扰能力,以防止外部因素对系统的影响。

3. 实时性:嵌入式系统通常需要满足实时性的要求,能够即时响应外部事件。

rtthread 任务调度原理

rtthread 任务调度原理

rtthread 任务调度原理(原创版)目录1.RT-Thread 简介2.任务调度原理3.RT-Thread 的任务管理4.RT-Thread 的任务调度方式5.总结正文RT-Thread 是我国自主研发的一款面向物联网和嵌入式系统的实时操作系统。

其全称是 Real-Time Thread,意指实时线程。

RT-Thread 具有小巧轻量、可扩展性强、实时性能优异等特点,广泛应用于各种物联网设备和嵌入式系统中。

一、RT-Thread 简介RT-Thread 操作系统的底层是基于线程调度的,它将任务调度作为核心功能,以满足物联网设备对实时性能的高要求。

在 RT-Thread 中,任务调度原理是基于优先级和时间片轮转的。

通过这种原理,RT-Thread 可以实现对多个任务的公平调度和高效运行。

二、任务调度原理RT-Thread 的任务调度原理主要包括两个方面:任务优先级和时间片轮转。

1.任务优先级:RT-Thread 中的任务分为多个优先级,从高到低依次为:高优先级、中优先级和低优先级。

优先级高的任务会优先被执行,优先级相同的任务按照先进先出(FIFO)的顺序执行。

2.时间片轮转:RT-Thread 中的任务执行时间是有限的,每个任务都有一个时间片。

当时间片用完时,任务会被挂起,下一个优先级较高的任务会立即执行。

任务调度器会根据任务的优先级和时间片轮转来调度任务,以实现多个任务的公平和高效执行。

三、RT-Thread 的任务管理RT-Thread 的任务管理主要包括任务的创建、删除、挂起和恢复等操作。

1.任务创建:在 RT-Thread 中,开发者可以通过调用特定的 API 函数创建任务。

创建任务时,需要指定任务的优先级、执行函数、任务参数等。

2.任务删除:当任务完成或不再需要时,可以通过调用 API 函数删除任务。

3.任务挂起:当任务的时间片用完时,任务会被挂起。

挂起后的任务会从就绪队列中移除,等待下一个时间片到来时再执行。

基于嵌入式实时操作系统的程序设计

基于嵌入式实时操作系统的程序设计

基于嵌入式实时操作系统的程序设计引言嵌入式系统在现代科技中扮演着重要的角色,而嵌入式实时操作系统(RTOS)则是嵌入式系统中一个关键的组成部分。

嵌入式实时操作系统的程序设计对于确保系统稳定性和可靠性至关重要。

本文将就嵌入式实时操作系统的程序设计进行全面、详细、完整且深入的探讨。

二级标题1:嵌入式实时操作系统概述嵌入式实时操作系统是一种特殊类型的操作系统,其目标是实时响应和控制嵌入式系统的任务。

它通常针对资源有限的系统设计,如传感器、手机和汽车等。

嵌入式实时操作系统需要满足以下三个关键特性: - 实时性:嵌入式实时操作系统必须能够满足严格的时间要求,并保证任务在规定的时间内完成。

- 可靠性:嵌入式实时操作系统必须具备高度的可靠性,能够应对各种异常情况并保持系统稳定。

- 高效性:嵌入式实时操作系统需要高效地利用系统资源,以最大程度地提高系统性能。

二级标题2:嵌入式实时操作系统的任务调度嵌入式实时操作系统通过任务调度来管理系统中的各个任务。

任务调度的目标是按照一定的策略和优先级来合理地分配系统资源和控制任务执行。

下面是常用的任务调度算法: 1. 先来先服务(FCFS)调度算法:按照任务到达的顺序进行调度,适用于任务长度相同时。

2. 最短作业优先(SJF)调度算法:按照任务所需的执行时间进行调度,适用于任务执行时间差异较大的情况。

3. 优先级调度算法:根据任务的优先级来决定任务的执行顺序,适用于对任务执行顺序有较高要求的情况。

4. 最短剩余时间优先(SRTF)调度算法:在SJF算法的基础上,根据任务剩余执行时间来进行调度,适用于任务的执行时间可以动态变化的情况。

二级标题3:嵌入式实时操作系统的任务通信在嵌入式系统中,各个任务之间需要进行通信,以便进行数据传输和协调工作。

以下是常用的任务通信机制: 1. 信号量:信号量用于控制对共享资源的访问,通过对信号量进行P(申请资源)和V(释放资源)操作来实现任务的同步和互斥。

freertos管理的优先级范围

freertos管理的优先级范围

FreeRTOS管理的优先级范围一、引言在嵌入式系统开发中,任务调度是一个非常重要的概念。

任务调度器负责根据任务的优先级,按照一定的调度策略来决定任务的执行顺序。

FreeRTOS作为一款流行的实时操作系统,提供了一套完善的任务管理机制。

本文将深入探讨FreeRTOS管理的优先级范围。

二、任务优先级的定义任务优先级是指任务在系统中相对于其他任务的重要性或紧迫性的度量。

在FreeRTOS中,任务优先级是一个整数值,取值范围是从0到configMAX_PRIORITIES-1。

configMAX_PRIORITIES是一个编译时配置的宏,用于指定系统中任务的最大优先级数目。

三、任务优先级的分配任务优先级的分配需要根据实际应用的需求进行合理的规划。

下面是一些常见的分配策略:1. 基于任务的功能和紧迫性根据任务的功能和紧迫性,将任务分配到不同的优先级。

例如,对于一个实时控制任务,可以将其分配到最高优先级,以确保其实时性。

而对于一些低优先级的任务,如数据处理任务,可以将其分配到较低的优先级。

2. 基于任务的执行时间根据任务的执行时间,将任务分配到不同的优先级。

执行时间较长的任务可以分配到较低的优先级,而执行时间较短的任务可以分配到较高的优先级。

这样可以提高系统的响应速度。

3. 基于任务的依赖关系根据任务的依赖关系,将任务分配到不同的优先级。

如果一个任务依赖于另一个任务的结果,那么可以将依赖任务的优先级设置为较高,以确保依赖任务能够及时得到执行。

四、任务优先级的使用任务优先级的使用在FreeRTOS中非常简单。

在创建任务时,可以通过传入一个优先级参数来指定任务的优先级。

例如,使用xTaskCreate函数创建一个任务:xTaskCreate(task_function, "Task Name", configMINIMAL_STACK_SIZE, NULL, priori ty, NULL);其中,priority就是任务的优先级。

嵌入式实时操作系统μCOS原理与实践1

嵌入式实时操作系统μCOS原理与实践1

4、文件管理:
对外存中信息进行管理的文件系统
关于μC/OS-II
•UCOSII 是一个可以基于ROM 运行的、可裁减的 、抢占式、实时多任务内核,具有高度可移植性, 特别适合于微处理器和控制器,是和很多商业操作 系统性能相当的实时操作系统(RTOS)。为了提供 最好的移植性能,UCOSII 最大程度上使用ANSI C 语言进行开发,并且已经移植到近40 多种处理器 体系上,涵盖了从8 位到64 位各种CPU(包括DSP) 。
• 事件
两个任务通过事件进行通讯的示意图所示:
注释:任务1 是发信方,任务2 是收信方。任务1 负责把信息发送到 时间上,这项操作叫做发送事件。任务2 通过读取事件操作对事件进 行查询,如果有信息则读取,否则等待。读事件操作叫做请求事件。
事件控制块(ECB)
• 为了把描述事件的数据结构统一起来,UCOSII 使用叫做事件控制 块(ECB)的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息 队列这些事件。事件控制块中包含包括等待任务表在内的所有有关 事件的数据,事件控制块结构体定义如下: • typedef struct { INT8U OSEventType; //事件的类型 INT16U OSEventCnt; //信号量计数器 void *OSEventPtr; //消息或消息队列的指针 INT8U OSEventGrp; //等待事件的任务组 INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//任务等待表 #if OS_EVENT_NAME_EN > 0u INT8U *OSEventName; //事件名 #endif } OS_EVENT;
UCOSII中与任务相关的几个函数
1) 建立任务函数

chap04-任务管理

chap04-任务管理


page
21

当OS_CPU.H 文件中的OS_STK_GROWTH 置 为0 时,用户需要将堆栈的最低内存地址传递给 任务创建函数。
程序清单 堆栈从下往上递增
OS_STK TaskStack[TASK_STACK_SIZE]; OSTaskCreate(task, pdata, &TaskStack[0], prio);
器加1
9
} else { OS_ENTER_CRITICAL(); OSTCBPrioTbl[prio] = (OS_TCB *)0; OS_EXIT_CRITICAL(); }
return (err);
} OS_EXIT_CRITICAL();
return (OS_PRIO_EXIST);
}
page
任务可以在多任务调度开始前建立,也可以在其它 任务的执行过程中被建立。在开始多任务调度(即调用 OSStart())前,用户必须建立至少一个任务。任务不能 由中断服务程序(ISR)来建立。
page
7
程序清单 OSTaskCreate()
的优先级
任务代码的 指针
当任务开始执行时传 分配给任务的堆 栈的栈顶指针 递给任务的参数的指 针
嵌入式实时操作系统 μC/OS-II
2012-12-14
page
1
第4章 任务管理
2012-12-14
page
2
本章所讲的内容:


建立任务;删除任务;
改变任务的优先级;


挂起和恢复任务;
获得有关任务的信息。
2012-12-14
page
3

任务可以是一个无限的循环

嵌入式操作系统_第3章 任务结构、状态、优先级、代码结构、任务控制块及链表、任务堆栈

嵌入式操作系统_第3章 任务结构、状态、优先级、代码结构、任务控制块及链表、任务堆栈
II就是一个能对这些小任务的运 行进行管理和调度的多任务操作 系统。
从应用程序设计的
角度来看, μC/OS-II的任务就 是一个用户编写的 C函数和与之相关 联的一些数据结构
内存
在内存中应该 存有任务的代 码和与该任务 配套的堆栈
任务代码 任务堆栈
而构成的一个实体。
进程的状态
运行态 就绪态 等待态(阻塞态)
程序通过访问它来了解CPU的利用率, 所以这个系统任务OSTaskStat( )叫做 统计任务
任务及的优优先先级权别 用O常明常使O个固O应把计别OSSSS户_数应数用_定_用优任是_CLLL可F用一的OO地O程先务:OGWSWW权 一 表 优 则 低以.程旦优E_μ,E序级,E0HSLCSS,个先表分 示根序被先T中O系T中别因T/_W__1O级级示为 。据中定级P通E统P还此PO,SRSRRS别别任应任义I过T数6_总I使用I2_O_4IOO…L用务,为给P,I务都最字个是用户自-ORO1W把程优则:表I共把了任动S个E的用高优0O_S表任序先意示赋0O最统务赋LT优一,先S,O_示务的级味最_值低计可给WP先个数级L1ER需别着低O,的任的优任以空SIW级数字别TO要的系优E2方务优先务使闲_-S,别字P1越,,数 统先T法级, 用任R自的先_…I越来大每在目中级P,别系的务O动R…-文。可别I来统优。2赋O,,件该供的+说则先如给1共会级果统
任当务控应制用块结程构序的主调要用成员函数OSTaskCreate( )
任务及控任制务块控(O制S_块TC链B)表 t…y创统进任务控这表…pOssIII数具链的表…etNNtNdrr…S建函行务控制个的TTTuue任_会有接任。fcc188Stts任 任 制 认务6UUT一数初从制块任头μ栈务理控tooUr当由按相为务即Kuss控__c个始空块各务部O务务块和ttt制C的*指有制cc进于用应一,相oSObbOOOs/块任化任,个控T_S**SSS控的的管行这户数个故当t针关优OT块OOC链TTTcbC务。务然成制BCCSCSS表系 些提量链这于BTT{BBBI制 身 任理、的先-SCCDPS时这控后员块ntItBBr统任供的表个是lkiayi块 份 务的PNPot任 属级I;,个制用进链t;;rte初务的任。链一re用x///;vt///就 证 是这函块任行入(任任任/;;务 性别//始控任务表些指///指务务务来指个数链务赋到)向相 , 不的 的化制等向务控叫空等的的向来任记函首表的值任后待当优前时块数制做白当 没 能务为当 表一一的前先一空数先获属,务堆录,还个为块空的时状级个任任于 有 被栈前 就些会为取性最控任限态别任务初没系并任身任栈务务标(务是 任 系控状 叫与调 被 一对 后 制顶始有控统把务 份志节控控制务的用创个任再块制拍一务统制态做任块化对创它块证指制块数块的链系建任务把链针个控承函应的建们链。)、任务的块表指堆指任管务针针

嵌入式操作系统_第7章 ucOS-II - 任务的同步互斥通信

嵌入式操作系统_第7章 ucOS-II - 任务的同步互斥通信
释印做畅与系是黄宋黄时缓态之放机,宏丹宏地人和依(冲,后:丹:同们谐靠后的那别:腿缓区只,步依、任,使么走我是冲得有才啊自你运靠工务系用也!己自区到等应行通作之统权会的己信 顺 间,为有任该腿的才。造,,来 利 的而空效务通能如成我但互 的 良不A时数知爱手向唤果极相 做 好致走是)据任缓醒这大就咱沟 法 通导,而务走俩通 一 信致冲任两的,的B任应, 样 来灾区去务个混你呀务该管!从 , 保难写取B任乱不B使处而计证性入因数务着。使算任的其于!了据不不人机务后获等数。能这际系与果得待据从样关统任。打状
IO)N;SO当就T_函8SE任绪USV数e务状EmON等P态S的TeS待n。e*返dmp的允如ePv回o时许果esnt间用值t参(/超参数/为信过数ti号已mttii量emmo创eeu的ootu被u建指tt时设设针的可置置信以一为结个0号,束等量则等待表的待时明状间指任态的针务而限。的进制入,等
待时间为无限长。 调用函数成功后,函数返回值为OS_ON_ERR,否则会根据具体 错误返回OS_ERR_EVENT_TYPE、OS_SEM_OVF。
函块以8 位IO)表数,N;至函vOS赋o明TO把S_占数i8低号号优_EdS这以U成EMVO用O8 先为值V是ESu员pOS这ENtMre无位级(M一SiNOTxo个uMTuCS个t效和(反该*te资uEre*pxet互xvpee)高转值Pa欲源Pevxete斥enevePn的,8现为(提ntneodT型dnts()y其t高位象0t从升,)p/信(/x的e他(/互/空8两而F赋互的号原任F斥事位部要斥以量时优型务型件型常用分提,为,先释信控信数然:来:升放信号级制号后O了存低的量号别S块量再该指_放8优为链指E)把信针V为位先有针表成,E号N了用级获效员量低T取避来别O_,。8TS一免存pY否位ErPv个i出放则oeE赋n。事_t现信M信C以件nUt常控的TE制数高X
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业资料 1嵌入式实时操作系统简介 1. 1 英文名 Embedded Real-time Operation System ,简写为 RTOS。 1.2.1定义:当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的 结果又能在规定的时间之来控制生产过程或对处理系统作出快速响应, 并控制所有实时任务 协调一致运行的嵌入式操作系统。 (注:在工业控制、军事设备、航空航天等领域对系统的 响应时间有苛刻的要求,这就需要使用实时系统。我们常常说的嵌入式操作系统都是嵌入式 实时操作系统。比如 uC/OS-ll、eCOS和Linux。故对嵌入式实时操作系统的理解应该建立 在对嵌入式系统的理解之上加入对响应时间的要求。)

1.2.2 IEEE定义:嵌入式系统是 “用于控制、监视或者辅助操作机器和设备的装置 ”。 1.2.3 一般定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、 成本、体积、功耗格要求的专用计算机系统。

1 . 3 分类:VxWorks , uC/OS- n, uClinux , eCos, RTXC 等。 2、嵌入式实时操作系统的任务管理 2 . 1任务管理:是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它 通常包含优先级设置、多任务调度机制和时间确定性等部分。

2.1.1优先级设置:嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要, 赋予的优先级应越高。 优先级的设置分为静态优先级和动态优先级两种。 静态优先级指的是 每个任务在运行前都被赋予一个优先级, 而且这个优先级在系统运行期间是不能改变的; 动 态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时可以动态地改 变。

2.1.2多任务调度机制:任务调度主要是协调任务对计算机系统资源的争夺使用。 对系统 资源非常匮乏的嵌入式系统来说, 任务调度尤为重要,它直接影响到系统的实时性能。 通常, 多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。( 1)基于优先级抢占式调 度:系统中每个任务都有一个优先级,核总是将 CPU分配给处于就绪态的优先级最高的任 专业资料

务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级任务, 就把当前运行任务 置于就绪队列中,调入高优先级任务运行。 系统采用优先级抢占式进行调度, 可以保证重要 的突发事件及时得到处理。(2 )时间片轮转调度:让优先级相同的处于就绪状态的任务按 时间片使用CPU,以防止同优先级的某一任务长时间独占 CPU。在一般情况下,嵌入式实 时操作系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。

2.1.3时间的可确定性:嵌入式实时操作系统甬数调用与服务的执行时间应具有可确定 性。系统服务的执行时间不依赖于应用程序任务的多少。 基于此特征,系统完成某个确定任 务的时间是可预测的。

2.2任务管理机制:在核的设计过程中,最先应考虑的是任务的状态以及迁移时序,然 后根据此状态设计相应的队列, 如就绪队列、等待队列等。核时钟也依赖任务的状态。 可以 看出,任务管理实现的核心和基础是任务状态和迁移时序。

2.2.1任务状态:在多任务状态中,任务要参与资源的竞争,只有在所需资源得到满足的 情况下才能得到执行。 然而,任务拥有的资源情况是不断变化的, 这将导致任务状态也表现 出不断变化的特性。不同的实时核实现式对状态的定义不尽相同, 但都包括以下三种基本状 态:(1)等待:任务在等待I/O完成或者等待某事件的发生;(2)就绪:任务已经得到需 要运行的资源,并等待获得处理器资源;( 3 )执行:任务获得处理器和其他所有需要的资 源,相关代码正在被运行。在单处理器系统中,任时候只有一个任务处于运行状态。如果没 有任任务需要运行,那么核会运行一个空闲任务。任一个可以执行的任务都必须处于就绪状 态,实时核会从所有就绪的任务中,使用合适的调度策略选择一个运行。 当一个任务请求I/O 操作,或者等待信号量将会处于等待状态。

2.2.2任务状态转移:在一定条件下,任务会在不同的状态之间进行转化,称为任务状态 迁移,如图1所示。 专业资料

图2实际实现的任务状态转换图 图2在描述任务状态迁移的同时,也描述了任务的生存期,任务的生命期从新建态时开 始直到结束态时结束。 在给定的时刻,任务的状态一定处在这六种状态之一。 新建状态是指 任务被创建的过程,在这个过程中主要工作有:为任务分配 TCB和栈空间以及其他资源。 当任务创建完成以后,任务就具备运行的能力了, 与此同时,任务进入就绪状态, 并等待调 度器为它分配运行的机会。当任务得到运行的机会,任务开始执行。处于运行态的任务会在 任意时刻由运行态进入休眠态、 就绪态或结束状态。其中进入休眠态是任务的主动过程, 这 主要是任务调用了核提供的休眠函数, 任务在休眠状态,如果没有其他任务唤醒它, 它将永 远休眠下去直到系统关闭, 这种式也可用于任务同步。 等待状态主要由两种原因引起, 一种 是等待某事件的发生,如等待信号量;第二种为任务主动等待多少个 tick。最后,任务可以 将自己杀死进入结束态。

休眠 运石 结束 新建 就绡

等待 专业资料

週厦穆序 I” I I I . I |] 图3任务状态迁移示意图 图3描述了三个任务状态迁移过程。图中包含三个任务和一个调度程序。调度程序确定 下一个需要投入运行的任务,因此调度程序本身也占用一定的处理时间。

3、嵌入式实时操作系统的任务调度 3. 1任务调度:调度是核的主要职责之一, 调度的主要任务就是要决定该轮到哪个任务运 行。多数实时核采用基于优先级调度的算法。 基于优先级的调度算法是指,每个任务根据重 要程度被赋予一定的优先级, CPU总是让处在就绪态的优先级最高的任务运行。然而,究 竟时让高优先级任务掌握 CPU的使用权,有两种不同的情况,这取决于核的类型(是可剥 夺型的还是可剥夺型核)。当调度程序决定新的任务获得 CPU的使用权时,这时核将执行 任务切换。任务切换过程为:首先保存当前任务的上下文,即 CPU寄存器中的全部容。这 些容可以保存在任务的自己的栈中,也可以保存在 TCB中。然后,将需要运行的任务的上 下文从该任务的栈中重新装入 CPU的寄存器,并开始运行。任务切换过程增加了应用程序 的额外负荷。CPU的部寄存器越多,额外负荷就越重。

3. 2调度算法 3.2.1时间片轮转调度算法:当两个或两个以上任务有同样优先级,核允一个任务运行事 先确定的一段时间,该段时间叫做时间片,然后切换给另一个任务。核在满足以下条件时, 把CPU控制权交给下一个就绪态的任务: ①当前任务运行的时间片到期; ②当前任务在时 间片还没结束时已经完成了。 322基于优先级的调度算法:每个任务都赋予优先级。任务越重要,赋予的优先级就越 高。优先级的分配式可分为静态分配和动态分配的式。 静态优先级是指应用程序执行过程中 诸任务的优先级不变。在静态优先级系统中,各个任务以及它们的时间约束在程序编译时是 已知的。动态优先级指应用程序执行过程中,任务的优先级是可变的。 专业资料

Linux采取的调度策略结合了这几种调度案。在 Linux系统中,调度算法最基本的一类就 是基于优先级的调度。优先级高的任务先运行,相同优先级的任务按照轮转式进行调度。 Linux也实现了基于动态优先级的调度法。 一开始,利用静态优先级的法设置任务的优先级, 然而它允调度程序根据需要来提升、降低优先级。

3. 3调度器实现:在整个任务管理中,任务调度无疑是系统的核心,任务调度通常由核 中的调度器实现。调度器的实现与任务运行状态迁移, 任务队列有密切的联系, 可以说任务 运行状态迁移和任务队列决定了调度器的实现。 调度器的主要作用是在就绪队列中选择优先 级最高的任务运行,如果优先级最高的任务不止一个, 则选择队头的任务运行。 虽然整个调 度器的功能可以用上面的几句话概括, 但调度器的实现远远没有那么简单, 主要困难来源下 面的原因:①•确定调度器运行的时机;②•中断处理程序完了后,是执行当前任务,还是 马上调度;③•调度器的性能;④•调度中伴随着任务上下文的切换,尤其对处理器架构有 关的上下文,应该设计良好的接口以便移植。

对于实时系统来说,中断处理程序执行完毕后,应该马上执行调度,这是因为中断常常 伴随着有新的任务处于就绪队列中, 在这些任务中可能会有高优先级的任务就绪, 所以在实 时核中要求必须支持在中断后马上进行任务调度。不管是在实时系统,还是在其他系统中, 调度器性能显得非常重要,常常要求调度器的时间复杂度至少应该为线性, 当然常数是最好 的。对于不同的处理器架构,其提供的寄存器,状态寄存器都有很大的区别,调度器应该留 出良好的接口给不同的处理器,以便以后便移植。

在实现调度器时,基本上考虑了上面的几个基本问题。 根据任务状态迁移、核队列等面的容, 在byCore中实现了一个叫schedule^ )的调度程序。在 schedule^ )中调用几个与硬件相关 的函数,这几个函数主要用于实现任务硬件上下文的切换, 这部分代码用汇编完成,并且与 处理器有关。图4描述了 scheduled )的算法流程图。 专业资料

图4 schedule^ )的算法流程图 该调度程序的算法非常简单,首先,在允调度的情况下,如果有高优先级任务就绪,则 进行任务切换。任务切换会发生在两种处理器模式下, 一种是处理器处于正常的运行态, 另 一种发生在中断态中。 因此,核使用两组函数分别处理这两种情况。 在两种处理器状态下都 有“启动新任务”和“新旧任务切换”函数接口实现最后的任务切换工作, 这两组函数与处 理器有关,并由汇编实现。“启动新任务”的主要功能是将任务的初始上下文复制给处理器 的各个寄存器,这包括通用寄存器、 堆栈指针寄存器、状态寄存器和指令指针寄存器等。这 些初始值在新任务创建时被初始化。 启动新任务发生的时机有两种情况, 始化完毕后,启动第一个任务;第二种情况为任务主动结束后,当前任务指针被置位 NULL

半前任骂喈济为呈亍 1 肺旧任务旳

第一种情况是核初

N 鬲tt去刃咗群-说*

谓豊克MA汲脱

N 启动航佟淨

相关文档
最新文档