第4章嵌入式操作系统153•嵌入式操作系统概述•嵌入式Linux操作系统•嵌入式操作系统的相关概念•常见的嵌入式操作系统•嵌入式实时操作系统424.1嵌入式操作系统概述•嵌入式操作系统是整个嵌入式软件的灵魂,起到承上启下的作用,而且往往也是嵌入式软件中最复杂的部分。•嵌入式操作系统的功能接口却相对标准化和统一,功能差异性很大的嵌入式系统往往可以采用相同的嵌入式操作系统来进行设计。嵌入式应用软件嵌入式操作系统嵌入式软件嵌入式硬件嵌入式操作系统概述(续)•什么是嵌入式操作系统?–嵌入式操作系统(EmbeddedOperatingSystem,EOS)是一种支持嵌入式系统应用的操作系统软件,在嵌入式系统(包括硬、软件系统)中极为重要,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。•嵌入式操作系统的作用?–EOS负责嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式操作系统概述(续)•嵌入式操作系统的发展趋势–目前,市面上已经有一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。•嵌入式操作系统的特点?–与通用操作系统相比,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。4.1.1操作系统的发展•从1946年诞生第一台电子计算机–计算机硬件的迅速发展,极大地推动了操作系统(简称OS)的形成和发展。•首个计算机操作系统出现于20世纪70年代中期–1976年美国DIGITALRESEARCH软件公司研制出8位的CP/M操作系统。•随着计算技术和大规模集成电路的发展,微型计算机迅速发展起来,相应地针对其应用的操作系统也相继面世。4.1.1操作系统的发展•批处理(BatchProcessing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。•批处理操作系统的特点是:多道和成批处理。监控程序操作系统多道批处理操作系统分时操作系统实时操作系统适用于计算中心等较大的计算机系统适用于多个用户共享系统资源适用于嵌入式设备和有实时性要求的系统中在此实时操作系统是介绍的重点时间先后4.1.1操作系统的发展•分时(TimeSharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有别的用户存在。•分时系统具有多路性、交互性、“独占”性和及时性的特征。4.1.1操作系统的发展•实时操作系统(RealTimeOperatingSystem,RTOS)是指使计算机能及时响应外部事件的请求在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。•实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。•其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。4.1.2嵌入式操作系统的特点•嵌入式操作系统在本质上也是一种操作系统•但由于嵌入式操作系统的应用环境不同,一个典型的嵌入式操作系统还应该具备下列特点。–可裁剪性。嵌入式操作系统具有开放性、可伸缩性的体系结构。–强实时性。嵌入式操作系统的实时性一般较强,可用于各种设备控制中。–统一的接口。提供各种设备驱动接口。–提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口,从而拓展了嵌入式操作系统的应用范围,例如可以在嵌入式操作系统中实现Web服务器功能等。4.1.2嵌入式操作系统的特点•强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要求负责系统管理的嵌入式操作系统具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。•代码固化。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中,辅助存储器在嵌入式系统中很少使用,因此嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。•更好的硬件适应性,即嵌入式操作系统具有良好的移植性。4.1.3嵌入式操作系统与通用操作系统的区别1.地址空间上的区别-通用操作系统充分利用了CPU提供的内存管理机制(MMU单元),实现了一个用户进程或应用程序独立拥有一个地址空间的功能。这样每个进程之间相互独立,互不影响,即一个进程的崩溃不会影响到另外一个进程,一个进程空间内的数据不能被另外的进程引用。-嵌入式操作系统中,采用的却是操作系统和应用程序共用一个地址空间的内存模型。4.1.3嵌入式操作系统与通用操作系统的区别2.内存管理上的区别-通用计算机操作系统一般实现了虚拟内存功能,即通过CPU提供的MMU机制,将磁盘上的部分空间当作内存使用,以便扩充应用程序可使用的内存空间。-在嵌入式操作系统中不会实现虚拟内存功能的主要原因如下:–(1)通常情况下,嵌入式系统没有本地存储介质,即使有数量也很有限,不具备实现虚拟内存功能的基础。–(2)虚拟内存的实现是在牺牲效率的基础上完成的,一旦应用程序访问的内存内容不在实际的物理内存中,就会引起操作系统的一系列行为动作,这样会大大降低应用程序的执行效率,使得应用程序的执行时间无法预测4.1.3嵌入式操作系统与通用操作系统的区别3.应用方式上的区别•在使用通用操作系统之前的首要步骤是进行安装•与普通计算机不同,嵌入式系统的硬件都是事先配置好的,其驱动程序、配置参数等往往与嵌入式操作系统连接在一起,因此嵌入式操作系统不必自动检测硬件,也就不需要存在安装的过程。4.2嵌入式操作系统的相关概念代码临界段•临界区内存放的一般是被一个以上的进程或线程共用的数据•临界区内的数据一次只能同时被一个进程使用,•当一个进程使用临界区内的数据时,其他需要使用临界区数据的进程将进入等待状态。•处于临界段的代码为防止被中断程序打断,迫使用户必须先关闭所有的中断全局使能位,等执行完毕后再打开它。•临界段的代码不但有逻辑要求,还有时间要求。•一般实时操作系统需要先禁止中断再访问代码的临界段,并且在访问完毕后重新允许中断。4.2嵌入式操作系统的相关概念资源与共享资源•程序运行时可使用的软、硬件环境统称为资源。资源可以是输入/输出设备,例如打印机、键盘、显示器,也可以是一个变量、一个结构或一个数组等。•可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,我们称之为互斥。4.2嵌入式操作系统的相关概念互斥(Mutex)•互斥是指一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行•不允许两个以上的共享该资源的并发进程同时进入临界区。•一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,当占有该互斥体对象的线程释放该对象时,才能唤醒另外一个内核线程,访问被保护的资源。4.2嵌入式操作系统的相关概念任务与任务切换•一个任务(也称为一个线程)是指一个简单的程序,该程序可以认为CPU完全属于它。•当多任务内核决定运行另外的任务时,将保存正在运行任务的当前状态,即CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自已的栈区之中。入栈工作完成以后,系统会将下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。4.2嵌入式操作系统的相关概念内核•在多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。•微内核的思想是把尽量少的操作系统机制放到内核模块中实现,而把尽量多的操作系统功能以单独进程或线程的方式实现,这样便于操作系统的体系结构进行扩展。•由于嵌入式操作系统对效率要求较高,这种微内核的设计方式不太适合嵌入式操作系统的设计。•大内核的设计思路是把尽可能多的操作系统功能在内核模块中实现,在操作系统加载时将这些内核模块加载到系统空间中。这种大内核模型适合用在追求效率的嵌入式操作系统开发中。4.2嵌入式操作系统的相关概念调度•调度就是决定该轮到哪个任务运行了,这也是内核的主要职责之一。多数实时内核是基于优先级调度法,每个任务根据其重要程度的不同被赋予一定的优先级,CPU总是让处于就绪状态的优先级最高的任务先运行。•然而究竟何时让高优先级任务掌握CPU的使用权–在可抢占方式下,操作系统以时间片为单位来完成进程的调度。针对每个进程,一次只能运行一个或几个时间片,一旦时间片消耗完毕,操作系统就会强制其暂停运行,进而选择其他重新获得时间片的进程投入运行。–在不可抢占方式下,进程会一直运行,操作系统不会强制剥夺其运行权,而是等待其自行放弃运行权限或是发生系统调用。4.2嵌入式操作系统的相关概念•堆和栈–从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量、static变量。–在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。–从堆上分配,亦称动态内存分配。程序在运行时用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。4.3常见的嵌入式操作系统PalmOS•PalmOS由著名的网络设备制造商——3COM旗下的PalmComputing掌上电脑公司研发、推出。•由于充分考虑了掌上电脑内存相对较小的情况,PalmOS被设计为占用内存很小,而基于该操作系统编写的应用程序所占的空间也很小•由于Palm产品的最大特点是使用简便、机体轻巧,因此决定了PalmOS具有以下特点。(1)操作系统的节能(2)合理的内存管理(3)PalmOS的数据是以数据库的格式存储4.3常见的嵌入式操作系统WindowsCE•WindowsCE是微软开发的一个开放的、可升级的32位嵌入式操作系统(实际上是精简的Windows95),主要应用于掌上电脑类的电子设备。•WindowsCE的图形用户界面相当出色。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。•WindowsCE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows95/98,但它是基于Win32API重新开发的、新型的信息设备平台。•WindowsCE的设计目标是模块化及可伸缩性、实时性能好、通信能力强大、支持多种CPU。4.3常见的嵌入式操作系统WindowsCE的嵌入式系统通常为某个特定用途而设计,并在不联机的情况下工作。它要求所使用的操作系统体积较小;有对中断的响应功能;操作系统的基本内核需要至少200KB的ROM。WindowsCE的特点如下:•具有灵活的电源管理功能,包括睡眠/唤醒模式。•使用了对象存储(ObjectStore)技术,包括文件系统、注册表及数据库。它还具有很多高性能、高效率的操