第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作为计算机系统资源的管理者一个计算机系统就是一组资源,这些资源用于对数据的移动、存储、处理,以及对这些功能的控制,而OS负责管理这些资源。OS对计算机资源的管理有以下几个方面。(1)处理机管理—用于分配和控制处理机。(2)存储器管理—主要负责内存的分配与回收。(3)I/O设备管理—负责I/O设备的分配与操纵。图1-1OS作为接口的示意图2嵌入式操作系统C/OS-II及应用开发(4)文件管理—负责文件的存取、共享和保护。第1章嵌入式操作系统概述31.1.2操作系统的特征操作系统的种类很多,不同的操作系统分别具有各自的特征,一般来说,采用了多道程序设计技术的操作系统具有如下4个基本特征。1.并发在处理机系统中,并发是指宏观上有多道程序同时运行,但在微观上是交替执行的。多道程序并发执行能提高资源利用率和系统吞吐量。多个进程的并发执行由操作系统统一控制,为保证并发进程的顺利运行,操作系统提供了一系列管理机制。2.共享共享是指计算机系统中的资源可被多个并发执行的用户程序或系统程序共同使用,而不是被其中某一个程序所独占。共享的原因如下。(1)用户或任务独占系统资源将导致资源浪费。(2)多个任务共享一个程序的同一副本,而不是分别向每个用户提供一个副本,可以避免重复开发。并发和共享是紧密相关的。一方面,资源共享是以进程的并发执行为条件的,若不允许进程的并发执行,就不会有资源的共享;另一方面,进程的并发执行以资源共享为条件,若系统不运行共享资源,程序就无法并发执行。3.异步在多道程序系统中,多进程并发执行,但在微观上,进程是交替执行的,因此进程以“走走停停”的不连续方式运行。由于并发运行环境的复杂性,每个进程在何时开始执行,何时暂停,以怎样的速度向前推进,多长时间完成,何时发生中断,都是不可预知的,此种特征称为异步。4.虚拟虚拟指的是通过某种技术把一个物理实体映射为多个逻辑实体,用户程序使用逻辑实体。逻辑实体是使用户感觉上有但实际上不存在的事物,例如在分时系统中,虽然只有一个CPU,但在分时系统的管理下,每个终端用户都认为自己独占一台主机。此时,分时操作系统利用分时轮转策略把一台物理上的CPU虚拟为多台逻辑上的CPU,也可以把一台物理I/O设备虚拟为多台逻辑上的I/O设备,方法是用内存中的输入输出缓冲区来虚拟物理设备,用户程序进行输入输出时,其实是在和缓冲区进行输入输出。1.1.3操作系统的发展操作系统最早产生于1955年,至今已发展了50多年,其发展历程可粗略地划分为4代。第一代操作系统是单任务自动批处理操作系统,通过作业控制语言使多个程序可自动4嵌入式操作系统C/OS-II及应用开发在计算机上连续运行,在上一个程序结束与下一个程序开始之间不需人工装卸和干预,第一代操作系统通过避免手工装卸而大大提高了机器利用率,但程序执行过程中输入输出数据时,主机空闲降低了处理机利用率。第二代操作系统是多任务和多用户操作系统,最大特征是采用并发技术,使得当一个程序在进行I/O操作时,CPU可转去执行其他程序,从而使多个程序并发执行,CPU和I/O并行工作。第二代操作系统通过并发技术大大提高了机器利用率,但并发技术的实现代价是使操作系统的复杂程度和功能规模大大增加,从而增加了操作系统的开发周期和开发成本,并影响了操作系统的正确性和可靠性。第三代操作系统是结构化与小型化,其典型特征是重视操作系统的结构和功能精简。第三代操作系统还具有网络特征。第四代操作系统是网络和开放系统、并行与分布操作系统。总之,操作系统经过几十年的发展,就单机环境下的系统而言,其基本原理和设计方法已趋成熟。出现了许多流行的嵌入式系统,如UNIX,WindowsNT等。20世纪80年代后,随着通用微处理器芯片的高速发展,个人计算机和工作站系统得到了迅猛的发展,强烈冲击着传统小型计算机、中大型计算机的市场。相应地,微型计算机及工作站的操作系统获得了快速的发展和应用,如MS-DOS、Windows、Solaris等。从操作系统的发展历史看,推动其发展的动力主要是计算机系统的不断完善和计算机应用的不断深入。随着计算机应用技术的发展,适应不同应用系统的操作系统也相继出现,并在应用中得以不断发展。嵌入式操作系统:主要伴随着个人数字助理PDA、掌上电脑、电视机顶盒、智能家电等设备的发展,对操作系统在功能和所占存储空间大小的权衡上提出了新的要求,对实时响应也有较高的要求。实时操作系统:对操作系统的实时响应要求从来就没有停止过,要求计算机的最大响应时间也越来越短,任务调度时机、算法要求越来越高。特别是针对操作系统的实时性研究还在不断发展中。并行操作系统:随着高性能通用微处理器的发展,人们已经成功地提出了用它们构造“多处理机并行”的体系结构。网络操作系统和分布式操作系统:就目前情形而言,计算机网络系统也还在不断完善中,基于Client-Server模型的分布式系统也已不断走向应用,完全分布式的系统还未成形,仍将是研究的热点问题。1.2操作系统的体系结构操作系统的体系结构设计是指选择合适的结构,按照这一结构可以对操作系统进行分层、分模块或资源等方式的功能划分;通过逐步的分解、抽象和综合,使操作系统功能完备、结构清晰。常用的操作系统体系结构有:层次结构的操作系统和微内核结构的操作系统。第1章嵌入式操作系统概述51.2.1层次结构层次结构的操作系统的设计思想是,按照操作系统各模块的功能和相互依存关系,把系统中的模块分为若干层次,每一层(除底层模块)都建立在它下面一层的基础上,每一层仅使用其下层模块提供的服务,将系统问题分解成多个子问题,然后分别解决。操作系统的层次结构如图1-2所示。6嵌入式操作系统C/OS-II及应用开发图1-2操作系统层次结构的模型一个操作系统应划分为多少层、各层处于什么位置是层次结构操作系统设计的关键问题,没有固定的模式。一般原则是,接近用户应用的模块在上层,接近硬件的驱动模块在下层。处于下层的程序模块往往称为操作系统的内核。这部分程序模块包括中断处理模块、各种驱动模块和运行频率较高的模块(如时钟管理程序、进程调度程序、低级通信模块、内存管理模块等)。为提高操作系统的执行效率,操作系统内核一般常驻内存。层次型结构技术在操作系统设计中的应用比较成功,许多典型的商用操作系统都是基于这种结构实现的,如MS-DOS、早期的Windows及传统的UNIX等。1.2.2微内核结构近年来备受关注的一个概念是微内核。微内核是一个小型的操作系统核心,它为模块化扩展提供了基础。微内核的设计思想是,为了有效地提高系统的可靠性,并使系统具备良好的可适应性,需要将核心模块设计精练化。具体做法是,将原来内核模块中的内容精简,把一些原来属于核心模块的功能提出到外部去完成,只将操作系统最主要的功能包含在内核中,使内核尽量简单,形成微内核的结构。微内核结构用一个水平分层的结构代替了传统的纵向分层的结构,在微内核外部的操作系统部件被当做服务器进程实现,它们可以通过微内核传递消息来实现相互之间的交互。因此,微内核起着信息交互、验证信息、在部件间传递信息并授权访问硬件的作用。微内核还执行保护功能,除非允许交换,否则它阻止信息传递。微内核结构的模型如图1-3所示。运行在核心态的微内核,提供所有操作系统都具有的基本操作,如线程调度、虚拟存储、消息传递、设备驱动、原语操作、中断处理等,这些部分通常采用层次结构并构成了基本操作系统。运行在用户态,并以客户-服务器方式运行的进程层,除内核部分外,操作系统的其他部分都被分成若干个相对独立的进程,每个进程实现一组服务,称为服务进程。这些服务进程可以提供各种系统功能,如文件系统服务以及网络服务等。服务进程的任务第1章嵌入式操作系统概述7是检查是否有客户提出要求服务的请求,并在满足客户进程的请求后将结果返回。8嵌入式操作系统C/OS-II及应用开发图1-3微内核结构的模型客户进程与服务进程之间通信时采用消息通信,客户进程发出消息,内核将消息传给服务进程,服务进程执行相应的操作,其结果又通过内核用发消息的方式返回给客户进程。基于微内核的操作系统具有如下特征。微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备以及其他服务,如文件管理、网络支持等,通过接口连到微内核。与此相反,内核是集成的,比微内核更大。微内核具有很好的扩展性,并可简化应用程序开发。用户只运行他们需要的服务,这有利于减少磁盘空间和存储器需求。厂商可以很容易地将微内核移植到其他处理器平台,并在上面增加适合其他平台需要的模块化部件,例如文件服务器、工程应用。微内核和硬件部件有接口,并向可安装模块提供一个接口。在微内核中,进程通过传递消息或运行“线程”来发生相互作用。线程为将一个任务分解为多个子任务提供了途径,在多处理器环境下,线程可以在不同的处理器上独立运行。1.3嵌入式操作系统概述嵌入式操作系统又称实时操作系统,是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬件、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。嵌入式操作系统具有通用操作系统的特点,如能够有效管理越来越复杂的系统资源;能够把底层虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。嵌入式操作系统能够负责嵌入式系统的全部硬件、软件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。1.3.1嵌入式操作系统的演变近10年来,嵌入式操作系统得到飞速的发展,从支持8位微处理器到16位、32位甚至64位微处理器;从支持单一品种的微处理器芯片到支持多品种微处理器芯片;从只有内第1章嵌入式操作系统概述9核到除了内核外还提供其他功能模块,如文件系统,TCP/IP网络系统,窗口图形系统等。随着嵌入式系统应用领域的扩展,目前嵌入式操作系统的市场在不断细分,出现了针对不同领域的产品,这些产品按领域的要求和标准提供特定的功能。嵌入式系统经历了30多年的发展,尤其是近几年来,计算机、通信、消费电子的一体化趋势日益明显,嵌入式技术已成为一个研究热点,嵌入式系统也给众多商家带来了良好商机。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显著变化。新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式操作系统本身,同时还要提供强大的软件开发支持包。通用计算机上使用的新技术、新观念开始逐步