Autosar 系列教程:小柴带你学 AutoSar 总目录

# 小柴冲刺软考中级嵌入式系统设计师系列四、嵌入式系统软件基础知识(2)嵌入式操作系统概述

# 嵌入式操作系统

(Embedded Operating System,EOS) 是一种支持嵌入式系统应用的操作系统软件,它是嵌入式开发中极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。与通用操作系统相比,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

在 20 世纪 60 年代,嵌入式操作系统首先出现在国防系统中,并于 20 世纪 70~80 年代逐渐进入工业控制领域。经过几十多年的发展,目前已广泛应用在工业、交通、能源、通信、医疗卫生、国防、日常生活等诸多领域。

与通用的操作系统一样,可以从两个方面来描述嵌入式操作系统的功能。

# (1) 从软件开发的角度,

可以把 EOS 看成是一种扩展机或虚拟机。它把底层的硬件细节封装起来,为运行在它上面的软件 (如中间件软件和各种应用软件) 提供了一个抽象的编程接口。软件的开发不是直接在机器硬件的层面上进行,而是在这个编程接口的层面上进行。

# (2) 从系统管理的角度,

可以把 EOS 看成是系统资源的管理者,负责管理系统当中的各种软硬件资源,如处理器、内存、各种 IO 设备、文件和数据等等,使得整个系统能够高效、可靠地运转。

EOS 除了具有通用操作系统的基本功能之外,还有一些与嵌入式系统密切相关的特点:

  • 其目标是为了完成某一项或有限项功能,而非通用型的操作系统;
  • 在性能和实时性方面可能有严格的限制;
  • 能源、成本和可靠性通常是影响设计的重要因素;
  • 占用资源少,适合在有限存储空间运行;
  • 系统功能可针对需求进行裁剪、调整,以便满足最终产品的设计要求。

对于不同的嵌入式操作系统,它们所包含的组件可能各不相同,但是一般来说,所有的操作系统都会有一个内核。所谓的内核,是指系统当中的一个组件,它包含了 OS 的主要功能,即 OS 的各种特性及其相互之间的依赖关系。这些功能包括:任务管理、存储管理、输入 / 输出设备管理和文件系统管理。

操作系统在计算机系统中处于系统软件的核心地位,是用户和计算机系统的界面。每个用户都是通过操作系统来使用计算机的。每个程序都要通过操作系统获得必要的资源以后才能执行。例如,程序执行前必须获得内存资源才能装入:程序执行要依靠处理机;程序在执行时需要调用子程序或者使用系统中的文件;执行过程中可能还要使用外部设备输入 / 输出数据。操作系统将根据用户的需要,合理而有效地进行资源分配。

一个计算机系统可以分为如下的四个层次:硬件层、操作系统层、系统软件和应用软件层,如图 4-8 所示。

image-20241015211343465

每一层都表示一组功能和一个界面,表现为一种单向服务的关系,即上一层的软件必须以事先约定的方式使用下一层软件或者硬件提供的服务。

为了提高计算机系统的效率,增强系统的处理能力,最大限度地提高资源利用率,并方便用户使用,现代操作系统广泛采用了并行操作技术使硬件和软件并行工作。因此,以多道程序为基础的现代操作系统具有以下特征。

# 1、并发性

并发是两个或两个以上的事件在同一时间间隔内发生。对于程序而言,并发也就是多道程序在同一时间间隔内同时执行。对于单处理机系统而言,程序并发执行实际上是多道程序在一个很小的时间段内交替执行。而宏观上看,它们似乎是在同时进行,即并发执行。实现并发性,使操作系统变得复杂。因为要考虑如何从一个程序转到另一个程序,如何保护一个程序不受另一个程序侵扰,以及如何实现相互制约等。单处理机系统中,每一时刻只能执行一道程序,因此微观上这些程序是交替执行的。

# 2、共享性

共享性就是资源共享,即计算机系统中的硬、软件资源供所有授权程序或用户共同使用。实际上,由于系统中的资源有限,当多道程序并发执行时,必然要共享系统中的硬、软件资源。因此,程序并发执行必然依赖于资源共享机制的支持,如图 4-9 所示。

image-20241015211626047

# 3、虚拟性

所谓虚拟,是采用某种方法把一个物理实体映射为一个或者多个逻辑实体。前者是客观存在的,后者只是在感觉或效果上存在。例如在多道程序系统中,虽然只有一个 CPU, 每次只能执行一道程序;但是采用多道程序技术后,在一段时间内,宏观上看有多个程序在运行,似乎是多个 CPU 在运行各自的程序。也就是说,一个物理上的 CPU 虚拟为多个逻辑上的 CPU,即虚拟处理机。类似的还有虚拟存储器、虚拟外围设备等。

与其他类型的操作系统相比,嵌入式操作系统具有以下一些特点。

# (1) 体积小。

嵌入式系统大多使用闪存作为存储介质,因此只能运行在有限的内存中,不能使用虚拟内存,中断的使用也受到限制。因此,嵌入式操作系统必须结构紧凑,体积微小。

# (2) 实时性。

大多数嵌入式系统都是实时系统,而且多是强实时多任务系统,要求相应的嵌入式操作系统也必须是实时操作系统,重点解决实时多任务调度算法和可调度性、死锁解除等问题。

# (3) 特殊的开发调试环境。

一个完整的嵌入式系统集成开发环境一般包括编译 / 连接器、内核调试 / 跟踪器和集成图形界面开发平台,其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。

# 一、嵌人式操作系统的分类

操作系统的分类有多种方法,常见的有按照所提供的功能分类、按照系统的类型分类、按照响应时间分类、按照软件结构分类等。

# 1、按提供的功能分类

按照操作系统所提供的功能进行分类是最常见的方式,可以分为以下几类。

# (1) 单用户操作系统。

其主要特征是,在一个计算机系统内,一次只能支持运行一个用户程序。此用户独占计算机系统的全部硬件、软件资源。早期的微机操作系统例如 DOS 是这样的操作系统。

# (2) 批处理操作系统。

用户把要计算的问题、数据、作业说明书等一起交给系统操作员,系统操作员将一批算题输入计算机,然后由操作系统控制执行。采用这种批处理作业技术的操作系统称为批处理操作系统。这类操作系统又分为批处理单道系统和批处理多道系统。

# (3) 实时操作系统。

“实时” 是 “立即” 的意思。典型的实时操作系统包括过程控制系统、信息查询系统和事务处理系统。实时系统是较少有人为干预的监督和控制系统。其软件依赖于应用的性质和实际使用的计算机的类型。实时系统的基本特征是事件驱动设计,即当接到某种类型的外部信息时,由系统选择相应的程序去处理。

# (4) 分时操作系统。

这是一种使用计算机为一组用户服务,使每个用户仿佛自己有一台支持自己请求服务的计算机的操作系统。分时操作系统的主要目的是对联机用户的服务和相应,具有同时性、独立性、及时性、交互性。分时操作系统中,分时是指若干道程序对 CPU 的分时,通过设立一个时间分享单位即时间片来实现。分时操作系统与实时操作系统的主要差别在交互能力和响应时间上。分时系统交互行强,而实时系统响应时间要求高。

# (5) 网络操作系统。

提供网络通信和网络资源共享功能的操作系统称为网络操作系统。它是负责管理整个网络资源和方便网络用户的软件的集合。网络操作系统除了一般操作系统的五大功能之外,还应具有网络管理模块。后者的主要功能是,提供高效而可靠的网络通信能力;提供多种网络服务,如远程作业录入服务、分时服务、文件传输服务等。

# (6) 分布式操作系统。

分布式系统是由多台微机组成且满足如下条件的系统:系统中任意两台计算机可以通过通信交换信息;系统中的计算机无主次之分;系统中的资源供所有用户共享:一个程序可以分布在几台计算机上并行地运行,互相协作完成一个共同的任务。用于管理分布式系统资源的操作系统称为分布式操作系统,

嵌入式操作系统也可以按照不同的标准来进行分类,例如,可以按照系统的类型、响应时间和软件结构来分类。

# 2、按系统的类型分类

按照系统的类型,可以把嵌入式操作系统分为三大类:商用系统、专用系统和开源系统

# (1) 商用系统。

商业化嵌入式操作系统特点是功能强大、性能稳定、应用范围相对较广,而且辅助软件工具齐全,可以胜任许多不同的应用领域。但商用系统的价格通常比较昂贵,如果用于一般的产品会提高产品的成本从而失去竞争力。其典型代表是风河公司 (Wind River) 的 VxWorks、微软公司的 Windows CE、Palm 公司的 PalmOs 等

# (2) 专用系统。

一些专业厂家为本公司产品特制的嵌入式操作系统,这种系统一般不提供给应用开发者使用。

# (3) 开源系统。

开放源代码的嵌入式操作系统是近年来发展迅速的一类操作系统,其典型代表是 μC/OS 和各类嵌入式 Linux 系统。开源系统具有免费、开源、性能优良、资源丰富、技术支持强等优点,在信息家电、移动通信、网络设备和工业控制等领域得到越来越广泛的应用。

# 3、按响应时间分类

按照系统对响应时间的敏感程度,可以把嵌入式操作系统分为两大类:实时操作系统和非实时操作系统。

顾名思义,实时操作系统就是对响应时间要求非常严格的系统。当某一个外部事件或请求发生时,相应的任务必须在规定的时间内完成相应的处理。实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果所需要的时间。

实时操作系统可以分为硬实时和软实时两种情形。

# (1) 硬实时系统。

系统对响应时间有严格的要求,绝不允许响应时间不能满足,否则可能会引起系统的崩溃或致命的错误。

# (2) 软实时系统。

系统对响应时间有要求,如果响应时间不能满足,将带来额外的代价,不过这种代价通常能够接受。

非实时系统在响应时间上没有严格的要求,如分时操作系统,它是基于公平性原则各个进程分享处理器,获得大致相同的运行时间。当一个进程在进行 O 操作时,会交出处理器,让其他的进程运行。

# 4、按软件结构分类

按照软件的体系结构,可以把嵌入式操作系统分为三大类:单体结构、分层结构和微内核结构。它们之间的差别主要表现在两个方面:一是内核的设计,即在内核中包含了哪些功能组件;二是在系统中集成了哪些其他的系统软件 (如设备驱动程序和中间件)。

# (1) 单体结构

image-20241015212757946

在单体结构的操作系统中,中间件和设备驱动程序通常就集成在系统内核当中。整个系统通常只有一个可执行文件,里面包含了所有的功能组件 (如图 4-10 所示)。系统的结构就是无结构,整个操作系统由一组功能模块组成,这些功能模块之间可以相互调用。例如,嵌入式 Linux 操作系统、Jbed RTOS、μC/OS-I 和 PDOS 都属于单体内核系统。

单体结构的优点是性能较好,系统的各个模块之间可以相互调用,通信开销比较小。它的缺点是操作系统具有体积庞大、高度集成和相互关联等特点,因而在系统剪裁、修改和调试等方面都较为困难。

# (2) 分层结构

image-20241015212819018

在分层结构中,一个操作系统被划分为若干个层次,各个层次之间的调用关系是单向的,即某一层上的代码只能调用比它低层的代码。与单体结构相似,分层结构的操作系统也是只有一个大的可执行文件,其中包含有设备驱动程序和中间件。由于采用了层次结构,所以系统的开发和维护都较为简单。但是,这种结构要求在每个层次上都要提供一组 API 接口函数,这就会带来额外的开销,从而影响到系统的规模和性能。图 4-11 所示为 MS-DOS 的结构,这是一个有代表性的、良好组织的分层结构。

# (3) 微内核结构

image-20241015212857692

微内核结构或者客户 - 服务器结构的操作系统是指在内核中将操作系统的大部分功能都剥离出去,只保留最核心的功能单元 (如进程管理和存储管理),微内核结构的特点就是内核非常小,大部分的系统功能都位于内核之外,例如设备驱动程序,所有的设备驱动程序都被置于内核之外,如图 4-12 所示。

在微内核操作系统中,新的功能组件可以被动态地添加进来,所以它具有易于扩展、调试方便等特点。另外,由于大部分的系统功能被放置在内核之外,而且客户单元和服务器单元的内存地址空间是相互独立的,因此系统的安全性更高。它还有一个优点就是移植方便。但是,与其他类型的操作系统相比 (如单体内核),微内核操作系统的运行速度可能会慢一些,这是因为核内组件与核外组件之间的通信方式是消息传递,而不是直接的函数调用。另外,由于它们的内存地址空间是相互独立的,所以在切换的时候,也会增加额外的开销。许多嵌入式操作系统采用的都是微内核的方式,如 OS-9、CExecutive、VxWorks、CMX-RTX、Nucleus Plus 和 ONX 等。

# 二、常见的嵌人式操作系统

随着嵌入式系统在各个领域的广泛应用,嵌入式操作系统也得到了蓬勃的发展。从早期的实模式进化到保护模式,从微内核技术进化到超微内核技术,从支持单处理器发展到支持多处理器、分布式和实时网络,嵌入式操作系统已经成为操作系统研究领域中的一个重要分支。目前,国内外已经有数十家公司在从事相关方面的研究,开发了数以百计的各具特色的嵌入式操作系统产品,其中比较有影响的系统包括:VxWorks、嵌入式 Linux、Windows CE、uC/OS-II 和 PalmOS 等。
近年来,国内开发的自主操作系统包括:天脉操作系统、天操作系统、翼辉操作系统、锐华操作系统、道操作系统等。

# (1)VxWorks

VxWorks 是美国 WindRiver System 公司开发的一款嵌入式实时操作系统,具有良好的可靠性和卓越的实时性,是目前嵌入式系统领域中使用最广泛、市场占有率最高的商业系统。VxWorks 支持各种主流的 32 位处理器,如 x86、Motorola MC68xxx、Coldfire、PowerPC、MIPS、ARM、i960 等。它基于微内核的体系结构,整个系统由 400 多个相对独立、短小精炼的目标模块组成,用户可以进行裁减和配置,根据自己的需要来选择适当的模块。VxWorks 采用 GNU 的编译和调试器,它的大多数 API 函数都是专有的。

VxWorks 操作系统主要由以下几个功能模块组成:

  • 高效的实时微内核:这是 VxWorks 的核心,它包括基于优先级的任务调度、任务间的通信、同步和互斥、中断处理、定时器和内存管理机制等。
  • IO 处理系统:VxWorks 提供了一个快速灵活的与 ANSIC 兼容的 IO 系统,包括 UNIX 标准的缓冲 I/O 和 POSIX 标准的异步 IO。
  • 文件系统:VxWorks 提供了适合于实时应用的文件系统,主要包括与 MS-DOS 兼容的文件系统、与 RT-11 兼容的文件系统、Raw Disk 文件系统和 SCSI 磁带设备。
  • 网络处理模块:能与许多运行其他协议的网络进行通信,如 TCP/IP、NFS、UDPSNMP、FTP 等。
  • 虚拟内存模块 VxVMI: 主要用于对指定内存区的保护,以加强系统的安全性。
  • 板级支持包 BSP: 是系统用来管理硬件的功能模块,对各种板卡的硬件功能提供了统一的接口,它由初始化和驱动程序两部分组成。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝