目录
前言:
1 7 . 1 嵌 入 式 系 统 概 述
1 . 嵌入式系统的特点
(1) 系统专用性强。
(2) 系统实时性强。
(3) 软硬件依赖性强
(4) 处理器专用。
( 5 ) 多种技术紧密结合。
(6) 系统透明性。
(7) 系统资源受限。
2 . 嵌入式系统的组成
1 7 . 3 嵌入式实时操作系统
17.3.1 嵌人式操作系统槪述
1 . 相关概念
2. E O S 的特点
3. —般结构与组成
4 . 快:实时性能指标 (实时性是实时操作系统最重要的特性)
17.3.2 多任务调度算法(实时性保障的关键)
1 . 调度算法的分类
前言:
近年来,我国嵌入式系统应用产品的市场需求日益增长,嵌入式系统的产值呈现出不断增长的趋势,在家电、电子、汽车、通信、交通、金融、 网络、监控和工业自动化等领域尤其明显。发展嵌入式系统技术和产业是贯彻“信息化带动工业化,工业化促进信息化”的方针,促进我国产品由“中 M 制造”向 “中国创造”迈进的迫切需要,也是建立循环经济、节能减排、保护环境,保证我国国民经济能得到持续、稳步、快速发展的重要技术基础。
随着“后 P C 时代”的来临及3 C 融合加速趋势的彰显,我国以嵌入式软件为核心的嵌入式系统产业的高速增长迎来了千载难逢的契机,嵌入式系统现已成为我国 I T 行业的一个重要新兴产业和增长点。因此,作为1 T 行 业 “排头兵”的系统分析师,必须掌握嵌入式系统的基本原理和开发方法,重点掌握嵌入式系统的分析与设计技术。
本文重点讨论嵌入式系统的实时性这个重要的话题!!!
1 7 . 1 嵌 入 式 系 统 概 述
嵌入式系统是一种以应用为中心(即解决某种特定的应用),以计算机技术为基础(计算机是解决问题的手段),可以适应不同应用的功能、可靠性、成本、体积和功耗等方面的要求,集可配置、可裁减的软硬件于一体的专用计算机系统。它具有很强的灵活性,主要由嵌入式硬件平台、相关支撑硬件、嵌入式操作系统、支撑软件和应用软件组成。其中,嵌入性、专用性和计算机系统是嵌入式系统的三个核心要素。
1 . 嵌入式系统的特点
归纳起来,典型的嵌入式系统具有以下特点:
(1) 系统专用性强。
嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。由于嵌入式系统总是用来完成某-•特定任务的,整个系统与具体应用有机地结合在一起,升级换代也以更换整个产品的方式进行,因此,嵌入式产品一旦进入市场,一般具有较长的生命周期。
(2) 系统实时性强。
很多嵌入式系统对外来事件要求在限定的时间内及时做出响应,具有实时性。根据实时性的强弱,通常将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统,其中大部分为实时眹入式系统。
(3) 软硬件依赖性强
嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。
(4) 处理器专用。
嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。
通常具有功耗低、体积小和集成度高等优点,能够将许多在通用计算机上需要由板卡完
成的任务和功能集成到芯片内部,从而有利于嵌入式系统的小型化和移动能力的增强。
( 5 ) 多种技术紧密结合。
嵌入式系统通常是计算机技术、半导体技术、电力电子技
术、机械技术与各行业的具体应用相结合的产物。通用计算机技术也离不幵这些技术,
但它们相互结合的紧密程度不及嵌入式系统。
(6) 系统透明性。
嵌入式系统在形态上与通用计算机系统差异甚大。它的输入设备
往往不是常见的鼠标和键盘之类的设备,甚至没有输出装置,用户可能根本感觉不到它
所使用的设备中有嵌入式系统的存在,即使知道,也不必关心嵌入式系统的相关情况。
(7) 系统资源受限。
嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、 I / O 设备的数量和处理器的处理能力都比较有限。
2 . 嵌入式系统的组成
嵌入式系统是一种嵌入到对象体的结构中或带有执行装置的应用环境中的专用计算机系统,一般都由软件和硬件两个部分组成,如下图 所示,其中嵌入式处理器、存储器和外部设备构成整个系统的硬件基础。嵌入式系统的软件部分可以分为三个层次,分别是系统软件、应用支撑软件和应用软件。其中系统软件和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。
分层的本质是分工!!!
1 7 . 3 嵌入式实时操作系统
简单地说,实时系统可以看成对外部事件能够及时响应的系统。这种系统最重要的特征是时间性,也就是实时性,实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。在现实世界中,并非所有的嵌入式系统都具有实时特性,所有的实时系统也不一定都是嵌入式的。但这两种系统并不互相排斥,兼有这两种系统特性的系统称为实时嵌入式系统。
17.3.1 嵌人式操作系统槪述
嵌入式操作系统 (Embedded Operating System , E O S ) 是指运行在嵌入式系统上,
支持嵌入式应用程序的操作系统,是用于控制和管理嵌入式系统中的硬件和软件资源、
提供系统服务的软件集合。 E O S 是嵌入式软件的一个重要组成部分,它的出现提高了嵌
入式软件幵发的效率和应用软件的可移植性,有力地推动了嵌入式系统的发展。
1 . 相关概念
为了后续内容讨论的方便,此处先介绍与 E O S 相关的一些基本概念。
(1) 功能正确。
功能正确也称为逻辑正确,是指系统对外部事件的处理能够产生正确的结果。
( 2 ) 时间正确。
时间正确是指系统对外部事件的处理必须在预定的周期内完成。
(3) 死 线 ( deadline )。
死线也称为时限或截止时间,是指系统必须对外部事件处理的最迟时间界限,错过此界限可能产生严重的后果。
( 4 ) 实时系统。
实时系统是指同时满足功能正确和时间正确的系统。
根据对错失时限的容忍程度或后果的严重性,可以将实时系统分为软实时系统和硬实时系统。
硬实时系统是指系统必须满足其灵活性接近零时限要求的实时系统。时限必须满足,否则就会产生灾难性后果,并且时限之后得到的处理结果或是零级无用,或是高度贬值;软实时系统是指必须满足时限的要求,但是有一定灵活性的实时系统。时限可以包含可变的容忍等级、平均的截止时限,甚至是带有不同程度的、可接受性的响应时间的统计分布。在软实时系统中,时限错失通常不会导致系统失败或严重的后果。由于错过时限对软实时系统的运行没有决定性的影响,软实时系统不必预测是否可能有悬而未决的时限错失。相反,软实时系统在探知到错失一个时限后,可以启动一个恢复进程。
2. E O S 的特点
与通用操作系统相比, E O S 主要有以下特点:
(1)微型化。
E O S 的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因此 , E O S 必须做得小巧 , 以占用尽量少的系统资源。
(2) 代码质量高。
在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽 fl 精简。
(3) 专业化。
嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计的。因此, E O S 要有很好适应性和移植性,还要支持多种开发平台。
(4) 实时性强。
嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实时性成为 E O S 的又一特点。
(5) 可裁减和可配置。
应用的多样性要求 E O S 具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求。
3. —般结构与组成
与通用计算机系统上的操作系统一样, E O S 隔离了用户与计算机系统的硬件,为用户提供了功能强大的虚拟计算机系统,如图17-3所示。为方便用户应用程序的开发和代码的复用,嵌入式系统通常集成了第三方提供的中间件,这些中间件面向特定的应用领域,具有特定业务逻辑,具有与平台无关、方便升级和易于移植等特性。
针对不同的硬件平台,操作系统通常建立在一个抽象硬件层上,该抽象层位于底层硬件和内核之间,为内核提供各种方便移植的宏定义接口,在不同的平台间移植时,只需要修改宏定义即可。在硬件抽象层中,封装了与特定硬件有关的各种类型定义、数据结构和各种接口。硬件抽象层提供的接口包括 I / O 接口、中断处理、异常处理 、Cache处理和对称多处理等。根据抽象程度的不同,硬件抽象层的结构可以分为以下三个级别:
(1)系统结构抽象层。
该层抽象了 C P U 核的特征,.包括中断的传递、异常处理、上下文切换和 C P U 的启动等。
(2) 处理器变种抽象层
该层抽象了 C P U 变种的特征,例如, Cache 、内存管理部件、浮点处理器和片上部件(存储器、中断控制器)等。
(3) 平台抽象层。
该层抽象了不同平台的特征,例如,片外器件定时器和 I / O 寄存器等。每个 E O S 都有一个内核,大多数内核都包含调度器、内核对象和内核服务三个公共构件。其中调度器是 E O S 的心脏,提供一组算法决定何时执行哪个任务;内核对象是特殊的内核构件,帮助创建嵌入式应用;内核服务是内核在对象上执行的操作或通用操作。.
4 . 快:实时性能指标 (实时性是实时操作系统最重要的特性)
嵌入式系统的实时性能是由硬件、实时操作系统( Real-Time Operating System ,R T O S ) 和应用程序共同决定的,其中, R T O S 内核的性能起着关键作用。
- 硬件性能:所有的程序的执行,包括操作系统、应用程序都是依赖硬件电路的执行时序。因此,硬件性能越高,实时性越高,相应越快,执行代码越快。 =》 这不是本文讨论关注的重点,详细关注计算机体系结构!!!
- 操作系统性能:在现代操作系统中,支持多任务并行执行,操作系统负责对所有的应用程序的执行进行调度,多任务并行执行的代价就是在不同任务之间切换的时间开销和浪费,另外调度程序自身也会占用CPU的资源,以及对不同任务进行调度的调度算法,不同的调度算法,导致不同特性的应用程序的实时性大相径庭。符合调度策略的应用程序优先得到执行,而不符合调度策略的应用程序迟迟得不到CPU的资源。操作系统调度程序在这里的作用是统一资源分配的职责。 =》 这是本文关注的重点!!!,详见本文下一章节的讨论!!!
- 应用程序的应用:实时性,最终体现在特定应用的实时性上,因此,特定应用程序自身的高性能编程,也是影响特定应用实时性重要的因素。=》 这不是本文关注的重点,详细参见:高性能C++编程。
实时嵌入式操作系统和通用操作系统之间的功能有很多相似之处,例如,它们都支持多任务,支持软件和硬件的资源管理,以及都能为应用提供基本的操作系统服务。
在评估 R T O S 设计性能时,时间是最重要的一个性能指标,常用的时间性能指标主要有如下几个:
(1) 任务切换时间。
任务切换时间也称为上下文切换时间,是指 C P U 控制权由运行态的任务转移给另外一个就绪任务所需要的时间,包括在进行任务切换时,保存和恢复任务上下文所花费的时间,以及选择下一个待运行任务的调度时间。该指标与微处理器的寄存器数目和系统结构有关。
相同的操作系统在不同的微处理器上运行时,所花费的时间可能不同,如 图 17-4所示。
( 2 ) 中断处理相关的时间指标。
中断时序如图17-5所示。
A) 中断延迟时间
是指从中断发生到系统获知中断的时间,主要受系统最大关中断时间的影响,关中断的时间越长,中断延迟也就越长。最大关中断时间包含两个方面,
- 一是内核最大关屮断时间,即内核在执行临界区代码时关闭中断,
- 二是应用关中断时间。
关中断最大时间是这两种关中断时间的最大值。
B) 中断响应时间 = 中断调度时间
是指从中断发生到开始执行用户中断服务例程的时间;
中断恢复时间是指用户中断服务例程结束回到被中断的代码之间的时间。对于可抢占式调度,中断恢复时间还要加上进行任务切换和恢复新的任务上下文的时间;任务响应时间是指从任务对应的中断产生到该任务真正开始运行的时间。
( 3 ) 调度延迟:系统响应时间。
指系统任务在发出处理请求到系统做出应答的时间,即调度延迟,这个时间的大小主要由内核任务调度算法所决定。
17.4 多任务调度算法(实时性保障的关键)
当开发多任务的嵌入式系统应用时,许多普遍性的设计问题随之产生。因为系统的资源是有限的,多个任务执行时,共亨和竞争相同的资源不可避免,在可抢占的多任务环境中,资源共享是任务优先级的一个函数,任务的优先级越高,则任务越重要。
当访问共享资源时,高优先级的任务先于较低优先级任务。
嵌入式系统中多个任务利用并发执行达到效率最人化,任务之间协同工作也是实际应用的普遍要求,因此,任务之间的通信和同步问题也是设计人员必须考虑的。
1 . 调度算法的分类
调度算法根据其时限的性质(软时限还是硬时限)、周期性、可抢占性、静态或动态等准则,可以分为如下几类:
(1) 软时限算法与硬时限算法。
实时系统相当复杂,任务优先级的确定与调度并非易事。
实时系统大多综合了软实时和硬实时这两种需求,
软实时系统只要求任务尽快执行,并不要求在某一特定时间内完成 =》相对实时。
在硬实时系统屮,要求任务不但要正确无误执行,而且还要准时完成=》 绝对实时。
(2) 周期性与非周期性算法。
- 周期性算法是指调度周期性的任务算法,即每隔一段时间单元会执行一次的任务。这个时间单元称为任务周期/调度周期;
- 非周期性任务是指任务请求,处理器的时间是不能预期的。
( 3 ) 可抢占与非抢占算法。
- 可抢占算法是指正在运行的任务可能被其他任务打断 , 从而放弃 C P U , 让其他仟务执行;
- 非抢占算法是指任务会一直运行到结束或者等待其他资源而被阻塞,否则不会放弃 C P U 。
( 4 ) 静态笕法与动态算法。
根据任务优先级确定的时机,调度算法分为静态算法和 动态算法两类,静态算法是指任务的优先级在设计时就确定下来,在任务运行的过程中 不会再发生改变。通常,静态调度算法中确定任务优先级的主要依据有执行时间、任务 周期和任务的紧迫性;动态算法是指任务的优先级在运行的过程中动态确定,并且会不 断地发生变化和更新,该类算法能够完全掌握系统中运行的任务和截止时间、运行时间 、 优先级,以及到达时间等时间约束,可以灵活地处理变化的系统情况。
( 5 ) 单处理器调度与多处理器调度算法。
单处理器算法仅处理一个处理器的情况 , 多处理器算法可以处理系统中有多个处理器的情况。多处理器算法又分为同质多处理系 统和异质多处理系统两种情况。
( 6 ) 在线与离线调度算法。
离线式调度算法就是运行中使用的调度信息在系统运行 之前就确定了,运行的过程屮不再变更,离线调度算法具有确定性,但缺少灵活性,适 用于那些能够预先知道运行特性, a 不易发生变化的应用类型;在线调度算法是指系统 运行的调度信息是运行过程中动态收集获取的,例如,优先级驱动的调度等,该类算法 具有最大的灵活性。 当前,大多数内核支持两种普遍的调度算法,即基于优先级的抢占调度和时间轮转 调度算法。 ( 1 ) 基于优先级的抢占调度。优先级可以分为静态优先级和动态优先级。应用程序 在执行的过程中诸任务的优先级固定不变,称为静态优先级。在静态优先级系统中,各 任务和它们的时间约束在程序编译时是己知的;应用程序在执行的过程中诸任务的优先 级可以动态改变,称为动态优先级。基于优先级的抢占调度在任何时候运行的任务都是 所有就绪任务中具有最高优先级的任务,任务在创建时被赋予了优先级,任务的优先级 可以由内核的系统调用动态更改,这使得嵌入式应用对于外部事件的响应更加灵活,从 而建立真正的实时响应系统。 ( 2 ) 时间轮转调度算法。为每个任务提供确定份额的 C P U 执行时间。该调度算法在 设计时,应该考虑的 W 素主要包括 C P U 的利用率、系统的 I/O 吞吐量、系统响应时间 、 公平性和截止时限的满足性等。