• 沒有找到結果。

嵌入式操作系统的技术特点

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 100-103)

第 3 章 嵌入式操作系统

3.2 嵌入式操作系统的技术特点

实时操作系统分为嵌入式和普通系统两种。虽然这两种系统的规模、应用、性能及可 靠性要求都不同,但是这两种实时操作系统一般都是基于微内核的和模块化的。系统可以 在最小规模下工作时,操作系统仅仅提供一些最基本的服务,大量的在一般系统中由操作 系统完成的任务由开发商提供的作为应用运行的系统级任务完成。所以商业化的实时操作 系统遵循前面提到的开放的系统标准,系统高度模块化。

实时操作系统的内核必须满足一系列特殊的要求:

l 实时操作系统的内核必须非常小。操作系统的内核小,可以为用户应用留出空 间。另外,操作系统所占用的内存小也代表系统效率的提高。

l 操作系统内核必须是可重入的。这一点对于实时系统来说特别重要。因为不可重 入的内核必然带来慢速的中断响应和不可预料的操作时间。

l 系统能够快速地进行任务切换。快速的任务切换在满足高优先级的任务抢先时,

提供了完成deadline 的保证。

l 能够快速地响应外部中断。正如前面所提到的操作系统的内核必须可重入。将临 界区缩到最小可以提供最大的中断响应效率。

l 尽量减少中断屏蔽的时间。

l 提供固定的或可变的内存管理机制。内存管理机制在内核中的实现要求尽可能的 简单。高级的功能可以由系统级进程来完成。

l 在系统级任务中提供可高速访问的文件系统。

l 系统维护一个满足应用要求的实时时钟。因为对实时时钟的要求是随应用程序的 要求而变化的。而且实时时钟与硬件密切相关的,所以一般是操作系统提供一个 接口,真正的管理要求硬件提供者或用户自己提供。

l 实时操作系统必须提供一种合适的进程调度方法。一般商业化的实时操作系统如 VxWorks 和 QNX 都是提供的基于优先级的抢先式的进程调度算法。

l 实时操作系统必须通过使用实时时钟的接口来提供超时(time_outs)和时钟报警信 号(time alarm) 。

l 实时操作系统还应该提供允许应用任务来自己修改系统中所有进程的优先级的方 法和延迟或挂起别的任务的方法。这样的实时操作系统应该使用高级语言编写,

而且不能带有与硬件有关的任何特性。操作系统可以向下定义一组接口。由用户 或硬件的提供者来提供实际操纵硬件的程序,包括系统中设备的初始化和使用。

实时时钟也必须这样管理,这样才能保证不用为每一种嵌入式系统设计不同的内 核。这样,嵌入式实时操作系统内核中需要完成的仅仅是内存管理、进程调度和 定义一系列的接口,以及使用接口的基本功能。更高级一些实时操作系统,可以 提供一种进程间通信的方法。这样的实时操作系统内核已经是完善的了。操作系 统内核并没有必要将所有设备都自己管理,况且在设计内核时谁都想不到会出现 什么样的设备。因此在嵌入式系统中,一般是允许应用程序直接访问底层的硬件 设备的。

3.2.1 微内核结构

大多数操作系统至少被划分为内核层和应用层两个层次。内核只提供基本的功能,如 建立和管理进程、提供文件系统、管理设备等,这些功能以系统调用方式提供给用户。一 些桌面操作系统,如 Windows、Linux 等,将许多功能引入内核,操作系统的内核变得越 来越大。内核变大使得占用的资源增多,裁减起来很麻烦。

大多数嵌入式操作系统采用了微内核结构,内核只提供基本的功能,如任务的调度、

任务之间的通信与同步、内存管理、时钟管理等。其他的应用组件,比如网络功能、文件 系统、GUI 系统等均工作在用户态,以系统进程或函数调用的方式工作。因而系统都是可 裁减的,用户可以根据自己的需要选用相应的组件。

3.2.2 任务调度

在嵌入式系统中,任务即线程。大多数的嵌入式操作系统支持多任务。多任务运行的 实现实际是靠 CPU 在多个任务之间切换、调度。每个任务都有其优先级,不同的任务优 先级可能相同也可能不同。任务的调度有三种方式:可抢占式调度、不可抢占式调度和时 间片轮转调度。不可抢占式调度是指,一个任务一旦获得 CPU 就独占 CPU 运行,除非由 于某种原因,它决定放弃 CPU 的使用权;可抢占式调度是基于任务优先级的,当前正在 运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;当两个或两个以上任务 有同样的优先级,不同任务轮转地使用 CPU,直到系统分配的 CPU 时间片用完,这就是 时间片轮转调度。

目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的抢占式调度法,

对相同优先级的任务则采用时间片轮转调度法。

3.2.3 硬实时和软实时

有些嵌入式系统对时间的要求较高,称为实时系统。有两种类型的实时系统:硬实时 系统和软实时系统。硬实时系统对系统响应时间有严格要求,一旦系统响应时间不能满 足,就可能会引起系统崩溃或致命的错误,一般在工业控制中应用较多。软实时系统并不 要求限定某一任务必须在一定的时间内完成,只要求各任务运行得越快越好。

3.2.4 内存管理

针对有内存管理单元(Memory Management Unit,MMU)的处理器设计的一些桌面操作 系统,如 Windows、Linux,使用了虚拟存储器的概念。虚拟内存地址被送到 MMU。在 这里,虚拟地址被映射为物理地址,实际存储器被分割为相同大小的页面,采用分页的方 式载入进程。一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要运行的 部分页面装入内存运行。

大多数嵌入式系统针对没有 MMU 的处理器设计,不能使用处理器的虚拟内存管理技 术,采用的是实存储器管理策略。因而对于内存的访问是直接的,它对地址的访问不需要 经过 MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址;

而且,大多数嵌入式操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。

一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器的连 续空间。

由此可见,嵌入式系统的开发人员不得不参与系统的内存管理。从编译内核开始,开 发人员必须告诉系统这块开发板到底拥有多少内存。在开发应用程序时,必须考虑内存的 分配情况并关注应用程序需要运行空间的大小。另外,由于采用实存储器管理策略,用户 程序同内核以及其他用户程序在一个地址空间,程序开发时要保证不侵犯其他程序的地址 空间,以使得程序不至于破坏系统的正常工作,或导致其他程序的运行异常。因此,嵌入 式系统的开发人员对软件中的一些内存操作要格外小心。

3.2.5 实时系统的通信

在实时操作系统中实时的进程间通信也十分重要,特别是多处理器的情况,通过系统 总线或局域网进行通信。这里主要讨论在分布式系统中的实时通信。在实时分布式系统中 的通信有着特殊的要求。与普通的分布式系统不同,也与基于总线的多处理器或单处理器 不同。由于系统中没有可以用来通信的共享内存,进程之间的通信完全依靠网络协议来实 现。但现有的网络协议没有一种是为实时应用设计的。对于实时通信来说,当然是网络速 度越快越好。但光有高速的网络通道是不够的,必须有可预见的和有确定开销时间的网络 协议。在分布式系统或网络上实现实时应用的关键在于实现可预见的和有确定开销的网络 协议。首先看一下局域网。最常用的以太网从本性上来说就是一个随机的协议。载波侦听 /冲突检测本身是一个随机的协议。想发送数据的设备可能与网络上的其他机器发生冲 突。一旦发生,就放弃发送,随机等待一段时间后再次发送。不可能给出最坏情况的上下 限,这样就造成了发送数据所需时间的不确定性,而这恰恰是实时操作系统中不允许的。

另外一种局域网的协议是令牌环网。令牌环网的机制决定了它可以得到发送数据的开销的 上限。每个设备要发送数据时,首先要得到令牌。得到令牌的设备可以发送数据。局域网 的长度有限,令牌在网上传输的速度是一定的,令牌环网上所能容纳的字节数也是确定 的,所以可以确定发送一个包最多所需要的时间。这样的协议是可以被实时操作系统接受 的,而且令牌环网还可以允许带有优先级,允许优先服务高优先级的任务的通信请求。要 实现这一点,只需要在包头上加上一个代表优先级的字段即可。当发送数据时,只有优先 级高于当前传输的包的设备才能在当前包发送完后立即发送。这时发送一定大小的包所用 的最大开销就变成仅仅指定为最高优先级的包才能满足这个上限。

用于局域网中的通信手段还有时分多路复用 (TDMA)。这种机制中每个机器都在网络 上有自己的时间片。通信被组织成固定大小的帧。每个帧含有 n 个时隙。时隙与网络上的 机器对应。这样就避免了机器发送时的冲突。每个机器都有确定的带宽。现代的通信技术 提供了高带宽的传输能力,局域网内的实时通信基本成熟。

用于局域网中的通信手段还有时分多路复用 (TDMA)。这种机制中每个机器都在网络 上有自己的时间片。通信被组织成固定大小的帧。每个帧含有 n 个时隙。时隙与网络上的 机器对应。这样就避免了机器发送时的冲突。每个机器都有确定的带宽。现代的通信技术 提供了高带宽的传输能力,局域网内的实时通信基本成熟。

在文檔中 嵌 入 式 系 统 应 用 开 发 (頁 100-103)