7.1 操作系统概述
7.1.1 操作系统的基本概念
操作系统(Operating System,OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。 操作系统的功能包括:管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其他应用软件提供支持,让计算机系统所有资源最大限度地发挥作用;提供各种形式的用户界面,使用户有一个好的工作环境,为其他软件的开发提供必要的服务和相应的接口等。 操作系统管理着计算机硬件资源,同时按照应用程序的资源请求分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。
操作系统在计算机系统中特别重要,汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都依赖于操作系统的支持,取得它的服务。 操作系统已成为现代计算机系统(大、中、小及微型机)中都必须配置的软件。 没有安装软件的计算机称为裸机,而裸机无法进行任何工作;它不能从键盘、鼠标接收信息和操作命令,也不能在显示器屏幕上显示信息,更不能运行可以实现各种操作的应用程序。 图7.1给出了操作系统与计算机软件、硬件的层次关系。

图7.1 操作系统与计算机软件和硬件的层次关系
7.1.2 操作系统的发展
从1946年诞生第一台电子计算机以来,操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足减少成本、缩小体积、降低功耗、增大容量和提高性能等需求,随着计算机硬件的发展,而逐步形成和完善的。
1)早期的操作系统
最初的电脑并没有操作系统,人们通过各种操作按钮来控制计算机,后来出现了汇编语言,操作人员通过有孔的纸带将程序输入电脑进行编译。 这些将语言内置的电脑只能由操作人员自己编写程序来运行,不利于设备、程序的共用。 为了解决这些问题,人们发明了操作系统,这样就很好地实现了程序的共用,以及对计算机硬件资源的管理。
随着计算技术和大规模集成电路的发展,微型计算机迅速发展起来。20世纪70年代中期出现了计算机操作系统。1976年,美国DIGITALRESEARCH软件公司研制出8位的CP/M操作系统。 这个系统允许用户通过控制台的键盘对系统进行控制和管理,其主要功能是对文件信息进行管理,以实现硬盘文件或其他设备文件的自动存取。 此后出现的一些8位操作系统多采用CP/M结构。
2)DOS操作系统
计算机操作系统的发展经历了两个阶段。 第一个阶段为单用户、单任务的操作系统,继CP/M操作系统之后,还出现了C⁃DOS、M⁃DOS、TRS⁃DOS、S⁃DOS和MS⁃DOS等磁盘操作系统。
其中,值得一提的是MS⁃DOS,它是在IBM⁃PC及其兼容机上运行的操作系统,它起源于SCP86⁃DOS,是1980年基于8086微处理器而设计的单用户操作系统。 后来,微软公司获得了该操作系统的专利权,配备在IBM⁃PC机上,并命名为PC⁃DOS。1981年,微软的MS⁃DOS1.0版与IBM的PC面世,这是第一个实际应用的16位操作系统。 微型计算机进入一个新的纪元。1987年,微软发布MS⁃DOS3.3版本,是非常成熟可靠的DOS版本,微软取得个人操作系统的霸主地位。
从1981年问世至今,DOS经历了7次大的版本升级,从1.0版到现在的7.0版,不断改进和完善。 但是,DOS系统的单用户、单任务、字符界面和16位的大格局没有变化,因此它对于内存的管理也局限在640k B的范围内。
3)操作系统新时代
计算机操作系统发展的第二个阶段是多用户多道作业和分时系统。 其典型代表有UNIX、XENIX、OS/2以及Windows操作系统。 分时的多用户、多任务、树形结构的文件系统,以及重定向和管道是UNIX的三大特点。
OS/2采用图形界面,它本身是一个32位系统,不仅可以处理32位OS/2系统的应用软件,也可以运行16位DOS和Windows软件。 它将多任务管理、图形窗口管理、通信管理和数据库管理融为一体。
Windows是Microsoft公司在1985年11月发布的第一代窗口式多任务系统,它使PC机开始进入所谓的图形用户界面时代。 Windows1.X版是一个具有多窗口及多任务功能的版本,但由于当时的硬件平台为PC/XT,速度很慢,所以Windows1.X版本并未十分流行。1987年底,Microsoft公司又推出了MS⁃Windows2.X版,它具有窗口重叠功能,窗口大小也可以调整,并可把扩展内存和扩充内存作为磁盘高速缓存,从而提高了整台计算机的性能,此外它还提供了众多的应用程序。
1990年,Microsoft公司推出了Windows3.0,它的功能进一步加强,具有强大的内存管理,且提供了数量相当多的Windows应用软件,因此成为386、486微机新的操作系统标准。 随后, Microsoft公司发布了Windows3.1版,而且推出了相应的中文版。3.1版较3.0版增加了一些新的功能,受到了用户欢迎,是当时最流行的Windows版本。 1995年,Microsoft公司推出了Windows95。 在此之前的Windows都是由DOS引导的,也就是说,它们还不是一个完全独立的系统,而Windows95是一个完全独立的系统,并在很多方面做了进一步的改进,还集成了网络功能和即插即用功能,是一个全新的32位操作系统。1998年,Microsoft公司推出了Win⁃dows95的改进版Windows98。 Windows98的一个最大特点就是把微软的Internet浏览器技术整合到了Windows95里面,使得访问Internet资源就像访问本地硬盘一样方便,从而更好地满足了人们越来越多的访问Internet资源的需要。 Windows98已经成为目前实际使用的主流操作系统。
从微软1985年推出Windows1.0以来,Windows系统从最初运行在DOS下的Windows 3.X,到风靡全球的Windows9X/Me/2000/NT/XP,几乎成为操作系统的代名词。
4)今日情况
大型机与嵌入式系统使用多样化的操作系统。 在服务器方面,Linux、Unix和Windows Server占据了市场的大部分份额。 在超级计算机方面,Linux取代Unix成为第一大操作系统。截至2012年6月,世界超级计算机500强排名中,基于Linux的超级计算机占据了462个席位,比例高达92%。 随着智能手机的发展,Android和i OS已经成为目前最流行的两大手机操作系统。
2012年,全球智能手机操作系统市场份额的变化情况相对稳定。 智能手机操作系统市场一直被几个手机制造巨头所控制,而安卓的垄断地位主要得益于三星智能手机在世界范围内所取得的巨大成功。 2012年第三季度,安卓的市场份额高达74.8%,2011年则为57.4%。2013年第一季度,它的市场份额继续增加,达到75%。 虽然Android占据领先,但是苹果i OS用户在应用上花费的时间则比Android的长。 虽然在这方面Android的数字一度接近苹果,但是像i Pad3这样的设备发布之后,苹果的数字还是会进一步增长。 Windows Phone系统在8.1版发布后市场份额稳步提高,应用生态正在改善,众多必需应用不断更新,但是速度还略嫌迟缓。 微软收购了诺基亚,发展了许多OEM厂商,并不断发布新机型试图扭转WP的不利局面,小有成效。
7.1.3 操作系统的功能
操作系统通过内部极其复杂的综合处理,为用户提供友好、便捷的操作界面,以便用户不用了解计算机硬件或系统软件的有关细节就能方便地使用计算机。
操作系统的主要任务是有效管理系统资源、提供友好便捷的用户接口。 为实现其主要任务,操作系统具有五大功能:处理机管理、存储器管理、设备管理、文件系统管理和接口管理。
1)处理机管理
在多道程序系统中,由于存在多个程序共享系统资源,就必然会引发对处理机(CPU)的争夺。 如何有效地利用处理机资源,如何在多个请求处理机的进程中选择取舍,就是进程调度要解决的问题。 处理机是计算机中宝贵的资源,能否提高处理机的利用率,改善系统性能,在很大程度上取决于调度算法的好坏。 因此,进程调度成为操作系统的核心。 在操作系统中负责进程调度的程序称为进程调度程序。
2)存储器管理
存储器(内存)管理的主要工作是:为每个用户程序分配内存,以保证系统及各用户程序的存储区互不冲突;内存中有多个系统或用户程序在运行,但要保证这些程序的运行不会有意或无意地破坏别的程序的运行;当某个用户程序的运行导致系统提供的内存不足时,如何把内存与外存结合起来使用、管理,给用户提供一个比实际内存大得多的虚拟内存,而使程序能顺利地执行,这便是内存扩充要完成的任务。 为此,存储的管理应包括内存分配、地址映射、内存保护和扩充。
3)文件系统管理
在操作系统中,负责管理和存取文件信息的部分称为文件系统或信息管理系统。 在文件系统的管理下,用户可以按照文件名访问文件,而不必考虑各种外存储器的差异,不必了解文件在外存储器上的具体物理位置以及如何存放。 文件系统为用户提供了一个简单、统一的访问文件的方法,因此它也被称为用户与外存储器的接口。
4)设备管理
每台计算机都配置了很多外部设备,它们的性能和操作方式都不一样,操作系统的设备管理就是负责对设备进行有效的管理。 设备管理的主要任务是方便用户使用外部设备,提高CPU和设备的利用率。
5)作业管理
通常将需要计算机系统为用户所做的一件事情、要完成的一项工作称为一个作业(如数值计算、文档打印等)。 对这些作业进行必要的组织和管理,可显著提高计算机的运行效率。
6)操作系统接口
为了方便用户使用操作系统,操作系统又向用户提供了“用户与操作系统的接口”。 用户只需要简单操作就能实现复杂的应用处理。 一般来说,操作系统提供了两种接口:
①程序接口:供用户通过程序方式进行操作。 如:用户在编程时使用。
②命令接口:供用户通过交互命令方式进行操作。 如:用户在键盘终端上使用。
7.1.4 操作系统的分类
对操作系统进行严格的分类是困难的。 早期的操作系统,按用户使用的操作环境和功能特征的不同,可分为3种基本类型:批处理系统、分时系统和实时系统。 随着计算机体系结构的发展,又出现了嵌入式操作系统、分布式操作系统和网络操作系统。
1)批处理系统
批处理系统的突出特征是“批量”处理,它把提高系统处理能力作为主要设计目标。 其主要特点是:用户脱机使用计算机,操作方便;批处理,提高了CPU利用率。 它的缺点是无交互性,即用户一旦将程序提交给系统后就失去了对它的控制能力,使用户感到不方便。 例如, VAX/VMS是一种多用户、实时、分时和批处理的多道程序操作系统。 目前这种早期的操作系统已经被淘汰。
2)分时系统
分时系统是指多用户通过终端共享一台主机CPU的工作方式。 为使一个CPU为多道程序服务,将CPU划分为很小的时间片,采用循环轮转方式将这些CPU时间片分配给队列中等待处理的每个程序,由于时间片划分得很短,循环执行得很快,使得每个程序都能得到CPU的响应,好像在独享CPU。 分时操作系统的主要特点是允许多个用户同时运行多个程序,每个程序都是独立操作、独立运行、互不干涉。 现代通用操作系统中都采用了分时处理技术,如图7.2所示,Windows,Linux,Mac OSX等都是分时操作系统。
3)实时操作系统
实时操作系统是指当外界事件或数据产生时,能够快速接收并以足够快的速度予以处理,处理结果能在规定时间之内完成,并且控制所有实时设备和实时任务协调一致地运行的操作系统。 实时操作系统通常是具有特殊用途的专用系统。 实时操作系统实质上是过程控制系统,例如,通过计算机对飞行器、导弹发射过程的自动控制,计算机应及时将测量系统测得的数据进行加工并输出结果,对目标进行跟踪或向操作人员显示运行情况。 在工业控制领域,早期常用的实时操作系统主要有Vx Works,QNX等,目前的操作系统(如Linux,Windows等)经过一定改变后(定制),都可以改造成实时操作系统。

图7.2 苹果计算机Mac OSX操作系统和Linux操作系统桌面
4)嵌入式操作系统
近年来,各种掌上型数码产品(如数码相机、智能手机、平板微机等)成为一种日常应用潮流。 除以上电子产品外,还有更多的嵌入式系统隐身在不为人知的角落,从家庭用品的电子钟表、电子体温计、电子翻译词典、电冰箱、电视机等,到办公自动化的复印机、打印机、空调、门禁系统等,甚至是公路上的红绿灯控制器、飞机中的飞行控制系统、卫星自动定位和导航设备、汽车燃油控制系统、医院中的医疗器材、工厂中的自动化机械等,嵌入式系统已经成为人们日常生活中不可缺少的一部分。
根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。 从中可看出嵌入式系统是软件和硬件的综合体,与应用结合紧密,具有很强的专用性。
绝大部分智能电子产品都必须安装嵌入式操作系统。 嵌入式操作系统运行在嵌入式环境中,它对电子设备的各种软硬件资源进行统一协调、调度和控制。 嵌入式操作系统从应用角度可分为通用型和专用型。 如图7.3所示,常见的通用型嵌入式操作系统有Linux,Vx Works, Windows CE,QNX,Nucleus Plus等;常用的专用型嵌入式操作系统有Android(安卓),Symbian (塞班)等。
嵌入式操作系统具有以下特点:
①系统内核小。 嵌入式系统一般应用于小型电子设备,系统资源相对有限,所以系统内核比其他操作系统要小得多。 例如Enea公司的OSE嵌入式操作系统内核只有5k B。
②专用性强。 嵌入式操作系统与硬件的结合非常紧密,一般要针对硬件进行系统移植,即使在同一品牌、同一系列的产品中,也需要根据硬件的变化对系统进行修改。
③系统精简。 嵌入式系统一般没有系统软件和应用软件的明显区分,要求功能设计及实现上不要过于复杂,这样一方面利于控制成本,同时也利于实现系统安全。
④高实时性。 嵌入式系统的软件一般采用固态存储(集成电路芯片),以提高运行速度。
5)分布式操作系统
分布式操作系统是通过网络将大量计算机连接在一起,以获取极高的运算能力、广泛的数据共享以及实现分散资源管理等功能为目的的一种操作系统。

图7.3 常见嵌入式操作系统工作界面
目前还没有一个成功的商业化分布式操作系统软件,用于学术研究的分布式操作系统有Amoeba,Mach,Chorus和DCE等。 Amoeba是一个高性能的微内核分布式操作系统,可在因特网上免费下载,可以用于教学和研究。
分布式操作系统与个人计算机操作系统有以下不同点:数据共享(允许多个用户访问一个公共数据库);设备共享(允许多个用户共享昂贵的计算机设备);通信(计算机之间通信更加容易);灵活性(用最有效的方式将工作分配到可用的机器中)。
分布式操作系统也存在以下缺点:目前为分布式操作系统而开发的软件还极少;分布式操作系统的大量数据需要通过网络进行传输,这会导致网络可能因为饱和而引起拥塞;分布式操作系统容易造成对保密数据的访问。
6)网络操作系统
网络操作系统是基于计算机网络的操作系统,它的功能包括网络管理、通信、安全、资源共享和各种网络应用。 网络操作系统的目标是用户可以突破地理条件的限制,方便地使用远程计算机资源,实现网络环境下计算机之间的通信和资源共享。 例如Windows Server,Linux, Free BSD等,都是一种网络操作系统。
7.1.5 进程管理
在早期的计算机系统中,一旦某个程序开始运行,它就占用了整个系统的所有资源,直到该程序运行结束,这就是所谓的单道程序系统。 在单道程序系统中,任意一时刻只允许一个程序在系统中执行,正在执行的程序控制了整个系统资源,一个程序执行结束后才能执行下一个程序。 因此,系统的资源利用率不高,大量的资源在许多时间内处于闲置状态。 例如,图7.4所示是单道程序系统中CPU依次运行3个程序的情况:首先程序A被加载到系统内执行,执行结束后再加载程序B执行,最后加载程序C执行,这3个程序不能交替运行。

图7.4 单道程序系统中程序的执行图

图7.5 多道程序系统中程序片段的执行
1)多道程序的执行
为了提高系统资源的利用率,现在的操作系统都允许同时有多个程序被加载到内存中执行,这样的操作系统称为多道程序系统。 从宏观上看,系统中多个程序同时在执行,但从微观上来看,任意一时刻(时间片段)仅能执行一个程序的片段,系统中各个程序片段交替执行。由于系统中同时有多道程序在运行,它们共享系统资源(如CPU、内存等),提高了系统资源的利用率。 但是操作系统必须承担资源管理的任务,操作系统必须对处理机(CPU)、内存等系统资源进行管理。 如图7.5所示,3个程序分为不同的程序片段在CPU中交替运行。 程序A的程序片段执行结束后,就放弃CPU资源,让其他程序片段执行;程序C的程序片段结束后,将CPU资源让给程序A的片段,这样,3个程序就可以交替运行。
2)进程的特征
进程是一个具有独立功能的程序对数据集的一次执行。 简单地说,进程就是程序的运行状态。 进程具有以下特征。
①动态性。 进程是一个动态活动,这种活动的属性随时间变化而变化。 进程由操作系统创建、调度和执行,进程可以等待、执行、撤销和结束,进程与计算机运行有关,计算机关机后,所有进程都会结束;而程序一旦编制成功,不会因为关机而消失。
②并发性。 在操作系统中,同时有多个进程在活动。 进程的并发性提高了计算机系统资源的利用率。 例如,一个程序能同时与多个进程有关联。 如图7.6所示,用IE浏览器程序打开多个网页时,只有一个IE浏览器程序,但是每个打开的网页都拥有自己的进程,每个网页的数据对应于各自的进程,这样就不会出现网页数据显示混乱了。

图7.6 程序与进程之间的关系
③独立性。 进程是一个能够独立运行的基本单位,也是系统资源分配和调度的基本单位。进程获得资源后才能执行,失去资源后暂停执行。
④异步性。 多个进程之间按各自独立的、不可预知的速度生存。 也就是说,进程是按异步方式运行的。 一个进程什么时候被分配到CPU上执行,进程在什么时间结束等,都是不可预知的,操作系统负责各个进程之间的协调运行。 例如,用户会突然关闭正在播放的视频而导致视频播放进程突然结束,其他进程的执行顺序也会做相应的改变。
3)进程的状态和转换
如图7.7所示,进程有3种基本状态:就绪、执行和阻塞。
①就绪状态。 进程获得了除CPU之外的所有资源,做好了执行准备时,就可以进入就绪状态排队,一旦得到了CPU资源,进程便立即执行,即由就绪状态转换到执行状态。

图7.7 进程的状态和转换
②执行状态。 进程进入执行状态后,在CPU中执行进程。 每个进程在CPU中的执行时间很短,一般为几十纳秒,这个时间称为时间片,时间片由CPU分配和控制。 在单CPU系统中,只能有一个进程处于执行状态。 在多核CPU系统中,则可能有多个进程处于同时执行状态(在不同CPU内核中执行)。 如果进程在CPU中执行结束,不需要再次执行时,则进程进入结束状态;如果进程还没有结束,则进入阻塞状态。
③阻塞状态。 进程执行中,由于时间片已经用完,或进程因等待某个数据或事件而暂停执行时,进程进入阻塞状态(也称为等待状态);当进程等待的数据或事件已经准备好时,进程再进入就绪状态。
4)Windows操作系统中进程的运行状态
在Windows7环境下,将鼠标移动到“任务栏”右击,单击“启动任务管理器”菜单,如图7.6所示,可以观察到程序和进程的运行情况。
7.1.6 操作系统的特性
现代操作系统广泛采用并行操作技术,使多种硬件设备能够并行工作。 例如,I/O操作和CPU计算同时进行,在内存中同时存放并执行多道程序等。 以多道程序设计为基础的现代操作系统具有以下主要特征:
1)并发性
并发性是指两个或多个事件在同一时间间隔内发生。 在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却只能有一道程序执行,所以,微观上这些程序只能是分时地交替执行。 倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并发执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。 两个或多个事件在同一时刻发生称为并行,在操作系统中存在着许多并发或并行的活动。 例如,系统中同时有3个程序在运行,它们可能以交叉方式在CPU上执行,也可能一个在执行计算,一个在输入数据,另一个在打印计算结果。
2)共享性
共享是指系统中的资源可供内存中多个并发执行的程序共同使用。 由于资源属性的不同,对资源共享的方式也不同,目前主要有以下两种资源共享方式:①互斥共享方式,是指系统中的某些资源,如打印机、磁带机等,虽然它们可以提供给多个用户程序使用,但为使所打印或记录的结果不造成混淆,应规定在一段时间内只允许一个用户程序访问该资源。 ②同时访问方式。 系统中还有另一类资源,允许在一段时间内由多个用户程序“同时”对它们进行访问。 这里所谓的“同时”往往是宏观上的,而在微观上,这些用户程序可能是交替地对该资源进行访问,例如对磁盘设备的访问。
并发和共享是操作系统两个最基本的特征,它们又互为存在的条件。 一方面,资源共享是以程序的并发执行为条件的,若系统不允许程序并发执行,自然不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,协调好多个程序对共享资源的访问,也必然影响到程序并发执行的程度,甚至根本无法并发执行。
3)虚拟性
虚拟是指将一个物理实体映射为若干个逻辑实体。 前者是客观存在的,后者是虚构的,是一种感觉性的存在,即主观上的一种想象。 例如,在多道程序系统中,虽然只有一个CPU,每次只能执行一道程序,但采用多道程序技术后,在一段时间间隔内,宏观上有多个程序在同时运行。 在用户看来,就好像有多个CPU在各自运行自己的程序。 这种情况就是将一个物理的CPU虚拟为多个逻辑上的CPU,逻辑上的CPU称为虚拟处理机。 类似的还有虚拟存储器、虚拟设备等。
4)不确定性
在多道程序环境下,允许多个程序并发执行,但只有程序在获得所需的资源后方能执行。在单处理机环境下,由于系统中只有一个处理机,因而每次只允许一个程序执行,其余程序只能等待。 当正在执行的程序提出某种资源要求时(如打印请求),而此时打印机正在为其他程序打印,由于打印机属于互斥型共享资源,因此正在执行的程序必须等待并放弃处理机,直到打印机空闲,并再次获得处理机时,该程序方能继续执行。 可见,由于资源等因素的限制,使程序的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行的。 内存中的每个程序在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以及程序以怎样的速度向前推进,每道程序总共需要多少时间才能完成等,都是不可预知的。 因此,在操作系统中存在着不确定性。