目录
1.1操作系统的概念
1.1.1计算机体系结构
一个完整的计算机系统由计算机硬件和计算机软件两部分组成,如图1-1所示。
图1-1 计算机系统的构成
它们是一个统一的整体,各个组成部分之间相互协调、相互制约,共同完成所分配的各项任务。计算机硬件是指构成能正常工作的计算机所需要的各种硬件设备,即“看得到、摸得着”的实际物理部件,包括键盘、显示器等,它们是计算机系统的物质基础。按照不同的功能,硬件设备通常由五大部分组成:输入设备、输出设备、存储器、运算器和控制器,如图1-2所示,其中实线表示控制信号,虚线表示数据传输。
图1-2 计算机硬件系统的结构
计算机硬件设备中,运算器和控制器通常被称为中央处理器(CPU),它与存储器一起称为“主机”。CPU是硬件系统的核心,通过执行程序或软件方式,实现运算,并直接控制计算机各个部件的工作。主存储器(俗称内存)用于存放系统中运行的程序和数据。输入和输出设备(统称外围设备或外部设备)用于实现计算机系统与外界信息交换的各种硬件设备,包括键盘、鼠标、打印机等。
计算机软件是指由计算机硬件执行,以完成特定任务的程序及文档数据。程序是计算任务的处理对象和处理规则的描述,而文档则是为了便于了解程序所需的说明性的资料。计算机软件可分为系统软件和应用软件。计算机用户通过应用软件访问、使用计算机,使其为自己服务,应用软件则通过系统软件管理、控制计算机的硬件设备。
系统软件是负责管理计算机系统中各种硬件,使得它们协调工作的软件,其主要功能是简化程序设计,扩大计算机处理能力,提高计算机使用效率,充分发挥各种资源功能的作用。系统软件是应用软件与计算机硬件之间的接口,它将计算机硬件作为一个黑盒子,提供给计算机用户和其他应用软件,使得他们在使用或访问过程中,不需要考虑每个底层计算机硬件设备是如何具体工作的。系统软件主要包括操作系统和系统应用软件。操作系统是紧挨着硬件的第一层软件,直接控制和管理硬件设备,也是对硬件功能的首次扩充,其他软件则建立在操作系统之上。系统应用是由一些系列语言处理程序和系统服务程序构成,以扩充计算机系统的功能。通常情况下,它们存放在磁盘或其他外部存储设备上,仅当需要运行时,才被装入内存。系统应用软件主要为用户编制应用软件、加工和调试程序以及处理数据提供必要服务。常用的系统应用软件包括语言处理程序、编译软件,以及各种服务程序。
应用软件处于计算机层次结构的最外层的应用程序。它们是计算机用户为了使用计算机完成某一特定工作,或者解决某一具体问题而编制的程序,以满足应用要求、服务于特定的用户。应用软件主要通过调用系统软件所提供的接口服务,实现自己的特定功能,常用的应用软件包括办公软件、售票系统、浏览器、聊天软件、游戏软件等。
计算机系统中,硬件和软件是相辅相成、缺一不可的。计算机硬件是计算机的躯体和基础,计算机软件是计算机的头脑和灵魂,即计算机硬件是构成计算机系统所必须配置的设备,而计算机软件则只会计算机系统按照特定的要求进行工作。因此,没有软件的计算机和缺少硬件的计算机都不能称为完整的计算机系统。
1.1.2操作系统的定义
随着信息技术的快速发展,计算机系统越来越复杂。这需要一个自动化的管理机构,组织各种硬件资源,提高其利用率,并实现各类软件资源的查找和调用,以方便用户使用计算机。操作系统就扮演了这种角色。
操作系统在计算机系统中具有举足轻重的作用,它不仅是硬件与所有其他软件直接的接口,而且任何电子计算机都必须配置操作系统,才能构成一个可以协调运转的计算机系统。只有在操作系统的指挥控制下,各种计算机资源才能被分配给用户使用,也只有在操作系统支撑下,其他软件才得以正常运行。没有操作系统,任何应用软件均无法运行。由此可见,操作系统实际上是一个计算机系统中硬、软件资源的总指挥部。
操作系统与软件、硬件的关系如图1-3,其中裸机是指没有配备任何软件的计算机,它是构成计算机系统的物质基础,不能直接被用户使用;操作系统是靠近硬件的软件层,其功能是直接控制和管理系统各类资源。在操作系统的管理和控制下,计算机硬件的功能才能发挥充分。
综上所述,操作系统是控制和管理计算机系统硬件和软件资源、合理地组织计算机工作流程,以方便用户使用的程序的集合。具体而言,可从一下几个方面理解操作系统:
- 从用户的角度看,操作系统是对计算机硬件的首次扩充,是计算机系统中最复杂的系统软件,其他的软件必须在操作系统的支撑、管理和控制下才能正常运行,完成各自功能。
- 从系统结构的角度看,操作系统是一种层次、模块结构的程序集合,每个模块或层次都有特定的功能及含义。操作系统在设计和开发时,采取层次化、模块化方式实现,使计算机系统能够高效的工作。
- 从人机交互方式的角度看,操作系统是用户与计算机之间的接口。它提供了一个友好、方便的操作平台,使得用户无须了解硬件的具体特性,就可以通过操作系统提供的接口服务完成自己的任务。
操作系统是一种庞大的系统软件,由大量复杂的程序和众多的数据组合而成。操作系统具有层次和模块的特点,其内部分为三个层次:操作系统对象、控制和管理的软件集合、用户接口。操作系统的具体层次结构如图1-4所示,其中层与层之间通过调用和接口这两种方式进行通信服务,即每一层对其直接的上一层提供接口,对其直接的下一层进行调用。
用户接口位于最外层,它是用户与计算机之间的桥梁,为用户提供相应的接口程序或命令,通过调用下层的程序,供用户使用。控制和管理的软件集合是整个操作系统的核心部分,操作系统的绝大部分功能都是在这一层实现的。操作系统对象描述具体的物理设备的相关性质、功能特性等。
图1-4 操作系统的层次模型
1.2操作系统的发展过程
1.2.1操作系统的形成和发展
操作系统的形成迄今已有60多年历史,其发展历程与硬件系统结构的发展有着密切的联系。电子计算机最初(真空管时代)没有配备操作系统。20世纪50年代中期(晶体管时代)出现了第一个简单的批处理操作系统,60年代中期(集成电路时代)产生了多道程序批处理系统,随后(大规模和超大规模集成电路时代)除了基于多道程序的分时系统,70年代(微机和网络的出现)产生了微机操作系统和网络操作系统,之后又出现了分布式操作系统。在这短短的60多年中,操作系统经历了从无到有、从简单到复杂的过程,其主要动力归结为以下四个方面:
- 不断提高计算机资源利用率的需求。计算机发展初期,计算机系统特别昂贵,因此,需要千方百计提高计算机系统中的各种资源的利用率,推动人们不断发展操作系统的功能,由此产生批处理系统。
- 方便用户操作的需求。资源利用率不高的问题解决后,人们想方设法改善用户上机操作和调试程序的条件。由此,操作系统逐渐由命令行方式发展到图形用户界面,形成了允许人机交互的分时系统,使之变得更加友好、易用。
- 计算机的硬件不断更新换代。硬件的不断更新,使得计算机性能不断提高,推动操作系统的性能和功能不断改进和完善,如微机操作系统也从8位,发展到16位、32位、64位。
- 计算机体系结构的不断发展。计算机体系结构的发展也推动了操作系统的发展,如操作系统也单处理机操作系统发展到多处理机操作系统;随着网络的发展,操作系统也出现了网络操作系统和分布式操作系统。
目前,操作系统的种类繁多,根据应用领域,可分为桌面操作系统、服务器操作系统、主机操作系统、嵌入式操作系统;根据所支持的用户数目,可分为单用户操作系统,多用户操作系统;根据源代码的开发程度,可分为开源操作系统和不开源操作系统;根据硬件结构,可分为网络操作系统、分布式系统、多媒体系统;根据环境和对作业的处理方式,可分为批处理系统、分时系统、实时系统。
操作系统的发展过程经历了手工阶段(无操作系统)、批处理操作系统、多道程序系统、分时操作系统、实时操作系统、通用操作系统、网络操作系统、分布式操作系统和嵌入式操作系统等。下面主要介绍几种典型的操作系统。
1.2.2手工操作
1.手工操作阶段
20世纪40年代至50年代中期,计算机系统没有配置操作系统,也没有任何软件,用户通过手工操作方式操控计算机,独占计算机的全部资源。
手工操作的处理过程:程序员首先将存储了程序和数据的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动并运行程序,计算过程完成后,打印机输出计算结果,最后用户卸下纸带(或卡片),并取走结果。整个过程完成后,才允许下位用户使用计算机。
手工操作的特点:用户只能串行工作,工作时独占计算机,导致资源利用率低。此外,CPU等待手工操作,因而CPU利用率很低。
早期的计算机运算速度相对较慢,手工操作方式是可行的。随着晶体管时代的到来,计算机的运行速度得到了很大提升,手工操作的慢速度和计算机的高速度不匹配,严重降低了系统资源的利用率,出现了所谓的人机矛盾。
2.脱机输入输出方式
为了解决高速CPU与慢速输入输出(I/O)设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机输入输出技术。该技术通过控制外围机方式,完成程序和数据的输入输出,即脱离主机进行程序和数据的输入输出操作,因而称为脱机输入输出方式;反之,程序和数据的输入输出是在主机控制下进行的,称为联机输入输出方式。
脱机输入输出的处理过程:事先将装有用户程序和数据的纸带放入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些数据(程序)时,直接从告诉的磁带上调入内存,从而大大加快数据(程序)输入过程,减少了CPU等待输入的时间。类似地,当CPU需要输出时,并不是把计算结果直接送至输出设备,而是高速输出至磁带上,然后在另一台外围机的控制下,把磁带上的计算结果送到相应的输出设备上,因而大大加快了输出过程。
脱机输入输出的特点:由于输入输出均由外围机控制完成,不占用CPU时间,因此,减少了CPU的空闲等待时间。此外,CPU需要输入或输出数据时,可从高速磁带上获取,因而提高了I/O速度。
1.2.3批处理系统
批处理系统主要利用批处理技术,对系统中的一批作业自动进行处理,它包括单道批处理系统和多道批处理系统。
1.单道批处理系统
单道批处理系统是20世纪50年代中期在IBM701计算机上实现的第一个操作系统。单道批处理系统就是在监督程序的控制下,计算机系统能够自动地、成批地处理一个或多个用户的作业,其中作业是指将用户在一次事务处理过程中要求计算机系统所完成的工作(包括程序、数据和命令)的集合。
单道批处理系统的处理过程:首先由监督程序将磁带(盘)上的第一道作业装入内存,并把控制权交给该作业;当作业完成时,控制权重新交给监督程序,由监督程序将磁带(盘)上的第二道作业调入内存,再将控制权交给第二道作业,如此反复进行,直到这批作业全部运行完成。虽然作业处理是成批进行的,但内存始终保持一道作业,故称为单道批处理系统。单道作业的工作情况如图1-5所示。
图1.5 单道作业的工作情况
弹道批处理系统的特点:
- 自动性:磁带(盘)上的一批作业能自动地逐个运行,不需要人工干预。
- 顺序性:磁带(盘)上的作业是顺序地装入内存,先装入内存的作业先完成。
- 单道性:监督程序每次只调入一道作业装入内存,即内存中只有一道作业。
单道批处理系统大大地减少了人工操作的时间,提高了计算机的利用率,但由于内存中仅存放一道作业,导致每次发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,使得CPU处于空闲状态。
2.多道批处理系统
为了解决单道批处理中CPU利用率低的问题,20世纪60年代中期引入了多道程序设计技术,形成了多道批处理系统。多道程序设计技术是指同时将多个程序装入内存,并允许他们交替运行,共享系统中的各种硬、软件资源。当某个程序因I/O请求而暂停运行时,CPU便立即去运行另一个程序。两道程序的运行情况如图1-6所示。
图1-6 两道程序的运行情况
多道程序系统的处理过程:假设内存中同时存放A、B两道程序,在系统的控制下,CPU可交替运行A和B。当程序A因请求I/O操作而放弃CPU时,程序B就占用CPU运行,使得CPU不再空闲,此时涉及I/O操作的设备也不空闲,即CPU和I/O设备都处于工作态度。
多道批处理系统的特点:
- 多道性:内存中可以同时存放多道相互独立的程序,它们可以并发执行。
- 无序性:多道作业的完成顺序不固定,与先后装入内存的顺序无严格的对应关系。即先装入的作业未必先完成,后装入的作业也能先完成。
- 调度性:作业从提交给系统直至完成,需要经过作业调度和进程调度两个过程。其中作业调度是指按照某种作业调度算法,从磁带(盘)中的后备作业队列中选择多个作业调入内存;而进程调度是指按照某种进程调度算法,从内存中选择其中一道程序,将CPU分配给该程序,使之运行。
多道批处理系统的主要优点:
- 资源利用率高:由于内存中的多道程序可以共享资源,使资源尽可能处于忙碌状态,从而提高了资源的利用率。
- 系统吞吐量大:系统吞吐量是指单位时间内所完成的工作总量。由于CPU和其他资源都保持忙碌状态,且程序运行切换时代代价较小,从而提高了系统的吞吐量。
多道批处理系统的主要缺点:
- 无交互能力:作业一旦提交给系统,直至作业完成,用户不能与自己的作业交互。
- 平均周转时间长:平均周转时间是指作业从提交给系统开始,直至完成并退出系统所经历的时间。由于多道程序共享CPU资源,因此,每道程序在整个运行期间“走走停停”。当资源被占用时,必须等待,直至资源被释放后,才能获取所得需的资源,进而继续运行。
1.2.4分时系统
为了解决多道批处理系统无交互能力的问题,满足人机交互的需求,20世纪60年代推出了分时操作系统。分时系统是指一台主机连接了多个配有显示器和键盘的终端,由此所组成了完整的系统,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。分时系统的结构如图1-7。
图1-7 分时系统的结构
分时系统的处理过程:假设系统中主机连接了k台终端,系统利用分时技术,将CPU的运行时间分成k个很短的时间片。首先将第一个时间片分配给第一个终端,执行第一个终端的作业或程序,待该时间片使用完成后,系统则将第二个时间片分配给第二个终端,执行第二个终端作业或程序,此过程依次重复,待第k个时间片结束后,系统结束此轮循环,进入新的一轮循环直至所有作业或程序结束。由于一台计算机可同时连接多个用户终端,且CPU速度不断提高,时间间隔(时间片)很短,每个用户均可在自己的终端上联机使用计算机,就感觉像自己独占计算机一样。
分时系统的特点:
- 多路性:系统按分时原则为每个用户服务,微观上每个用户轮流使用,宏观上每个用户并行工作,共享系统资源。
- 独立性:每个用户独占一个终端,相互独立、互不干扰,感觉就像独占计算机资源
- 及时性:系统及时响应用户的请求,用户感知响应快。
- 交互性:用户可通过终端与系统进行交互,并根据响应结果,提出新的请求。
分时系统中的关键问题:
- 及时接收与处理:系统应及时接收用户通过终端发出的请求、命令等,并能快速处理该请求,使得用户感觉所花费时间较少。
- 时间片的设置:若时间片太长,则用户感觉系统很慢,无法忍受;若时间片太短,则无法及时处理完成用户请求,且系统将疲于作业的切换过程,没有时间处理请求。通常,时间片的大小与用户终端数量、CPU的性能相关,常设置为2-3s。
1.2.5实时系统
多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但不能满足实时控制与实时信息处理两个应用领域的需求,为此产生了实时系统。实时系统是指能够及时响应随机发生的外部事件,在严格的时间范围内,完成对该事件的处理,并控制所有实时任务协调一致的运行。特定的应用中实时系统常作为一种控制设备来使用。
根据控制对象的不同,实时系统可以分成两大类:
- 实时控制系统:以计算机为中心的生产控制系统和武器控制系统等,系统应能实时采集现场数据,并对采集的数据进行及时处理,进而自动控制相应的执行机构,使之按预定的规律变化,确保产品的质量。实时控制系统常用于工业控制、军事控制等领域,如飞机自动驾驶系统、火箭飞行控制系统、导弹制导系统等。
- 实时信息处理系统:接收从远程终端上发来的服务请求,根据用户的请求对信息进行检索和处理,并向用户做出及时正确的回答。典型的实时信息处理系统包括飞机或火车的订票系统、银行系统、情报检索系统等。
实时系统的主要特点:
- 及时性:实时系统对及时性的要求很高,特别是实时控制系统中信息接收、分析处理和发送必须在严格的时间限制内完成,一般为秒级、毫秒级,甚至微秒级。
- 交互性:实时信息处理系统中允许用户输入数据,提出系统中有限的服务请求,但其交互性比分时系统弱。
- 独立性:实时信息处理系统中用户在各自终端上请求系统服务,彼此独立、互不干扰,实时控制系统多个控制对象或多路现场信息采集是相互独立的。
- 高可靠性:采取一定的容错或冗余措施,保证系统具有非常高的可靠性,否则可能带来灾难性的后果。
1.2.6通用操作系统
为了进一步提高计算机系统的适应能力和使用效率,20世纪60年代后期,产生了具有多种功能途径、多种类型操作特征的通用操作系统,该类系统可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。构造通用操作系统的目的是为用户提供多模式的服务,同时进一步提高系统资源的利用效率。
由于通用操作系统具有规模庞大、功能强大、构造复杂等特点,实际应用中同时具有实时、分时、批处理三种功能的操作系统并不常见。因此,通常将实时与批处理结合起来,或者将分时与批处理结合起来,构成前后台系统。实时批处理系统兼有实时系统和多道批处理系统的功能,它保证优先处理实时任务,插空进行批处理作业,故而该系统中实时任务常称为前台作业,而批处理作业称为后台作业。分时批处理则是具有分时系统和多道批处理系统的功能,即对时间要求不强的作业作为批处理处理,而对频繁交互的作业则采取分时处理,CPU优先运行分时作业。
1.2.7网络操作系统
随着20世纪80年代计算机网络的迅速发展,计算机网络正在改变人们的观念和社会能力。网络操作系统是指具有网络通信和网络服务功能的操作系统。它是在一般操作系统功能的基础上通过提供网络通信和网络服务功能而形成的,以方便计算机进行有效的网络资源共享,并提供网络用户所需的各种服务的软件和相关协议的集合。
网络操作系统主要包括客户机/服务器(C/S)模式和对等模式(P2P)这两种工作模式。客户机/服务器式是目前广泛流行的网络工作模式。它将网络中的计算机分成两类:服务机和客户机,其中服务器是网络的控制中心,为用户提供文件打印、通信传输、数据库等各种服务,而客户机是用于本地处理和访问服务器的计算机。对等模式则将网络中的计算机对等看待,每台计算机都是对等的,既可以作为服务器,又可以作为客户机。
网络操作系统的功能:
- 网络通信:实现源计算机和目标计算机之间无差错的数据传输。
- 资源管理:管理网络中共享(硬、软件)资源,协调用户使用共享资源,保证数据的安全、一致性。
- 网络管理:通过存取控制确保存取数据的安全性,通过容错技术保证系统出现故障时数据的安全性。
- 网络服务:为方便用户使用网络而提供的多项有效服务,如电子邮件、文件传输、设备共享、存取和管理服务等。
主流的计算机网络操作系统包括UNIX、Netware和Windows NT系列,其中UNIX是唯一能够跨多种平台的操作系统,Netware是早期面向微机的网络操作系统,WindowsNT则既适用于微机,也适用于工作站。
1.2.8分布式操作系统
以往的计算机系统中处理和控制功能高度地集中在一台计算机上,所有的任务都由它来完成,这种系统称为集中式计算机系统。集中式计算机系统的缺点是若管理控制计算机出现故障,则整个系统将会瘫痪。针对这种问题,计算机网络发展为分布式结构,即系统的处理和控制功能分散在系统的各个处理单元,系统中的任务也可动态分配到各个处理单元,并使它们并行执行,实现分布式处理。
分布式系统是指通过通信网络方式,将地理上分散的、具有自治功能的多台分散的计算机通过互联网连接而成的系统,以实现信息交互和资源共享,协作完成指派的任务。分布式系统中,每台计算机既高度自治,又互相协同,能在系统范围内实现资源管理、任务分配,能并行地运行分布式程序。分布式操作系统是指能管理分布式计算机系统的操作系统。
分布式操作系统的特点:
- 分布性:分布式操作系统不是驻留某一个节点上,而是分布在各个节点上,其处理和控制是分布式的。
- 并行性:任务被分配到多个处理单元(节点)上,这些任务可并行执行,从而提高了处理速度。
- 透明性:系统隐藏了内部细节,使得用户无须了解具体情况,而系统故障、并发控制和对象位置等对用户是透明的。
- 共享性:所有分布在各节点的软、硬件资源均可供系统中所有用户共享访问,并能以透明的方式使用。
- 健壮性:系统中任何节点故障不会造成太大影响,若某个节点出现故障,可通过容错技术实现重构,因而具有更强的容错能力。
分布式操作系统与网络操作系统的区别:
- 系统的配置不同:网络操作系统可在不同的本机操作系统上,通过网络协议实现网络资源统一配置管理,从而构成网络操作系;但分布式操作系统则在各个节点上配置相同的系统。
- 资源访问方式不同:网络操作系统中访问资源时,需要提供资源的位置及类型等,且本地资源和异地资源的访问要区别对待;而分布式操作系统中,所有资源都使用统一方式进行管理和访问。
- 管理控制方式不同:网络操作系统的管理控制功能集中在服务器;而分布式操作系统则分布在各个分布式节点中。
1.2.9嵌入式系统
嵌入式操作系统是指用于嵌入式计算机环境中的操作系统,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等功能,负责嵌入式系统的软、硬件资源的分配,任务调度,协调并发活动等。
嵌入式操作系统具有硬件平台的局限性、应用环境的多样性和开发手段的特殊性,其主要特点如下:
- 微型化。嵌入式系统的硬件平台通常不配置外存,微处理器字长较短且速度有限,能源消耗也较少。嵌入式操作系统的内核较传统的操作系统要小得多。
- 实时性。嵌入式系统广泛应用于过程控制、数据采集、传输通信、多媒体信息及要求迅速响应的场合,要求嵌入式操作系统具有实时性。
- 易移植性。由于CPU和底层硬件环境的多样性,要求嵌入式操作系统可适用于不同的硬件平台,因而可移植性高。
目前在嵌入式领域广泛使用的操作系统有:WinCE、PalmOS、Linux、VxWorks、Android、iOS等。
1.3操作系统的功能和特征
1.3.1操作系统的功能
操作系统是计算机系统的资源管理者,其主要任务是对系统中的硬件、软件实施有效的管理,以提高系统资源的利用率。计算机硬件资源主要包括中央处理器、主存储器、磁盘存储器、打印机、显示器、键盘和鼠标等;软件资源指的是存放于计算机内的各种文件信息。因此,操作系统的主要功能包括处理器管理、存储器管理、设备管理和文件管理。此外,操作系统还提供用户接口,以方便用户使用操作系统。
1.处理器管理
CPU是计算机系统中最宝贵的硬件资源。处理器管理主要任务是对CPU进行高效分配,并对其运行状况进行有效的控制与管理。为了提高资源的利用率,操作系统中采用了多道程序技术。多道程序环境下,CPU的分配和运行都是以进程为基本单位,因而处理器管理可最终归结为对进程的管理。
处理器管理的主要功能包括进程控制和管理、进程同步与互斥、进程通信、进程调度、进程死锁。
2.存储器管理
存储器可分为内部存储器(内存)和外部存储器(外存),存储器管理主要是指对内存的管理。存储器管理的主要任务是方便用户存取内存中的程序和数据;提供数据存储保护,保证数据不被破坏或非法访问;借助多道程序技术,提高内存利用率;内存容量不足时能从逻辑上扩充内存。
存储器管理的主要功能包括存储分配、存储共享、存储保护、地址转换、存储扩充。
3.设备管理
设备管理是对计算机系统中各种输入、输出设备进行管理和控制。由于硬件设备种类繁多,且工作原理和操作特性各不相同,因而设备管理和控制十分复杂。设备管理和控制十分复杂。设备管理的主要任务是完成用户提出的I/O请求,为用户分配I/O设备;提高CPU和I/O设备的利用率;提高I/O设备的运行速度;方便用户使用I/O设备。
设备管理的主要功能包括控制与处理、设备分配与回收、设备独立性、缓冲管理和虚拟设备。
4.文件管理
计算机系统中程序和数据通常以文件形式存储在外部存储器(外存)上。文件管理是对系统中信息资源(程序和数据)进行有效管理,为用户提供方便快捷、共享、安全、保护的使用环境。文件管理的主要任务是对用户文件和系统文件进行管理;方便用户使用;实现文件共享访问;保证文件的安全。
文件管理的主要功能包括文件存储空间管理、目录管理、文件读写管理、文件共享保护和存取控制。
1.3.2操作系统的特征
操作系统的特征是一个相当复杂的系统软件,不同的操作系统具有不同的特征。总体而言,计算机操作系统具有以下几个基本特征。
1.并发性
并发性是指两个或两个以上的事件在同一时间间隔内发生。多道程序环境下,计算机系统中同时存在多个进程,宏观上,这些进程同时执行,同时向前推进;微观上,单处理机中任何时刻只有一个进程在执行,多个进程之间是交替执行的,多处理机中这些进程被分配到多处理机上并行执行。并发的目的是提高系统资源的利用率和系统的吞吐量。
并发和并行是两个既相似又有区别的概念。并行是从某一时刻去观察,两个或多个事件都在运行。
2.共享性
共享性是指计算机系统中的资源可被多个并发执行的进程使用,而不是被其中某个进程独占使用。根据资源的属性,共享可分为互斥共享和同时共享。
- 互斥共享。系统中的资源,如打印机、扫描仪等,在一段事件内只允许一个进程使用。当某个进程使用该资源时,其他进程必须等待,只有当该进程使用完并释放后,其他进程才可以使用该资源,即进程之间排他、互斥地使用共享的资源。
- 同时共享。系统中有些资源在同一段事件内允许多个进程同时访问。这里的同时访问是宏观意义上的。并发性和共享性是操作系统的两个最基本特征,它们互为存在条件。一方面,资源共享是以进程的并发执行为存在条件,若系统不允许并发,就不存在资源共享问题。另一方面,若系统不能有效管理共享资源,则将影响进程的并发执行。
3.虚拟性
虚拟性是指通过某种技术,将一个物理实体变成若干个逻辑对应物。物理实体是实际存在的,而逻辑对应物则是虚构的,用户使用时感觉有多个实体可供使用。操作系统中采用了多种虚拟技术,如利用多道程序设计技术实现虚拟CPU,通过请求调入调出技术实现虚拟存储器,通过SPOOLing技术实现虚拟设备。
4.异步性
异步性是指在多道程序环境下,由于资源的共享性和有限性,并发执行的进程之间产生相互制约的关系,它们的运行过程有可能不是一气呵成的,有可能是走走停停的,从而导致多个程序的运行顺序、运行时间都是不确定的,即各个进程何时执行、何时暂停以及以怎样的速度向前推进、什么时候完成都是不可预知的。操作系统必须保证在环境相同情况下,进程经多次运行,均会得到相同的结果。
1.4操作系统的运行环境
1.4.1操作系统的结构
1.模块化结构
现代操作系统为方便用户使用,包含的功能较多,从而导致结构复杂,因此,在开发设计之初常采用模块化设计思想。模块化的操作系统由许多标准的、可兼容的模块组成,各模块的功能相互独立,相互之间通过接口方式进行调用。模块化操作系统的优点是系统功能可分割为多个不同的模块,每个模块的具体编码可由不同人员实现,达到并行合作的目标,从而可在很短的周期内完成操作系统的设计实现。由于操作系统的各个模块之间的调用关系较复杂,导致系统逻辑结构不够清晰,从而使得所设计的操作系统难以分析、维护和移植。
2.层次化结构
为了解决模块化结构设计的问题,人们提出了层次化结构设计模型。该模型将操作系统的各功能模块分成多个层次,其中每一层均有自己相对独立的任务和功能,各层之间不允许构成循环依赖,且各层之间相对稳定。下层模块给上层模块提供支持,上层模块调用下层模块,仅能使用下层提供的功能和服务。此外,层与层之间通常不能跨层调用访问。这种情况下,上下层之间只需关心接口即可,无须了解彼此的内部结构和实现方法。由于每步设计都是建立在可靠的基础上,整个系统的正确性可通过各层的正确性得到保证,因而,安全和验证都变得更容易。层次化结构的逻辑清晰,层内的修改与其他各层无关,这便于系统的设计、实现、更新、维护和移植。
3.虚拟机结构
虚拟机是指在完全无软件的计算机上配置功能不同的软件的计算机系统。虚拟机结构针对不同的应用领域,在逻辑上扩展一层层软件,使得相同硬件系统的计算机由于配置的软件不同而具有各种不同的性能,从而使得计算机扩充为功能更强、使用更加方便、适用于多种不同应用场合的虚拟计算机。虚拟机结构通常采用层次化结构的设计方法来实现。
4.客户机/服务器结构
计算机系统运行期间,大量CPU指向时间花费在通信方面。为了进一步提高系统性能,根据网络结构的特点,现代操作系统设计成客户机/服务器结构模式,其中操作系统中最基本的且通信频繁功能模块单独整合设计在服务器端进程。且常驻内存中,而将文件服务、设备服务、进程服务等功能交由用户(客户)进程实现。当用户进程需要某项服务时,向服务器进程发出请求,服务器进程响应请求后为用户进程服务,服务完成后将结构发送给用户进程。由于服务器进程是特殊的用户进程,且运行在用户态,因此,某个服务器的崩溃不会导致系统的崩溃。
5.面向对象结构
由于具有可封装性、可移植性等优点,面向对象程序设计方法自提出以来,就得到了广泛的应用。部分新型的操作系统采用面向对象程序设计方法来实现,将数据和针对数据所执行的操作封装在对象之中,并将其作为数据的属性或访问方法提供给用户使用、访问。由于用户不能直接操作数据,因此面向对象结构的操作系统具有数据隐藏、易于保持数据的完整性和一致性等特点,从而可实现对不同对象的数据保护。
1.4.2处理机的执行状态
计算机系统运行时,操作系统和用户程序均存储在内存中。为了防止操作系统被破坏或非法访问,系统通过在CPU的寄存器中设定保护状态位,提供了保护机制。CPU执行程序时根据状态位的值对当前程序执行权限进行控制。
CPU的执行状态通常分为系统态(管态)和用户态(目态),其中系统态表示CPU当前正在执行操作系统的系统程序,而用户态表示CPU当前正在执行用户程序。为了实现对操作系统的保护,CPU将其指令分为特权指令和非特权指令。
(1)特权指令:指具有特殊权限的指令,主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。特权指令在多用户、多任务的计算机系统中必不可少。常见的特权指令包括启动I/O设备指令、访问程序状态指令、存取中断寄存器指令等。
(2)非特权指令:指只有普通权限的指令,只能在用户态下运行。用户程序所使用的指令都是非特权指令,它不能直接访问系统中的硬件和软件,对内存的访问范围也局限于用户空间。
CPU只有在系统态下才能访问特权指令,在用户态下不能执行特权指令。如果用户程序中出现特权指令,CPU会因为指令权限与CPU当前运行状态不吻合而自动产生非法指令中断,终止用户程序的执行,并交由操作系统处理。因此,用户程序不能随意访问其存储空间以外的其他存储空间,从而实现了存储保护。
1.4.3中断及其处理
1.中断的概念
中断是指CPU在程序执行过程中,当新的情况或事件出现时,CPU暂时停止当前程序的执行,转而处理新情况的过程。中断处理过程中,凡是能够引起中断原因或提出中断请求的设备和异常故障称为中断源,实现中断响应过程的硬件称为中断装置,处理该事件的程序称为中断服务程序,完成中断全过程的硬件和软件系统称为中断系统,中断时程序中当前执行完毕的指令地址称为断点,中断返回后继续执行的下一条指令地址称为返回点。
2.中断的类型
根据中断源的不同,中断一般包括程序中断和硬件中断。程序中断是指程序执行过程中出现的不可预知的错误故障(访问不存在的资源等)或事先设置的陷阱(trap)处理(如断点中断、单步中断等)。硬件中断是指由硬件设备引发的中断请求,具体包括如下几种中断:
(1)外部中断是指由计算机外设(如键盘、打印机、定时器等)发出的中断请求。外部中断是可屏蔽的中断。
(2)内部中断是指由硬件出错(如突然掉电、奇偶校验错等)或运算出错(如除数为零、运算溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。
(3)故障强迫中断是指计算机的一些关键部位设有故障(如存储器读取出错、外设故障、电源掉电以及其他报警信号等)自动检测装置,引发CPU中断,并进行相应处理。
(4)实时时钟请求中断是指系统采用一个外部时钟电路(可编程)控制其时间间隔,时钟电路一旦达到规定时间,则发出中断请求,由CPU转去完成检测和控制工作。
(5)数据通道中断是指数据通道在传输、交换数据时发出的中断请求。
3.中断的分类
(1)按处理方式的不同,中断可分为简单中断和程序中断,其中简单中断(如数据通道中断)采用周期窃用的方法来执行中断服务;程序中断是中止现行程序的执行转去执行中断服务程序
(2)按产生方式的不同,中断可分为自愿中断和强迫中断,其中自愿中断(如程序自设中断)是通过设置自陷指令而引起的中断;强迫中断是一种随机发生的实时中断,强迫CPU去执行处理,如外部设备请求中断、故障强迫中断等。
(3)按中断事发地点的不同,中断可分为内部中断和外部中断,其中外部中断也称为外部硬件实时中断,它由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,它是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的外部中断。
(4)根据受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断,其中可屏蔽中断是指CPU内部的中断触发器(或许中断允许触发器)能够拒绝响应的中断;反之,不可屏蔽中断是指CPU内部的中断触发器(或许中断允许触发器)不能够拒绝响应的中断。
4.中断的处理过程
中断处理是指CPU一旦响应用户中断请求,就转去执行中断服务程序,完成中断处理的过程。中断处理的具体过程通常由软件实现,如图1-8所示的虚线部分。
图1-8中断响应及处理过程
中断处理过程一般由以下三个步骤组成:
(1)保护被中断进程的现场。为了在中断处理结束后能使进程正确返回到中断点,系统必须保存当前CPU状态字和程序计算器等值。通常由硬件机构自动将状态字和计数器的值保存在中断保留区(栈)中,然后将被中断进程的CPU现场信息(如CPU所以寄存器)压入栈中。
(2)处理中断或执行中断服务程序。CPU先测试各个中断源,判断具体中断事件,根据中断源的不同,获取相应的处理程序的首(入口)地址,并装入程序计数器中,使得CPU转向执行相应的处理程序。
(3)恢复被中断进程的现场。中断服务程序结束后,唤醒等待该中断请求的进程,同时将保存在中断栈中的被中断进程的现场信息(第一步中所保存的信息)取出,装入到相应的寄存器中,使得CPU能正确返回到被中断进程当时所处的状态。
5.中断机制在操作系统中的作用
操作系统引入中断机制的最大好处是方便处理随机发生的事件。任何情况下,只要有随机事件发生,操作系统都可以通过中断机制中断当前程序的执行,转而执行处理该事件的服务程序。事实上,操作系统可被看作是一个以事件为驱动的中断机制,其中用户的每个操作均可看作是一次中断。如双击鼠标,CPU就转去执行相应的事情。中断能给操作系统带来很多方便之处:
(1)中断可以实时处理许多紧急事件。
(2)中断可以实现CPU与外设的并行工作,从而提高CPU的效率和系统的吞吐量
(3)中断可以实现多道程序之间的切换。
(4)中断可以使得操作系统作为系统服务的支撑平台,用户程序可通过系统调用完成相应任务,从而简化了操作系统和应用程序的开发设计过程。
总之,中断是操作系统功能实现的基础,是构成多道程序运行环境的根本措施,是程序得以运行的直接或间接的“向导”,是各种事件被激活的驱动源。
1.5操作系统用户接口
为了方便用户快速、有效地使用计算机系统,操作系统向用户提供了一系列接口。用户通过这些接口与计算机进行交互,告知计算机系统所需完成的任务或需求,计算机进而完成相应的操作和处理。
操作系统为用户提供了命令和系统调用两种方式使用计算机系统,前者为用户提供了各种控制命令,方便组织和控制程序的执行或管理计算机系统,故又称命令接口;后者为编程人员提供了各种控制函数,方便程序请求访问操作系统提供的服务,故又称程序接口。随着用户使用习惯的进一步改善,命令接口发展演变为图形接口。
1.5.1命令接口
为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了各种命令接口。用户可以借助命令接口,通过输入设备(键盘、鼠标、触摸屏、声音等)向系统发出字符命令,及时与自己的作业交互,控制作业的运行。命令接口又可进一步分为联机命令接口和脱机命令接口。
(1)联机命令接口:由一组键盘命令及命令解释程序组成,每当用户在终端或控制台的键盘上输入一条命令,系统便立即转入相应的命令解释程序,对该命令进行处理和执行,命令完成后,返回到终端或控制台,等待下一条命令。
(2)脱机命令接口:由一组作业控制语言(JCL)组成,用户在向批处理系统提交作业时,必须先使用JCL将用户的控制意图编写成作业说明书,然后将作业连同作业说明书一起提交给系统。系统调度该批处理作业时,对作业说明书上的命令逐条解释并执行。
1.5.2程序接口
程序接口有一组系统调用命令组成,用户通过在程序中使用这些系统调用命令,请求操作系统提供服务。程序接口一般通过系统调用来实现。
系统调用是操作系统为了扩充机器功能、增强系统能力而提供给用户使用的具有一定功能的程序段。具体地,系统调用就是通过系统调用命令中断现行程序,转去执行相应子程序,以完成特定的系统功能。完成后,返回到当前程序继续往下执行。用户程序通过系统调用可以访问系统资源,调用操作系统功能,而不必了解具体的内部结构和硬件细节。它是用户程序获得操作系统服务的唯一接口。
不同的操作系统具有不同的系统调用命令,或是相同的系统调用命令,但格式和执行功能则可能不相同。系统调用按功能可大致分为设备管理、文件管理、进程管理、进程通信、存储管理。
操作系统的内核中设置了一组专门用于实现各种系统功能的子程序,即系统调用函数。系统调用函数执行时CPU处于系统态(即管态)。当CPU执行用户程序中的系统调用函数时,由特定的硬件或软件指令实现对操作系统某个功能的调用,CPU在执行到系统调用函数时产生访管中断,通过中断机制自动将CPU的状态由用户态转变为系统态,然后执行系统的服务程序,完成后再中断返回,将CPU的状态转变回用户态,返回用户程序中被中断的地方继续执行。系统调用是一种特殊的中断处理。它的具体实现过程与中断处理类似,如图1-9所示。
图1-9系统调用的实现
1.5.3图形接口
用户虽然可以通过命令行和命令文件方式获得操作系统的服务,并控制本地应用程序运行,但是要求用户牢记各种命令、参数等,并严格按照规定的格式输入命令,这既不方便又耗时。为此,图形用户界面(GUI)应运而生。
近年来,软件的易用性和美观性越来越友好,操作系统的传统字符命令接口也逐渐发展为更为友好的图形接口。该接口采用图形化的操作界面,用容易识别的图标将系统的各种命令和功能直观地表达出来。用户可以通过菜单和对话框来完成对应用程序和文件的操作,利用鼠标完成与系统的交互,从而达到易用的效果。目前,图形接口也是最为流行的联机用户界面方式。
1.6现代主流操作系统
1.6.1UNIX操作系统
UNIX操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构。按照操作系统的分类,它属于分时操作系统,由美国的AT&T公司的贝尔实验室于1969年开发成功,首先在PDP-11上运行。
UNIX系统问世以后,很快在大学和研究单位中受到重视和欢迎,并在短短的十余年中安装在从巨型机到微型计算机的各种计算机中。UNIX操作系统目前主要运行在大型计算机或各种专用工作站上,其版本有AIX(IBM公司开发)、Solaris(SUN公司开发)、HP-UX(HP公司开发)、IRIX(SGI公司开发)、Xenix(微软公司开发)和A/UX(苹果公司开发)等。Linux也是由UNIX操作系统发展而来的。UNIX操作系统成为世界影响最大,应用范围最广、适合机型最多的通用操作系统。
UNIX的核心代码95%是由C语言编写的,故容易编写和修改,可移植性好。其外围系统支持程序也几乎全部用C语言编写,容易开发。操作系统使用高级语言编写,在前期以源码形式发布,系统短小精悍,便于理解和学习。
UNIX操作系统提供了丰富的系统调用,整个系统的实现十分紧凑、简洁。UNIX操作系统提供了功能强大的可编程Shell语言作为用户界面,具有简洁、高效的特点。UNIX系统具有逻辑上无限层次的树状分级文件系统,提供文件系统的装卸功能,提高了文件系统的灵活性、安全性和可维护性。系统采用进程对换(Swapping)的内存管理机制和请求调页的存储管理方式,实现了虚拟内存管理,大大提高了内存的使用效率。UNIX系统提供了众多本地进程和远程主机间进程的通信手段,如管道、共享内存、消息、信号灯、软中断等。
UNIX系统还具有良好的用户界面,用户C程序和系统外围程序可以通过系统调用使用操作系统内核提供的各种系统服务,交互式用户可以在Shell界面上通过命令同系统交互。用户也可以在Shell环境下编制一些控制灵活、功能强大的作业控制程序,以高效、自动化地完成复杂的任务。
1.6.2Linux操作系统
Linux是由芬兰籍科学家Linus Torvalds于1991年编写完成的一个操作系统内核。当时他还是芬兰赫尔辛基大学计算机系的学生,在学习操作系统课程中,自己动手编写了一个操作系统原型,从此新的操作系统诞生了。Linus把这个系统放在Internet上,允许自由下载,许多人对这个系统进行改进、扩充、完善,许多人做出了关键性的贡献。
Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。这个系统是由全世界成千上万个程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。Linux在继承了历史悠久和技术成熟的UNIX操作系统的特点和优点外,进行了许多改进,已成为真正的多用户、多任务的通用操作系统。
Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使其既能在价格昂贵的工作站上运行,也能够在廉价的PC上实现全部UNIX的特性,具有多任务、多用户的能力。Linux 操作系统软件包不仅包括完整的Linux操作系统,也包括文本编辑器、高级语言编译器等应用软件,还包括带有多个窗口管理器的X-Windows图形用户界面,如同使用Windows一样,它允许使用窗口、图标和菜单对系统进行操作。
Linux有许多不同的版本,但都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只有Linux内核,但实际上人们已经习惯了用Linux来表示基于Linux内核并且使用GNU工程和数据库的操作系统。
1.6.3Windows系统
Windows操作系统是由美国微软(Mircrosoft)公司开发的窗口化操作系统,采用了GUI图形化操作模式,与它之前使用的指令操作系统(如DOS)相比显得更为友好和人性化。Windows是目前世界上使用最广泛的操作系统。最新的版本是Windows10。
微软公司成立于1975年,最初只有比尔盖茨、保罗艾伦两个人,只有一个产品,BASIC编译程序。现在微软公司已成为世界上最大的软件公司,其产品涵盖操作系统、开发系统、数据库管理系统、办公自动化软件、网络应用软件等各个领域。
Windows问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于不断更新升级,不但易用,而且逐渐成为人们最喜爱的操作系统。
Windows采用了图形化模式GUI,比起从前的DOS需要输入指令使用的方式更加人性化。随着计算机硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位到64位,系统版本从最初的Windows1.0到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7 、Windows 8、Windows 8.1、Windows 10和Windows Server服务器企业级操作系统,不断持续更新。