1、1.5 嵌入式操作系统 概述 计算机由硬件和软件两部分组成,操作系统OS是配置在计算机硬件上的第一层软件。操作系统可解释或理解为补平硬件差异的界面或者说隐藏硬件,让应用程序可以在上面运行。通过由操作系统统一提供出来的系统界面来写应用程序,无须考虑不同硬件所造成的差异,让程序设计人员能够专注于所擅长领域的开发。从用户的观点看,OS是用户与计算机硬件系统之间的接口,用户在OS的帮助下能够方便,快捷,安全,可靠地操纵计算机硬件和运行自己的程序;从资源管理的观点看,可以把OS视为计算机系统资源的管理者。1.5 嵌入式操作系统 概述监控程序监控程序 在计算机技术发展的初期,为了给用户提供一个与计算机的接
2、口,同时提高计算机的资源利用率,便出现了计算机监控程序,使用户能通过监控程序来使用计算机。随着计算机技术的发展,计算机系统的硬件,软件资源也又进一步发展形成了操作系统,发展到现在,广泛使用的有三种操作系统,即多道批处理操作系统,分时操作系统以及实时操作系统。1.5 嵌入式操作系统 发展监控程序操作系统实时操作系统分时操作系统多道批处理操作系统适用于多个用户共享系统资源适用于计算中心等较大的计算机系统适用于嵌入式设备和有实时性要求的系统中1.5 嵌入式操作系统 实时操作系统 实时操作系统,指一个优先级高的任务能够获得立即的,没有延迟的服务,它不需要等候任何其他任务,而且在得到CPU的使用权后,可
3、一直执行到工作结束或者有更高级的进程出现为止。嵌入式操作系统的体系结构图应用程序文件系统/图形用户接口应用层OS层驱动层驱动程序、硬件抽象层、板级支持包硬件基本模块内存管理 文件管理OS核进程调度扩展模块网络模块 图形驱动数据库模块1.5 嵌入式操作系统 基本概念对基于芯片的开发来说,应用程序一般是一个无限的循环,可称为前后台系统或超循环系统。循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。中断服务程序处理异步事件,这部分可以看成前台行为。前后台系统 基本概念 中断服务程序处理异步事件,这部分可以看成前台行为,前台也叫中断级。时间相关性很强的关键操作一定是靠中断服务程序来保证的。循
4、环中调用相应的函数完成相应的操作,这部分可以看成后台行为,后台也可以叫做任务级。这种系统在处理的及时性上比实际可以做到的要差。ISRISRISRISR后台前台中断服务程序前后台系统1.5 嵌入式操作系统 基本概念代码的临界区也称为临界区,指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代码开始执行,则不允许任何中断打入(这不是绝对的,如果中断不调用任何包含临界区的代码,也不访问任何临界区使用的共享资源,这个中断可能可以执行)。为确保临界区代码的执行,在进入临界区之前要关中断,而临界区代码执行完成以后要立即开中断。代码的临界区1.5 嵌入式操作系统 基本概念程序运行时可使用的软、硬件
5、环境统称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器。资源也可以是一个变量、一个结构或一个数组等。资源任务A共享资源任务B任务C信号量1.5 嵌入式操作系统 基本概念可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。共享资源访问共享资源之前申请信号量其它任务访问受阻而不能使用共享资源得到允许后,才能使用共享资源1.5 嵌入式操作系统 基本概念一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU完全属于该程序自己。每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自
6、己的栈空间。任务1.5 嵌入式操作系统 基本概念当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即CPU寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自已的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入CPU的寄予存器,并开始下一个任务的运行。这个过程就称为任务切换。任务切换1.5 嵌入式操作系统 基本概念多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。内核提供必不可少的系统服务,如信号量、消息队列、延时等。内核1.5 嵌入式操作系统 基本概念调度是
7、内核的主要职责之一。调度就是决定该轮到哪个任务运行。多数实时内核是基于优先级调度法的。每个任务根据其重要程序的不同被赋予一定的优先级。基于优先级的调度法指CPU总是让处在就绪态的优先级最高的任务先运行。然而究竟何时让高优先级任务掌握CPU的使用权,有两种不同的情况,这要看用的是什么类型的内核,是非占先式的还是抢占式的内核。调度1.5 嵌入式操作系统 基本概念非占先式内核要求每个任务自我放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断
8、了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。非抢占式内核1.5 嵌入式操作系统 基本概念当系统响应时间很重要时,要使用抢占式内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。可抢占式内核1.5 嵌入式操作系统 基本概念任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任
9、务越重要,赋予的优先级应越高,越容易被调度而进入运行态。任务优先级1.5 嵌入式操作系统 基本概念中断是一种硬件机制,用于通知CPU有异步事件发生。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:1.在前后台系统中,程序回到后台程序;2.对非抢占式内核而言,程序回到被中断了的任务;3.对抢占式内核而言,让进入就绪态的优先级最高的任务开始运行。中断前后台系统1.5 嵌入式操作系统 基本概念中断ISR任务ISR非占先操作系统任务A任务B任务CISR占先操作系统任务A任务B任务C1
10、.5 嵌入式操作系统 基本概念时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10ms到200ms之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍率越快,系统的额外开销就越大。时钟节拍1.5 嵌入式操作系统 基本概念所有嵌入式操作系统都是多任务的。目前所说的多任务大都是多线程方式或多进程方式。和一般的操作系统一样,嵌入式操作系统的作用也是决定在特定的某一时刻系统应该运行哪一个进程。现在许多CPU都已提供多组寄存器来辅助执行模式的切换,有比较便捷的指令来纪录每个执行程序的情
11、况,操作系统主要是提供调度机制来控制这些执行程序的起始,执行,暂停和结束。多任务管理1.5 嵌入式操作系统 基本概念嵌入式操作系统中的进程状态有3种:运行状态,就绪状态,等待状态。3种状态之间的关系如图,其中进程状态转换的条件与一般操作系统中转换条件类似。多任务管理运行就绪等待新进程结束1.5 嵌入式操作系统 基本概念存储管理 与一般操作系统的存储管理相比,嵌入式操作系统的存储管理要相对简单一些。由于虚拟存储中经常要对页进行换入/换出操作,所以内存中页命中率和换入/换出所耗费的时间严重破坏了整个系统的确定性,而且虚拟系统中需要地址转换表和其他一些数据结构,这样留给程序的内存空间就减少了。总之,
12、虚拟内存管理占用了相当一部分系统资源,因此在系统资源非常有限的嵌入式系统中,一般不采用虚拟内存管理,而采用动态内存管理方式,即当程序的某一部分需要使用内存时,利用操作系统提供的分配函数来处理,一旦使用完毕,可通过释放函数来释放所占用的内存,这样内存可以重复使用。1.5 嵌入式操作系统 实时操作系统的优缺点:程序的设计和扩展变得容易。对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。:但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,25%的CPU额外负荷,以及内核的费用。uClinux是一个完全符合GNU/GPL公约的操
13、作系统,完全开放代码。uClinux从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。它是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。它通常用于具有很少内存或Flash的嵌入式系统。它保留了Linux的大部分优点:。1.5 嵌入式操作系统 常见的嵌入式操作系统 uCLinux1.5 嵌入式操作系统 常见的嵌入式操作系统 是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作。Win CE具有模块化、结构化和基于Win32应用程序接口以及与处
14、理器无关等特点,出色的图形用户界面。在Win CE平台上可以使用Windows 2K/XP上的编程工具(如Visual Basic、Visual C+等)、Win CE1.5 嵌入式操作系统 常见的嵌入式操作系统VxWorks VxWorks操作系统是美国 公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。1.5 嵌入式操作系统 常见的嵌入式操作系统 主
15、要是由ENEA Data AB 下属的ENEA OSE Systems AB负责开发和技术服务的,一直以来都充当着实时操作系统以及分布式和容错性应用的先锋,并保持良好的发展态势。的客户深入到电信,数据,工控,航空等领域,尤其在电信方面,该公司已经有了十余年的开发经验,同诸如爱立信,诺基亚,西门子等知名公司确定了良好的关系。OSE1.5 嵌入式操作系统 常见的嵌入式操作系统 是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。采用了软件组件的方法。每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供
16、清晰的外部接口,对组件的引用就是通过这些接口完成的。由于采用了软件组件的方法,使Nucleus PLUS 的各个组件非常易于替换和复用。Nucleus1.5 嵌入式操作系统 常见的嵌入式操作系统 是RedHat公司开发的源代码开放的嵌入式RTOS产品,是一个可配置、可移植的嵌入式实时操作系统,设计的运行环境为RedHat的GNUPro和GNU开发环境。eCOS的关键技术是操作系统可配置性,允许用户组和自己的实时组件和函数以及实现方式,特别允许eCOS的开发则定制自己的面向应用的操作系统,使eCos能有更广泛的应用范围。eCos1.5 嵌入式操作系统 常见的嵌入式操作系统 C/OS-II是一个源
17、码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。其绝大部分源码是用ANSI C写的,使其可以方便的移植并支持大多数类型的处理器。C/OS-II通过了联邦航空局(FAA)商用航行器认证。C/OS-II占用很少的系统资源,并且在高校教学使用是不需要申请许可证。C/OS-II1.5 嵌入式操作系统 常见的嵌入式操作系统 TRON是指“实时操作系统内核(The Real-time Operating system Nucleux)”,它是在1984年由东京大学的Sakamura博士提出的,目的是为了建立一个理想的计算机体系结构。通过工业界和大学院校的合作,TRON方案正被逐步用到全新概念的计算机体系结构中。uITRON是TRON的一个子方案,它具有标准的实时内核,适用于任何小规模的嵌入式系统,日本国内现有很多基于该内核的产品,其中消费电器较多。目前已成为日本事实上的工业标准。uITRON1.5 嵌入式操作系统 常见的嵌入式操作系统 TRON明确的设计目标使其甚至比Linux更适合于做嵌入式应用,内核小,启动速度快,即时性能好,也很适合汉字系统的开发。另外,TRON的成功还来源于如下两个重要的条件:1.它是免费的 2.它已经建立了开放的标准,形成了较完善的软硬件配套开发环境,较好地形成了产业化。uITRON