第 3 章 嵌入式操作系统
3.3 嵌入式实时操作系统的体系结构
操作系统发展至今,模块结构已经非常明确,即可分成处理器管理、存储器管理、设 备管理和文件管理等模块,如表 3.1 所示。只有文件系统是属于建立在存储器上的逻辑管 理功能,因此可以说,现今的操作系统是一种直接的计算机硬件的逻辑映射,是硬件组合 模型的软件表达形式。
表3.1 功能对应表
模块名称 对应设备
处理器管理 CPU
存储器管理 内存、高速缓存
设备管理 所有需要驱动程序的设备
文件系统 各种大小容量的存储设备
操作系统最基本的结构是模块结构和层次结构。模块结构是最一般的结构化设计。单 内核就是模块结构,但内核的概念是一种层次概念。层次结构是建立在系统功能模块分类 的基础之上,是一种模块集合作为“层”的结构。操作系统按模块间功能调用方式分单内 核与微内核两类。另外还有两种应用模型:虚拟机与客户机/服务器模式,它们是建立在 操作系统上的系统应用扩展模型。
3.3.1 层次模型
层次概念能很好地从理论上进行功能的划分,如将操作系统代码分成体系相关部分与 体系无关部分,及应用接口部分(为体系相关部分,但多数体系相关部分为涉及硬件底层 的代码)。表 3.2 展示了系统设计中的层次结构。
表3.2 操作系统层次模型
应用软件层 应用接口层(API)
体系无关层(逻辑管理层,如进程调度、内存管理等) 体系相关层(设备驱动层)
硬件层
用户进程与内核进程则是运行态中的层次概念,因为是小到两个变量或函数之间的关 系,大到软件集之间的关系都能称为层次,系统内核概念的提出就是层次关系最好的 体现。
A 能调用 B 而 B 的实现与 A 无关,可以认为 A 永远处于 B 的上一层,一种静态层 次。当 A 与 B 互为调用时,可以认为是动态的层次关系或对等层次,如客户机/服务器的 概念就是这样的层次概念。
在结构化设计中,层次概念由模块组合来表达。在对象化设计中,层次概念由对象集 合来表达。在不同的设计理论下,有着不同的表现方式。因此,层次模型是最基础的模 型,其他的模型都是层次概念在不同设计理论下的变换。
3.3.2 单内核
从最初的操作系统设计开始,操作系统就是单内核的形式,以结构化程序设计理论为 基础,至今在多数操作系统模型中单内核依然拥有主导地位。单内核也称为集中式操作系 统,整个系统是一大进程,可以被分为若干逻辑模块,即处理器管理、存储器管理、设备 管理和文件管理,但在运行时,这些模块仅构成一个进程,其模块间的连接是通过直接调 用其他模块中的函数来实现。
单内核是一种整体式层次结构,单内核体系以系统执行效率为设计核心,因为整个系 统是一个统一的内核,所以其内部调用效率很高,但对于远程调用来说没有优势。单内核 的系统缺点也正是由其源代码是一个整体而造成的,通常其模块之间的界线并不是特别的 清晰,模块间的调用比较随意,进行系统修改时,往往牵一发而动全身,导致工作量大,
维护困难。
3.3.3 微内核
微内核是面向对象理论在操作系统设计中应用的产物。在实际应用中,微内核仍处于
发展阶段。微内核体系把把操作系统结构中的内存管理、设备管理、文件系统等高级服务 功能尽可能地从内核中分离出来,变成几个独立的非内核进程,使内核功能变得简洁可 靠,而各独立模块以特权方式的用户进程出现,具有各自独立的运行空间,模块间以进程 间通信(In-Process Communication,IPC)方式来完成单内核中相同功能的调用。图 3.1 是微 内核体系的示意图。
图3.1 微内核体系
微内核实现的基础是操作系统理论上的逻辑功能划分,几大功能模块在理论上是相互 独立的,在长期的单内核设计中内核设计逐渐按逻辑划分,形成比较明显的界限,使得微 内核概念脱颖而出。微内核通常仅负责少量的功能:
l 进程的管理和调度 l 进程间通信
l 内核自身所需内存的管理 l 部分必须的基础设备管理
简单说来,微内核是一个消息的转发站,因此也可以说微内核模型是从客户机/服务 器模型转换而来的。微内核体系充分体现了模块化,使得模块独立更换而不影响其他模 块,方便了第三方的开发者设计模块。未被使用的模块功能不必运行,因而能大幅度减少 系统的内存需求,从另一个角度降低了虚拟内存管理的负担。微内核体系具有很高的可移 植性,理论上讲只需要对微内核部分进行移植修改即可,微内核的体积通常很小,因此花 费也很小。
微内核的主要缺点是使用通信方式完成功能调用,速度相当低,对于单处理器系统,
模块间独立地址空间的切换频繁,对整体性能影响较大。
3.3.4 虚拟机
虚拟机是一种仿真概念,源自于大型机,在一定硬件功能支持下,以软件方式模拟低 速处理系统的硬件,形成一个软件模拟的虚拟机系统,使得那些低速系统上的软件能够直 接在大型机上运行,减少了软件移植的工作量。对于主机而言,本身也拥有一个独立的操 作系统,而虚拟机是建立在这个操作系统上的一种应用软件。图3.2 是虚拟机的示意图。
采用虚拟机体系可以使用较少的工作量来实现大型机上的跨平台软件移植,只对需移 植的操作系统进行少量与设备相关的修改,甚至不必修改即可运行。Java 虚拟机的概念是
一种简化的虚拟机,因为它本身的出发点就是建立在解释器上的通用平台系统,自身的实 现必须依赖操作系统的功能,是一种应用系统。如将基本的操作系统内核与 Java 虚拟机 融合,则Java 虚拟机就成为真正的操作系统,适合于嵌入式系统。
单从软件角度看,虚拟机是仿真技术的一种,这种方式可以简化成一种安全系统的子 系统,模拟主系统主要结构,用于检测可疑代码,以保证在主系统中代码的安全性。
图3.2 虚拟机示意图
3.3.5 客户机/服务器
客户机/服务器模型是一种建立在操作系统内核基础上的应用模式,是网络操作系统 发展的产物,这种模式将调用分成请求和应答两个部分,分别由客户端产生向服务器的请 求,服务器端生成应答回送给客户端,如图3.3 所示。
图3.3 客户机/服务器模型示意图
客户端和服务器端并没有严格的区分界线,当某服务器需要其他模块帮助完成某个任 务时,它就成为发送请求的客户端。客户端与服务器端也可以在同处于一台机器中,建立 在同一系统内核之上。这种体系以网络通信或本地通信为基础,所以此模型常用于网络操 作系统和分布式操作系统中。从图 3.3 中可以看出,客户机/服务器模型与微内核模型有 本质上的类似,差别只是客户机/服务器模型的应用面更广。从操作系统的层次结构讲,
所有的操作系统模型都是客户机/服务器模式在不同程度上的组合。
在实际的操作系统中,很少有完全符合的微内核理论划分的系统,总是为了提高效率 作了一定的改变。有一个现象很有趣,就是现有的单内核系统多少都拥有一定的微内核特 征,而且越来越多操作系统的发展都是侧重某个模型,并将两种模型的优势进行一定程度 上的融合。