计算机软件分为系统软件和应用软件两大类:系统软件用于管理计算机本身和应用程序;应用软件是为满足用户特定需求而设计的软件。操作系统(OperatingSystem,OS)是最基本的系统软件,它和系统工具软件构成了系统软件。但给操作系统下定义是困难的,至今没有一个能公认的统一说法,以下列举了现今操作系统教材中常见的几种观察操作系统的角度。①自顶向下的角度。操作系统是对裸机的第1层软件,是对机器的第1次扩展,为用户提供了一台与实际硬件等价的虚拟机。②自底向上的角度。操作系统是资源管理,在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。③软件分类角度。操作系统是最基本的系统软件,它控制着计算机所有的资源并提供应用程序开发的接口。④系统管理员角度。操作系统合理地组织管理了计算机系统的工作流程,使之能为多个用户提供安全高效的计算机资源共享。⑤程序员角度(即从操作系统产生的角度)。操作系统是将程序员从复杂的硬件控制中解脱出来,并为软件开发者提供了一个虚拟机,从而能更方便地进行程序设计。⑥一般用户角度。操作系统为他们提供了一个良好的交互界面,使得他们不必了解有关硬件和系统软件的细节,就能方便地使用计算机。⑦硬件设计者角度。操作系统为计算机系统功能扩展提供了支撑平台,使硬件系统与应用软件产生了相对独立性,可以在一定范围内对硬件模块进行升级和添加新硬件,而不会影响原先应用软件。总的来讲,传统的操作系统定义如下。操作系统是计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。它的职责常包括对硬件的直接监管,对各种计算资源(如内存、处理器时间等)的管理,以及提供诸如作业管理之类的面向应用程序的服务等。通常来说,现代标准操作系统应具备的功能分别为处理机管理、存储管理、文件管理、设备管理、进程管理、用户界面、网络通信、安全机制等。操作系统根据在用户界面的使用环境和功能特征的不同,一般可分为3种基本类型,即批处理操作系统、分时操作系统和实时操作系统。随着计算机体系的发展,又出现了许多种操作系统,分别是嵌入式操作系统、个人操作系统、网络操作系统、分布式操作系统、云操作系统等。嵌入式操作系统是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。嵌入式操作系统负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发的活动,并且体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。随着Internet技术的发展、信息家电的普及应用以及嵌入式操作系统的微型化和专业化,嵌入式操作系统开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等外,还有以下特点。①可装卸性。开放性、可伸缩性的体系结构。②强实时性。嵌入式操作系统实时性一般较强,可用于各种设备控制当中。③统一的接口。提供各种设备驱动接口。④操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。⑤提供强大的网络功能,支持TCP/IP及其他协议,提供TCP/UDP/IP/PPP支持及统一的MAC访问层接口,为各种移动计算设备预留接口。⑥强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要求负责系统管理的嵌入式操作系统具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。⑦固化代码。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。⑧更好的硬件适应性,也就是良好的移植性。嵌入式操作系统与嵌入式系统密不可分。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4个部分组成。国外嵌入式操作系统已经从简单走向成熟,主要有VxWorks、QNX、PalmOS、WindowsCE等。国内的嵌入式操作系统研究开发有2种类型,一类是基于国外操作系统二次开发完成的,如海信的基于WindowsCE的机顶盒系统;另一类是中国自主开发的嵌入式操作系统,如凯思集团公司自主研制开发的嵌入式操作系统HopenOS(“女娲计划”)等。设备、嵌入式操作系统以及用户的应用程序4个部分组成。国外嵌入式操作系统已经从简单走向成熟,主要有VxWorks、QNX、PalmOS、WindowsCE等。国内的嵌入式操作系统研究开发有2种类型,一类是基于国外操作系统二次开发完成的,如海信的基于WindowsCE的机顶盒系统;另一类是中国自主开发的嵌入式操作系统,如凯思集团公司自主研制开发的嵌入式操作系统HopenOS(“女娲计划”)等。嵌入式Linux是以Linux为基础的嵌入式操作系统,被广泛地使用在移动电话、PDA、媒体播放器以及众多消费性电子装置中。在过去,嵌入式应用通常使用专用的组合语言程式码,开发者必须撰写所有的硬件驱动程式以及接口。自从嵌入式Linux出现之后,以自由软件为主的核心与公用程序被放进嵌入式装置的硬件资源中。典型的嵌入式Linux安装大概需要2MB的系统内存。嵌入式Linux与其他嵌入式操作系统相比具有如下优点。①开放源码。②所需容量小(最小的安装大约需要2MB)。③无须版权费用。④成熟且稳定(经历许多年的发展与使用)。⑤良好的支援。嵌入式Linux操作系统与普通的Linux操作系统在功能与结构上没有很大的区别,作为嵌入式Linux操作台,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。其性能稳定,裁剪性很好,开发和使用都很容易。因此,要了解嵌入式Linux必须首先了解Linux操作系统。Linux是一个世界上最受欢迎的自由计算机操作系统内核,1991年是由芬兰人LinusTorvalds为尝试在英特尔x86架构上提供只有免费的类UNIX操作系统而开发的。技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完成的操作系统,还需要加载库文件、应用程序等,才可以形成完整的操作系统。一套基于Linux内核的完整操作系统叫做Linux操作系统。Linux操作系统具备结构清晰、功能简介等特征,逐渐成为一个稳定可靠、功能完善的操作系统。作为一个操作系统,Linux几乎满足当今UNIX操作系统的所有要求,简单说,Linux具有以下特点。1.完全免费Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码,这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让Linux吸收了无数程序员的精华,不断壮大。2.开放性开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡是遵循国际标准开发的硬件和软件,都能彼此兼容,可方便地实现互连。3.支持多用户访问和多任务编程Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外,Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。4.良好的用户界面Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即Shell。Shell有很强的程序设计能力,用户可方便地使用它编制程序,从而为用户扩充系统功能提供了更高级的手段。系统调用给用户提供编程时使用的界面,用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面,可利用鼠标、菜单、窗口和滚动条等设施,给用户呈现一个直观、易操作、交互性强的图形化友好界面。5.支持多种文件系统Linux能支持多种文件系统。目前支持的文件系统有EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系统是EXT2,它的文件名长度可达255字符,并且还有许多特有的功能,使它比常规的UNIX文件系统更加安全。6.采用虚拟内存管理技术Linux支持请求页式虚拟内存管理技术,这意味着只有当前运行的或者必须的代码和数据,才会被装入到系统的物理内存。为了进一步优化内存,Linux还支持内存缓冲机制,空闲的内存可用于磁盘和设备缓存,从而加速了对代码和数据的访问,并能根据内存的使用情况自动对缓存的大小进行调整。7.设备独立性设备独立性是指操作系统把所有外部设备当成文件来看待,只要安装设备的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以适应新增加的外部设备。8.丰富的网络功能完善的并且内置在核心的网络功能是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统通常不包含如此紧密地和内核在一起的连接网络的能力,用于通信和联网的实用程序也不多。支持Internet是网络功能之一:Linux免费提供了大量支持Internet的软件,用户可以通过这类软件,同世界上其他人进行网络通信。文件传输是网络功能之二:用户能通过一些Linux命令完成内部信息或文件的传输。远程访问是网络功能之三:Linux不仅允许进行文件和程序传输,还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,技术人员能有效地为多个系统服务。9.可靠的系统安全Linux采取了许多安全技术措施,包括对读/写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。10.良好的可移植性可移植性是指将操作系统从一个平台转移到另一个平台时,它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。作为一个完整的操作系统,Linux具有稳定而强大的功能,想要访问任何非自己的存储器空间的进程只能通过系统调用来达成。一般进程是处于用户模式底下,而运行系统调用时会被切换成内核模式,所有的特殊指令只能在内核模式运行,此措施让内核可以完美管理系统内部与外部设备,并且拒绝无权限的进程提出的请求。因此理论上任何应用程序运行时的错误,都不可能让系统崩溃。Linux的架构如图5-1所示。1.支持多种硬件平台由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如x86、ARM、MIPS、PowerPC等,并具有良好的可移植性。另外,还需要支持种类繁多的外部设备。Linux支持以上几乎所有的主流芯片,并且还在不断地被移植到新的芯片上。2.占有较少的硬件资源由于多数嵌入式系统具有成本敏感性,处理器速度较低,存储器空间较少,这要求嵌入式操作系统体积小、速度快。Linux体系结构比较灵活,易于裁减,可以小到2MFlash或4MRAM。3.高可定制性由于不同的嵌入式应用对系统要求各不相同,这要求嵌入式操作系统具备