1.任务的概念
任务管理是嵌入式操作系统最基本功能之一,这里的任务(task)是指嵌入式操作系统调度的最小单位,类似于一般操作系统进程或线程的概念。任务是运行中的一个程序,一个程序加载到内存后就变成任务:
任务=程序+执行
2.任务的三种状态
任务一旦被加载到计算机内存后,通常会处于不同的工作状态,这种状态可随着计算机运行而转变。在嵌入式操作系统中,任务的工作状态最简单的课分为三种:执行态、就绪态和阻塞态,其转换关系见图1。
执行态:当任务已获得处理机,其程序正在处理机上执行,此时的任务状态称为执行状态。
就绪状态:当任务已分配到除CPU以外的所有必要的资源,只要获得处理机变可立即执行,这时的任务状态称为就绪状态。
阻塞状态:正在执行的任务,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
3.三种基本状态转换
三种基本状态转换:
就绪 →执行:处于就绪状态的任务,当任务调度程序为之分配了处理机制后该任务便由就绪状态转变成执行状态。
执行 →就绪 :处于执行状态的任务在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是任务从执行状态转变成就绪状态。
执行→阻塞:正在执行的任务因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
阻塞→就绪:处于阻塞状态的任务,若其等待的事件已经发生,于是任务由阻塞状态转变为就绪状态。
4.实时调度方法
由于嵌入式系统中大部分应用领域是实时系统,因此,嵌入式操作系统的任务实时调度问题是操作系统任务管理的核心技术。许多嵌入式操作系统都支持优先级抢占调度算法和时间片轮转调度算法。
4.1实时调度方法三种类型
在实时系统的任务调度中,存在大量的实时调度方法,大致可以概述为主要三种划分,即离线(Off-Line)和在线(On-Line)调度、抢占(Preemptive)和非抢占(Non-Preemptive)调度、静态(Static)和动态(Dynamic)调度等。
4.2几种典型强实时调度算法
几种典型强实时调度算法:最早截止时间优先(Earliest Deadline First,EDF)算法、 最低松弛度优先(Least Laxity First,LLF)算法、单调速率调度算法(Rate Monotonic Scheduling,RMS)。