嵌入式操作系统概述.docx
- 文档编号:27173690
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:27
- 大小:76.54KB
嵌入式操作系统概述.docx
《嵌入式操作系统概述.docx》由会员分享,可在线阅读,更多相关《嵌入式操作系统概述.docx(27页珍藏版)》请在冰豆网上搜索。
嵌入式操作系统概述
第1章嵌入式操作系统概述
1.1操作系统概述
操作系统(OS)是一种为应用程序提供服务的系统软件,是一个完整计算机系统的有
机组成部分。
从计算机系统层次结构来看,操作系统位于计算机硬件之上、应用软件之下,所以也把它称为应用软件的运行平台。
本章主要内容:
操作系统的作用和特征。
操作系统的体系结构。
嵌入式操作系统特点概述。
嵌入式操作系统μC/OS-II的特点。
1.1.1操作系统的作用
我们可以从不同的角度来分析OS的作用,从一般用户的角度,可把OS看做是用户
与计算机硬件系统之间的接口;从资源管理角度,可把OS看做计算机系统资源的管理者。
1.OS作为用户与计算机硬件系统之间的接口
OS作为用户与计算机硬件系统之间的接口的含义是:
OS处于用户与计算机硬件系统
之间,用户通过OS来使用计算机系统。
或者说,用户在OS的帮助下能够方便、快捷、
安全可靠地操纵计算机硬件和运行自己的程序。
应当注意,OS是一个系统软件,因而这
种接口是软件接口,如图1-1所示。
OS在计算机应用软件与计算机硬件系统之间,它屏蔽了计算机硬件工作的一些细节,并对系统中的资源进行
有效的管理。
通过提供应用程序接口(API)函数,从而使应用软件的设计人员得以在一个友好的平台上进行应用
软件的设计和开发,大大地提高了应用软件的开发效率。
2.OS作为计算机系统资源的管理者
图1-1OS作为接口的示意图
一个计算机系统就是一组资源,这些资源用于对数据的移动、存储、处理,以及对这些功能的控制,而OS负责管理这些资源。
OS对计算机资源的管理有以下几个方面。
(1)处理机管理—用于分配和控制处理机。
(2)存储器管理—主要负责内存的分配与回收。
(3)I/O设备管理—负责I/O设备的分配与操纵。
(4)文件管理—负责文件的存取、共享和保护。
1.1.2操作系统的特征
操作系统的种类很多,不同的操作系统分别具有各自的特征,一般来说,采用了多道
程序设计技术的操作系统具有如下4个基本特征。
1.并发
在处理机系统中,并发是指宏观上有多道程序同时运行,但在微观上是交替执行的。
多道程序并发执行能提高资源利用率和系统吞吐量。
多个进程的并发执行由操作系统统一控制,为保证并发进程的顺利运行,操作系统提供了一系列管理机制。
2.共享
共享是指计算机系统中的资源可被多个并发执行的用户程序或系统程序共同使用,而不是被其中某一个程序所独占。
共享的原因如下。
(1)用户或任务独占系统资源将导致资源浪费。
(2)多个任务共享一个程序的同一副本,而不是分别向每个用户提供一个副本,可以避免重复开发。
并发和共享是紧密相关的。
一方面,资源共享是以进程的并发执行为条件的,若不允
许进程的并发执行,就不会有资源的共享;另一方面,进程的并发执行以资源共享为条件,若系统不运行共享资源,程序就无法并发执行。
3.异步
在多道程序系统中,多进程并发执行,但在微观上,进程是交替执行的,因此进程以“走走停停”的不连续方式运行。
由于并发运行环境的复杂性,每个进程在何时开始执行,何时暂停,以怎样的速度向前推进,多长时间完成,何时发生中断,都是不可预知的,此
种特征称为异步。
4.虚拟
虚拟指的是通过某种技术把一个物理实体映射为多个逻辑实体,用户程序使用逻辑实体。
逻辑实体是使用户感觉上有但实际上不存在的事物,例如在分时系统中,虽然只有一
个CPU,但在分时系统的管理下,每个终端用户都认为自己独占一台主机。
此时,分时操
作系统利用分时轮转策略把一台物理上的CPU虚拟为多台逻辑上的CPU,也可以把一台物理I/O设备虚拟为多台逻辑上的I/O设备,方法是用内存中的输入输出缓冲区来虚拟物
理设备,用户程序进行输入输出时,其实是在和缓冲区进行输入输出。
1.1.3操作系统的发展
操作系统最早产生于1955年,至今已发展了50多年,其发展历程可粗略地划分为
4代。
第一代操作系统是单任务自动批处理操作系统,通过作业控制语言使多个程序可自动
在计算机上连续运行,在上一个程序结束与下一个程序开始之间不需人工装卸和干预,第一代操作系统通过避免手工装卸而大大提高了机器利用率,但程序执行过程中输入输出数据时,主机空闲降低了处理机利用率。
第二代操作系统是多任务和多用户操作系统,最大特征是采用并发技术,使得当一个
程序在进行I/O操作时,CPU可转去执行其他程序,从而使多个程序并发执行,CPU和I/O并行工作。
第二代操作系统通过并发技术大大提高了机器利用率,但并发技术的实现代价
是使操作系统的复杂程度和功能规模大大增加,从而增加了操作系统的开发周期和开发成本,并影响了操作系统的正确性和可靠性。
第三代操作系统是结构化与小型化,其典型特征是重视操作系统的结构和功能精简。
第三代操作系统还具有网络特征。
第四代操作系统是网络和开放系统、并行与分布操作系统。
总之,操作系统经过几十年的发展,就单机环境下的系统而言,其基本原理和设计方
法已趋成熟。
出现了许多流行的嵌入式系统,如UNIX,WindowsNT等。
20世纪80年代
后,随着通用微处理器芯片的高速发展,个人计算机和工作站系统得到了迅猛的发展,强烈冲击着传统小型计算机、中大型计算机的市场。
相应地,微型计算机及工作站的操作系
统获得了快速的发展和应用,如MS-DOS、Windows、Solaris等。
从操作系统的发展历史
看,推动其发展的动力主要是计算机系统的不断完善和计算机应用的不断深入。
随着计算机应用技术的发展,适应不同应用系统的操作系统也相继出现,并在应用中
得以不断发展。
嵌入式操作系统:
主要伴随着个人数字助理PDA、掌上电脑、电视机顶盒、智能
家电等设备的发展,对操作系统在功能和所占存储空间大小的权衡上提出了新的要求,对实时响应也有较高的要求。
实时操作系统:
对操作系统的实时响应要求从来就没有停止过,要求计算机的最大
响应时间也越来越短,任务调度时机、算法要求越来越高。
特别是针对操作系统的实时性研究还在不断发展中。
并行操作系统:
随着高性能通用微处理器的发展,人们已经成功地提出了用它们构造“多处理机并行”的体系结构。
网络操作系统和分布式操作系统:
就目前情形而言,计算机网络系统也还在不断完
善中,基于Client-Server模型的分布式系统也已不断走向应用,完全分布式的系统
还未成形,仍将是研究的热点问题。
1.2操作系统的体系结构
操作系统的体系结构设计是指选择合适的结构,按照这一结构可以对操作系统进行分
层、分模块或资源等方式的功能划分;通过逐步的分解、抽象和综合,使操作系统功能完备、结构清晰。
常用的操作系统体系结构有:
层次结构的操作系统和微内核结构的操作系统。
1.2.1层次结构
层次结构的操作系统的设计思想是,按照操作系统各模块的功能和相互依存关系,把系统中的模块分为若干层次,每一层(除底层模块)都建立在它下面一层的基础上,每一层仅使用其下层模块提供的服务,将系统问题分解成多个子问题,然后分别解决。
操作系统的层次结构如图1-2所示。
图1-2操作系统层次结构的模型
一个操作系统应划分为多少层、各层处于什么位置是层次结构操作系统设计的关键问题,没有固定的模式。
一般原则是,接近用户应用的模块在上层,接近硬件的驱动模块在
下层。
处于下层的程序模块往往称为操作系统的内核。
这部分程序模块包括中断处理模块、各种驱动模块和运行频率较高的模块(如时钟管理程序、进程调度程序、低级通信模块、
内存管理模块等)。
为提高操作系统的执行效率,操作系统内核一般常驻内存。
层次型结构技术在操作系统设计中的应用比较成功,许多典型的商用操作系统都是基于这种结构实现的,如MS-DOS、早期的Windows及传统的UNIX等。
1.2.2微内核结构
近年来备受关注的一个概念是微内核。
微内核是一个小型的操作系统核心,它为模块
化扩展提供了基础。
微内核的设计思想是,为了有效地提高系统的可靠性,并使系统具备良好的可适应性,
需要将核心模块设计精练化。
具体做法是,将原来内核模块中的内容精简,把一些原来属
于核心模块的功能提出到外部去完成,只将操作系统最主要的功能包含在内核中,使内核
尽量简单,形成微内核的结构。
微内核结构用一个水平分层的结构代替了传统的纵向分层的结构,在微内核外部的操
作系统部件被当做服务器进程实现,它们可以通过微内核传递消息来实现相互之间的交互。
因此,微内核起着信息交互、验证信息、在部件间传递信息并授权访问硬件的作用。
微内核还
执行保护功能,除非允许交换,否则它阻止信息传递。
微内核结构的模型如图1-3所示。
运行在核心态的微内核,提供所有操作系统都具有的基本操作,如线程调度、虚拟
存储、消息传递、设备驱动、原语操作、中断处理等,这些部分通常采用层次结构并构成了基本操作系统。
运行在用户态,并以客户-服务器方式运行的进程层,除内核部分外,操作系统的其他部分都被分成若干个相对独立的进程,每个进程实现一组服务,称为服务进程。
这些
服务进程可以提供各种系统功能,如文件系统服务以及网络服务等。
服务进程的任务
是检查是否有客户提出要求服务的请求,并在满足客户进程的请求后将结果返回。
图1-3微内核结构的模型
客户进程与服务进程之间通信时采用消息通信,客户进程发出消息,内核将消息传给服务进程,服务进程执行相应的操作,其结果又通过内核用发消息的方式返回给客户进程。
基于微内核的操作系统具有如下特征。
微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备以及其他服务,如文件管理、网络支持等,通过接口连到微内核。
与此相反,内核是
集成的,比微内核更大。
微内核具有很好的扩展性,并可简化应用程序开发。
用户只运行他们需要的服务,这有利于减少磁盘空间和存储器需求。
厂商可以很容易地将微内核移植到其他处理器平台,并在上面增加适合其他平台需要的模块化部件,例如文件服务器、工程应用。
微内核和硬件部件有接口,并向可安装模块提供一个接口。
在微内核中,进程通过传
递消息或运行“线程”来发生相互作用。
线程为将一个任务分解为多个子任务提供了途径,在多处理器环境下,线程可以在不同的处理器上独立运行。
1.3嵌入式操作系统概述
嵌入式操作系统又称实时操作系统,是一种支持嵌入式系统应用的操作系统软件,它
是嵌入式系统(包括硬件、软件系统)极为重要的组成部分,通常包括与硬件相关的底层
驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。
嵌入式操作系统具有通用操作系统的特点,如能够有效管理越来越复杂的系统资源;能够
把底层虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、
驱动程序、工具集以及应用程序。
嵌入式操作系统能够负责嵌入式系统的全部硬件、软件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
1.3.1嵌入式操作系统的演变
近10年来,嵌入式操作系统得到飞速的发展,从支持8位微处理器到16位、32位甚
至64位微处理器;从支持单一品种的微处理器芯片到支持多品种微处理器芯片;从只有内
核到除了内核外还提供其他功能模块,如文件系统,TCP/IP网络系统,窗口图形系统等。
随着嵌入式系统应用领域的扩展,目前嵌入式操作系统的市场在不断细分,出现了针
对不同领域的产品,这些产品按领域的要求和标准提供特定的功能。
嵌入式系统经历了30多年的发展,尤其是近几年来,计算机、通信、消费电子的一
体化趋势日益明显,嵌入式技术已成为一个研究热点,嵌入式系统也给众多商家带来了良
好商机。
目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式
系统的研究和应用产生了如下新的显著变化。
新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短
时间内支持更多的微处理器。
嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式操作系统本身,
同时还要提供强大的软件开发支持包。
通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据
库、移动代理、实时CORBA、Java等,嵌入式软件平台得到进一步完善。
各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效
率高、网络结构完整等特点,很符合信息家电等嵌入式系统的需要,目前已经形成
了能与WindowsCE、Symbian等嵌入式操作系统进行有力竞争的局面。
网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功
能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。
精简系统内核,优化关键算法,降低功耗和软硬件成本。
提供更加友好的多媒体人机交互界面。
1.3.2嵌入式操作系统的特点
一个典型的嵌入式操作系统应该具备下列特点。
1.可裁剪性
可裁剪性是嵌入式操作系统最大的特点,因为嵌入式操作系统的目标硬件配置差别很大,有的硬件配置非常高,有的却因为成本原因,硬件配置十分紧凑,所以,嵌入式操作系统必须能够适应不同的硬件配置环境,具备较好的可裁剪性。
在一些配置高、功能要求多的情况下,嵌入式操作系统可以通过加载更多的模块来满足这种需求;而在一些配置相对较低、功能单一的情况下,嵌入式操作系统必须能够通过裁剪的方式,把一些不相关的模块裁剪掉,只保留相关的功能模块。
为了实现可裁剪,在编写嵌入式操作系统的时候,就需要充分考虑、仔细规划,对整个操作系统的功能进行细致的划分,每个功能模块尽量以独立模块的形式来实现。
可通过两种方式来具体实现可裁剪。
一种方式是把整个操作系统功能分割成不同的功
能模块,进行独立编译,形成独立的二进制可加载映像,这样就可以根据应用系统的需要,通过加载或卸载不同的模块来实现裁剪。
另外一种方式,是通过宏定义开关的方式来实现
裁剪,针对每个功能模块,定义一个编译开关(#define)来进行标志。
若应用系统需要该
模块,则在编译的时候,定义该标志,否则取消该标志,这样就可以选择需要的操作系统核心代码,与应用代码一起联编,实现可裁剪。
其中,第一种方式是二进制级的可裁剪方式,对应用程序更加透明,且无须公开操作系统的源代码;第二种方式则需要了解操作系统的源代码组织。
2.强实时性
多数嵌入式操作系统都是硬实时的操作系统,抢占式的任务调度机制。
3.可移植性
通用操作系统的目标硬件往往比较单一,比如,对于UNIX、Windows等通用操作系统,只考虑几款比较通用的CPU就可以了,如Intel的LA32和PowerPC。
但在嵌入式开发中却不同,存在多种多样的CPU和底层硬件环境,就CPU而言,流行的可能就会达到
十几款。
嵌入式操作系统必须能够适应各种情况,在设计的时候充分考虑不同底层硬件的需求,通过一种可移植的方案来实现不同硬件平台上的方便移植。
例如,在嵌入式操作系统设计中,可以把硬件相关部分代码单独剥离出来,在一个单独的模块或源文件中实现,或者增加一个硬件抽象层来实现不同硬件的底层屏蔽。
总之,可移植性是衡量一个嵌入式操作系统质量高低的重要标志。
4.可扩展性
嵌入式操作系统的另外一个特点,就是具备较强的可扩展性,可以很容易地在嵌入式
操作系统上扩展新的功能。
例如,随着Internet技术的快速发展,可以根据需要,在对嵌
入式操作系统不做大量改动的情况下,增加TCP/IP协议功能或协议解析功能。
这样必然要求嵌入式操作系统在设计的时候,充分考虑功能之间的独立性,并为将来的功能扩展预
留接口。
1.3.3嵌入式操作系统与通用操作系统的区别
嵌入式操作系统与通用操作系统的主要区别体现在以下三个方面。
1.地址空间
一般情况下,通用操作系统充分利用了CPU提供的内存管理机制(MMU单元),实
现了一个用户进程(应用程序)独立拥有一个地址空间的功能,例如,在32位CPU的硬
件环境中,每个进程都有自己独立的40B地址空间。
这样每个进程之间相互独立、互不影
响,即一个进程的崩溃,不会影响另外的进程;一个进程地址空间内的数据,不能被另外的进程引用。
嵌入式操作系统多数情况下不会采用这种内存模型,而是操作系统和应用程
序共用一个地址空间,例如,在32位硬件环境中,操作系统和应用程序共享4B个地址空
间,不同应用程序之间可以直接引用数据。
这类似于通用操作系统上的线程模型,即一个
通用操作系统上的进程,可以拥有多个线程,这些线程之间共享进程的地址空间。
这样的
内存模型实现起来非常简单,且效率很高,因为不存在进程之间的切换(只存在线程切换),
而且不同的应用之间可以很方便地共享数据,对于嵌入式应用来说,是十分合适的。
但这
种模型的最大缺点就是无法实现应用之间的保护,一个应用程序的崩溃,可能直接影响到其他应用程序,甚至操作系统本身。
但在嵌入式开发中,这却不是问题,因为在嵌入式开发中,整个产品(包括应用代码和操作系统核心)都是由产品制造商开发完成的,很少需
要用户编写程序,因此整个系统是可信的。
而通用操作系统之所以实现应用之间的地址空间独立,一个立足点就是应用程序的不可信任性。
因为在一个系统上,可能运行了许多
不同厂家开发的软件,这些软件良莠不齐,无法信任,所以采用这种保护模型是十分恰当的。
2.内存管理
通用的计算机操作系统为了扩充应用程序可使用的内存数量,一般实现了虚拟内存功
能,即通过CPU提供的MMU机制,把磁盘上的部分空间当做内存使用。
这样做的好处是可以让应用程序获得比实际物理内存大得多的内存空间,而且可以把磁盘文件映射到应用
程序的内存空间,这样应用程序对磁盘文件的访问,就与访问普通物理内存一样了。
但在嵌入式操作系统中,一般情况下不会实现虚拟内存功能,这是因为:
①一般情况下,嵌入式系统没有本地存储介质,或者即使有,数量也很有限,不具备实现虚拟内存功能的基础
(即强大的本地存储功能);②虚拟内存的实现,是在牺牲效率的基础上完成的,一旦应用程序访问的内存内容不在实际的物理内存中,就会引发一系列的操作系统动作,比如引发一个异常、转移到核心模式、引发文件系统读取操作等,这样会大大降低应用程序的执行效率,使得应用程序的执行时间无法预测,这在嵌入式系统开发中是无法容忍的。
因此,权衡利弊,嵌入式操作系统首选是不采用虚拟内存管理机制,这也是嵌入式操作系统与通用的操作系统之间的一个较大区别。
3.应用方式
通用的操作系统在使用之前必须先进行安装,安装包括检测并配置计算机硬件、安装并配置硬件驱动程序、配置用户使用环境等过程,这个过程完成之后,才可以正常使用操作系统。
但嵌入式操作系统则不存在安装的概念,虽然驱动硬件、管理设备驱动程序也是
嵌入式操作系统的主要工作,但与通用计算机不同,嵌入式系统的硬件都是事先配置好的,其驱动程序、配置参数等往往与嵌入式操作系统连接在一起,因此,嵌入式操作系统不必
自动检测硬件,因而也无须存在安装的过程。
除了上述区别外,嵌入式操作系统还有一些其他特点。
1.4嵌入式实时操作系统μC/OS-II概述
μC/OS-II是一款源码公开的实时操作系统。
美国工程师JeanLabrosse将开发的μC/OS
于1992年发表在嵌入式系统编程杂志上。
μC/OS是“MicroControllerOperationSystem”
的缩写,意思是“微控制器操作系统”,最初是为微控制器设计的。
μC/OS-II是μC/OS的
升级版本,也是目前广泛使用的版本。
它以小内核、多任务、实时性好、丰富的系统服务、
容易使用等特点越来越受欢迎。
μC/OS-II实时系统的商业应用非常广泛,具有非常稳定、
可靠的性能,成功应用于生命科学、航天工程等重大科研项目中,还可应用于手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制等,由于其极小的内核,特别适用于对程序代码存储空间要求极其敏感的嵌入式系统开发。
1.4.1μC/OS-II的特点
1.有源代码
μC/OS-II是一款源码公开的实时操作系统。
2.可移植性
μC/OS-II源码绝大部分是用移植性很强的ANSIC编写的,与微处理器硬件相关的部分是用汇编语言编写的。
汇编语言编写的部分已经压到最低限度,以使μC/OS-II便于移植到其他微处理器上。
3.可固化
μC/OS-II是为嵌入式产品设计的,这就意味着,只要具备合适的系列软件工具,就可以将μC/OS-II嵌入到产品中作为产品的一部分。
4.可裁剪
指的是用户可以在应用程序中通过语句
#defineconstants来定义所需的
μC/OS-II
功能
模块,以减少不必要的存储器空间的开支。
5.可剥夺性
μC/OS-II
是完全可剥夺型的实时内核,
即μC/OS-II
总是运行就绪条件下优先级最高的
任务。
6.多任务
μC/OS-II可以管理64个任务,支持务的优先级必须是不相同的,这意味着
56个用户任务,8个系统保留任务。
赋予每个任
μC/OS-II不支持时间片轮转调度法。
7.可确定性
绝大多数μC/OS-II的函数调用和服务的执行时间具有可确定性。
用户总是能知道
μC/OS-II的函数调用与服务执行了多长时间。
除了函数OSTimeTick()和某些事件标志服务
外,μC/OS-II系统服务的执行时间不依赖于用户应用程序任务数目的多少。
8.任务栈
μC/OS-II的每个任务都有自己单独的栈,它允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。
9.系统服务
μC/OS-II提供很多系统服务,如信号量、互斥型信号量、事件标志、消息邮箱、消息队列、块儿大小固定的内存的申请与释放及时间管理函数等。
10.中断管理
中断可以使正在执行的任务暂时挂起。
如果μC/OS-II优先级更高的任务被该中断唤
醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。
μC/OS-II虽然是开源的,但不是免费的。
如果用户购买了JeanJ.Labrosse的著作
《MicroC/OS-II,TheReal-TimeKernel》,则可拥有μC/OS-II的使用权。
如要在产品中使用
μC/OS-II,需与JeanJ.Labrosse创办的Micrium公司联系,获得商业使用授权。
1.4.2μC/OS-II的文件结构
μC/OS-II的文件结构如图1-4所示。
μC/OS-II大致可以分成系统核心部分(包含任务调度)、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 操作系统 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)