1、计算机操作系统教程 (第2版),清华大学计算机系列教材 张尧学 史美林 编著,总 目 录,第1章 绪论第2章 操作系统用户界面第3章 进程管理第4章 处理机调度第5章 存储管理第6章 进程与存储管理示例第7章 文件系统第8章 设备管理第9章 文件和设备管理示例第10章 面向对象操作系统的设计,第1章 绪论,1.1 操作系统概念 1.2 操作系统的历史 1.3 操作系统的基本类型 1.4 操作系统功能 1.5 计算机硬件简介 1.6 算法的描述 1.7 研究操作系统的几种观点 习题20,计算机发展到今天,从个人计算机到巨型计算机系统,毫无例外都配置一种或多种操作系统。什么是操作系统,操作系统在计
2、算机系统中的地位,它具有什么样的功能等,我们将在这一章作一简要阐述。为了阐明这些问题,扼要地回顾一下操作系统的形成和发展过程是必要的。为便于今后的学习,我们要介绍一下操作系统的类型及其特点,研究操作系统的几种观点。最后,介绍几种常用操作系统。,1.1 操作系统概念 1.1.1 什么是操作系统 任何一个计算机系统都是由两部分组成:计算机硬件和计算机软件。计算机硬件通常是由中央处理机(运算器和控制器)、存储器、输入设备和输出设备等部件组成。 计算机软件包括系统软件和应用软件。系统软件如操作系统、多种语言处理程序( 汇编和编译程序等 )、连接装配程序、系统实用程序、多种工具软件等; 应用软件为多种应
3、用目的而编制的程序。 没有任何软件支持的计算机称为裸机,它仅仅构成了计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。图1.1展示了这种情形。,图1.1 操作系统与硬件软件的关系,由图1.1可看出,计算机的硬件和软件以及应用之间是一种层次结构的关系。裸机在最里层,它的外面是操作系统,经过操作系统提供的资源管理功能和方便用户的各种服务功能把裸机改造成为功能更强、使用更为方便的机器,通常称之为虚拟机或扩展机,而各种实用程序和应用程序运行在操作系统之上,它们以操作系统作为支撑环境,同时又向用户提供完成其作业所需的各种服务。 因此,引入操作系统的目的可从三方面来考察:
4、 (1) 从系统管理人员的观点来看:引入操作系统是为了合理地组织计算机工作流程,管理和分配计算机系统硬件及软件资源,使之能为多个用户高效率地共享。因此,操作系统是计算机资源的管理者。,(2) 从用户的观点来看:引入操作系统是为了给用户使用计算机提供一个良好的界面,以使用户无需了解许多有关硬件和系统软件的细节,就能方便灵活地使用计算机。 (3) 从发展的观点看:引入操作系统是为了给计算机系统的功能扩展提供支撑平台,使之在追加新的服务和功能时更加容易和不影响原有的服务与功能。 综上所述,我们可以非形式地把操作系统定义为: 操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合它们管理和控
5、制计算机系统中的硬件及软件资源,合理地组织计算机工作流程,以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与其用户之间起到接口的作用。,1.2 操作系统的历史 为了更好地理解操作系统的基本概念、功能和特点,首先回顾一下操作系统形成和发展的历史过程。 操作系统是由于客观的需要而产生的,它伴随着计算机技术本身及其应用的日益发展而逐渐发展和不断完善。它的功能由弱到强,在计算机系统中的地位不断提高。至今,它已成为计算机系统中的核心,无一计算机系统是不配置操作系统的。 由于操作系统历来跟运行其上的计算机组成与体系结构休戚与共,因此我们考察各代计算机,看看它们的操作系
6、统是什么样子,具有哪些功能和特征。 人们通常按照器件工艺的演变把计算机发展过程分为四个阶段。,1946年50年代末:第一代,电子管时代,无操作系统。 50年代末60年代中期:第二代,晶体管时代,批处理系统。 60年代中期70年代中期:第三代,集成电路时代,多道程序设计。 70年代中期至今:第四代,大规模和超大规模集成电路时代,分时系统。 现代计算机正向着巨型、微型、并行、分布、网络化和智能化几个方面发展着。 适应上述计算机发展过程,操作系统经历了如下的发展过程:手工操作阶段(无操作系统)、批处理、执行系统、多道程序系统、分时系统、实时系统、通用操作系统、网络操作系统、分布式操作系统等。,1.2
7、.1 手工操作阶段 在第一代计算机时期,构成计算机的主要元器件是电子管,计算机运算速度慢,没有操作系统,甚至没有任何软件。用户直接用机器语言编制程序,并在上机时独占全部计算机资源。上机完全是手工操作:先把程序纸带(或卡片)装上输入机,然后启动输入机把程序和数据送入计算机,接着通过控制台开关启动程序运行。计算完毕,打印机输出计算结果,用户取走并卸下纸带(或卡片)。 50年代后期,计算机的运行速度有了很大提高,手工操作的慢速度和计算机的高速度之间形成矛盾。唯一的解决办法是摆脱人的手工操作,实现作业的自动过渡。这样就出现了批处理。,1.2.2 早期批处理(batch processing) 如上所述
8、,在计算机发展的早期阶段,由于没有任何用于管理的软件,所有的运行管理和具体操作都由用户自己承担。作业由许多作业步组成,任何一步的错误操作都可能导致该作业从头开始。当时,计算机极其昂贵,计算机(CPU)的时间非常宝贵,尽可能提高CPU的利用率成为十分迫切的任务。 解决的途径有两个:首先配备专门的计算机操作员,程序员不再直接操作机器,减少操作机器的错误。另一个重要措施是进行批处理,操作员把用户提交的作业分类,把一批中的作业编成一个作业执行序列。每一批作业将有专门编制的监督程序(monitor)自动依次处理。 早期的批处理可分为两种方式。,1. 联机批处理 慢速的输入输出(I/O)设备是和主机直接相
9、连。作业的执行过程为: (1) 用户提交作业:作业程序、数据,用作业控制语言编写的作业说明书; (2) 作业被作成穿孔纸带或卡片; (3) 操作员有选择地把若干作业合成一批,通过输入设备(纸带输入机或读卡机) 把它们存入磁带; (4) 监督程序读入一个作业(若系统资源能满足该作业要求); (5) 从磁带调入汇编程序或编译程序,将用户作业源程序翻译成目标代码;,(6) 连接装配程序把编译后的目标代码及所需的子程序装配成一个可执行程序; (7) 启动执行; (8) 执行完毕,由善后处理程序输出计算结果; (9) 再读入一个作业,重复(5)(9)各步; (10) 一批作业完成,返回到(3),处理下一
10、批作业。 这种联机批处理方式解决了作业自动转接,从而减少作业建立和人工操作时间。但是在作业的输入和执行结果的输出过程中,主机CPU仍处在停止等待状态,这样慢速的输入输出设备和快速主机之间仍处于串行工作,CPU的时间仍有很大的浪费。,2. 脱机批处理 这种方式的显著特征是增加一台不与主机直接相连而专门用于与输入输出设备打交道的卫星机。如图1.2所示。 卫星机的功能是: (1) 输入设备通过它把作业输入到输入磁带; (2) 输出磁带将作业执行结果输出到输出设备。 这样,主机不是直接与慢速的输入输出设备打交道,而是与速度相对较快的磁带机发生关系。主机与卫星机可以并行工作,二者分工明确,以充分发挥主机
11、的高速度计算能力。因此脱机批处理和早期联机批处理相比大大提高了系统的处理能力。,图1.2 早期脱机批处理模型,批处理出现于20世纪50年代末到60年代初。它的出现促使了软件的发展。再有重要的是监督程序,它管理作业的运行负责装入和运行各种系统处理程序,如汇编程序、编译程序、连接装配程序、程序库(如输入输出标准程序等);完成作业的自动过渡,同时也出现程序覆盖等程序设计技术。 批处理仍有些缺点:磁带需人工拆装,既麻烦又易出错;而另一个更重要的问题是系统的保护。让我们来回忆一下在监督程序管理下的解题过程,如图1.3所示。,图1.3 监督程序管理下的解题过程,在进行批处理过程中,监督程序、系统程序和用户
12、程序之间存在着一种调用关系,任何一个环节出问题,整个系统都会停顿; 用户程序也可能会破坏监督程序和系统程序,这时,只有操作员进行干预才能恢复。20世纪60年代初期,硬件获得了两方面(即通道和中断技术)的进展,导致操作系统进入执行系统阶段。 通道是一种专用处理部件,它能控制一台或多台输入输出设备工作,负责输入输出设备与主存之间的信息传输。它一旦被启动就能独立于CPU运行,这样可使CPU和通道并行操作,而且CPU和多种输入输出设备也能并行操作。中断是指当主机接到外部信号(如输入输出设备完成信号)时,马上停止原来工作,转去处理这一事件,处理完毕后,主机回到原来的断点继续工作。,借助于通道、中断技术和
13、输入输出可在主机控制下完成批处理。这时,原来的监督程序的功能扩大了,它不仅要负责作业运行的自动调度,而且还要提供输入输出控制功能。这个发展了的监督程序常驻内存称为执行系统。执行系统实现的也是输入输出联机操作,和早期批处理系统不同的是:输入输出工作是由在主机控制下的通道完成的。主机和通道、主机和输入输出设备都可以并行操作。用户程序的输入输出工作都是由系统执行而没有人工干预,由系统检查其命令的合法性,以避免不合法的输入输出命令造成对系统的影响,从而提高系统的安全性。此时,除了输入输出中断外,其他中断如算术溢出和非法操作码中断等可以克服错误停机,而时钟中断可以解决用户程序中出现的死循环等。,许多成功
14、的批处理系统在20世纪50年代末和60年代初出现, 典型的操作系统是FMS(Fortran Monitor System)即FORTRAN监督系统和IBM/7094机上的IBM操作系统IBSYS。执行系统实现了主机、通道和输入输出设备的并行操作,提高了系统效率,方便用户对输入输出设备的使用。但是,这时计算机系统运行的特征是单道顺序地处理作业,即用户作业仍然是一道一道作业顺序处理。那么可能会出现两种情况:对于以计算为主的作业,输入输出量少,外围设备空闲;然而对于以输入输出为主的作业,又会造成主机空闲。这样总的来说,计算机资源使用效率仍然不高。因此操作系统进入了多道程序阶段:多道程序合理搭配交替运
15、行,充分利用资源,提高效率。,1.2.3 多道程序系统 上述批处理系统,每次只调用一个用户作业程序进入内存并运行,称为单道运行。图1.4(a)给出了单道程序工作示例。 而图1.4(b)给出了多道程序工作示例。在单处理机系统中,多道程序运行的特点是: (1) 多道:计算机内存中同时存放几道相互独立的程序。 (2) 宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕。 (3) 微观上串行:实际上,各道程序轮流使用CPU,交替执行。,(a) 单道程序工作示例 (b) 多道程序工作示例图 1.4,在批处理系统中采用多道程序设计技术,就形成了多道批处理系统。要
16、处理的许多作业存放在外部存储器中,形成作业队列,等待运行。当需要调入作业时,将由操作系统中的作业调度程序对外存中的一批作业,根据其对资源的要求和一定的调度原则,调几个作业进入内存,让它们交替运行。当某个作业完成,然后再调入一个或几个作业。这种处理方式,在内存中总是同时存在几道程序,系统资源得到比较充分的利用。 多道程序系统中,要解决这样一些技术问题: (1) 并行运行的程序要共享计算机系统的硬件和软件资源,既有对资源的竞争,但又须相互同步。因此同步与互斥机制成为操作系统设计中的重要问题。,(2) 随着多道程序的增加,出现了内存不够用的问题,提高内存的使用效率也成为关键。因此出现了诸如覆盖技术、
17、对换技术和虚拟存储技术等内存管理技术。 (3) 由于多道程序存在于内存,为了保证系统程序存储区和各用户程序存储区的安全可靠,提出了内存保护的要求。 多道程序系统的出现标志着在操作系统渐趋成熟的阶段先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。,1.2.4 分时操作系统 批处理方式下,用户以脱机操作方式使用计算机,只有等该批作业处理结束,用户才能得到计算结果。根据结果再作下一步处理。它的好处是计算机效率高。不过,用户十分留恋手工操作阶段的联机工作方式,独占计算机,并直接控制程序运行。但独占计算机方式会造成资源效率低。既能保证计算机效率,又能方便用户使用,成为一
18、种新的追求目标。20世纪60年代中期,计算机技术和软件技术的发展使这种追求成为可能。由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好像自己独占机器一样。,所谓分时技术,就是把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是好像他独占了一台计算机。而每个用户可以通过自己终端向系统发出各种操作控制命令,完成作业的运行。 多用户分时操
19、作系统是当今计算机操作系统中最普遍使用的一类操作系统。,1.2.5 实时操作系统 20世纪60年代中期计算机进入第三代,计算机的性能和可靠性有了很大提高,造价亦大幅度下降,导致计算机应用越来越广泛。计算机由于用于工业过程控制、军事实时控制等形成了各种实时处理系统。针对实时处理的实时操作系统是以在允许时间范围之内做出响应为特征的。它要求计算机对于外来信息能以足够快的速度进行处理,并在被控对象允许时间范围内作出快速响应,其响应时间要求在秒级、毫秒级甚至微秒级或更小。近年来,实时操作系统正得到越来越广泛的应用。特别是非PC机和PDA(个人数字助理)等新设备的出现,更加强了这一趋势。,1.2.6 通用
20、操作系统 多道批处理系统和分时系统的不断改进、实时系统的出现及其应用日益广泛,致使操作系统日益完善。在此基础上,出现了通用操作系统。它可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。例如,将实时处理和批处理相结合构成实时批处理系统。在这样的系统中,它首先保证优先处理任务,插空进行批作业处理。通常把实时任务称为前台作业,批作业称为后台作业。将批处理和分时处理相结合可构成分时批处理系统。在保证分时用户的前提下,没有分时用户时可进行批量作业的处理。同样,分时用户和批处理作业可按前后台方式处理。,20世纪60年代中期开始,国际上开始研制大型通用操作系统。这些系统在解决其可靠性、可维
21、护性、可理解性和开放性等方面都遇到很大的困难。相比之下UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外可以支持庞大的软件系统。目前广泛使用的各种工作站级的操作系统如SUN公司的Solaris,IBM公司的AIX等都是基于UNIX的操作系统。Windows系列操作系统,其主要原理也是基于UNIX系统的。linux系统也是从UNIX演变而成的。 至此,操作系统的基本概念、功能、基本结构和组成都已形成并渐趋完善。,1.2.7 操作系统的进一步发展 进入20世纪80年代,一方面迎来了个人计算机的
22、时代,同时又向计算机网络、分布式处理、巨型计算机和智能化方向发展。操作系统有了进一步的发展: 个人计算机上的操作系统,例如DOS系统。 嵌入式操作系统。 网络操作系统。 分布式操作系统。 智能化操作系统。 20世纪90年代后期,由于个人计算机硬件功能的急剧增加和用户对安全性、网络功能的要求增强,个人计算机操作系统也从DOS转向了通用操作系统Windows系列和linux系列。,1.3 操作系统的基本类型 根据其使用环境和对作业处理方式,操作系统的基本类型有: (1) 批处理操作系统(batch processing operating system) (2) 分时操作系统(time shari
23、ng operating system) (3) 实时操作系统(real time operating system) (4) 个人计算机操作系统(personal computer operating system) (5) 网络操作系统(network operating system) (6) 分布式操作系统(distributed operating system),1.3.1 批处理操作系统 现代操作系统大都具有批处理功能。图1.5给出了批处理系统中作业处理步骤及状态。图1.5 批处理系统中作业处理及状态,批处理系统的主要特征是: (1) 用户脱机使用计算机。用户提交作业之后直到获得
24、结果之前就不再和计算机打交道。作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交。提交的作业由系统外存收容成为后备作业。 (2) 成批处理。操作员把用户提交的作业分批进行处理。每批中的作业将由操作系统或监督程序负责作业间自动调度执行。 (3) 多道程序运行。按多道程序设计的调度原则,从一批后备作业中选取多道作业调入内存并组织它们运行,成为多道批处理。,多道批处理系统的优点是由于系统资源为多个作业所共享,其工作方式是作业之间自动调度执行。并在运行过程中用户不干预自己的作业,从而大大提高了系统资源的利用率和作业吞吐量。其缺点是无交互性,用户一旦提交作业就失去了对其运行的
25、控制能力;而且是批处理的,作业周转时间长,用户使用不方便。 不要把多道程序系统和多重处理系统相混淆。一般讲,多重处理系统配制多个CPU,因而能真正同时执行多道程序。当然,要想有效地使用多重处理系统,必须采用多道程序设计技术。反之不然,多道程序设计原则不一定要求有多重处理系统的支持。多重处理系统比起单处理系统来说,虽增加了硬件设施,却换来了提高系统吞吐量、可靠性、计算能力和并行处理能力等好处。,1.3.2 分时系统 分时系统一般采用时间片轮转的方式,使一台计算机为多个终端用户服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。具有下述特点。 (1) 交互性:首先, 用户可以在程序动态运行
26、情况下对其加以控制。其次,用户上机提交作业方便。第三,分时系统还为用户之间进行合作提供方便。 (2) 多用户同时性:多个用户同时在自己的终端上上机,共享CPU和其他资源,充分发挥系统的效率。 (3) 独立性:客观效果上用户彼此间感觉不到有别人也在使用该台计算机,如同自己独占计算机一样。 分时操作系统是一个联机的多用户交互式的操作系统。UNIX是最流行的一种多用户分时操作系统。,1.3.3 实时系统 实时系统主要随着计算机应用于实时控制和实时信息处理领域中而发展起来。 实时系统的主要特点是提供即时响应和高可靠性。系统必须保证对实时信息的分析和处理的速度比其进入系统的速度要快,而且系统本身要安全可
27、靠。实时系统往往具有一定的专用性。与批处理系统、分时系统相比,实时系统的资源利用率可能较低。 设计实时操作系统要考虑这样一些因素: (1) 实时时钟管理(定时处理和延时处理)。 (2) 连续的人-机对话,这对实时控制往往是必须的。,(3) 要求采取过载保护措施。例如对于短期过载,把输入任务按一定的策略在缓冲区排队,等待调度; 对于持续性过载,可能要拒绝某些任务的输入; 在实时控制系统中,则及时处理某些任务,放弃某些任务或降低对某些任务的服务频率。 (4) 高度可靠性和安全性需采取冗余措施。双机系统前后台工作,包括必要的保密措施等。 1.3.4 通用操作系统 批处理系统、分时系统和实时系统是操作
28、系统的三种基本类型,在此基础上又发展了具有多种类型操作特征的操作系统,称为通用操作系统。它可以同时兼有批处理、分时、实时处理和多重处理的功能,或其中两种以上的功能。,1.3.5 个人计算机上的操作系统 个人计算机上的操作系统是一联机的交互式的单用户操作系统,它提供的联机交互功能与通用分时系统所提供的很相似。由于是个人专用,因此在多用户和分时所要求的对处理机调度、存储保护方面将会简单得多。然而,由于个人计算机的应用普及,对于提供更方便友好的用户接口的要求愈来愈迫切。 多媒体技术已迅速进入微型计算机系统,它要求计算机具有高速信号处理、大容量的内存和外存、大数据量宽频带传输等能力,能同时处理多个实时
29、事件。要求有一个具有高速数据处理能力的实时多任务操作系统。 目前在个人计算机上使用的操作系统以Windows系列和linux系统为主。,1.3.6 网络操作系统 计算机网络是通过通信设施将物理上分散的具有自治功能的多个计算机系统互连起来的,实现信息交换、资源共享、可互操作和协作处理的系统。它具有这样的特征: (1) 计算机网络是一个互连的计算机系统的群体。 (2) 这些计算机是自治的,每台计算机有自己的操作系统,各自独立工作,它们在网络协议控制下协同工作。 (3) 系统互连要通过通信设施(硬件、软件)来实现。 (4) 系统通过通信设施执行信息交换、资源共享、互操作和协作处理, 实现多种应用要求
30、。,网络操作系统的研制开发是在原来各自计算机操作系统的基础上进行的。按照网络体系结构的各个协议标准进行开发,包括网络管理、通信、资源共享、系统安全和多种网络应用服务等达到上述诸方面的要求。 由于网络计算的出现和发展,现代操作系统的主要特征之一就是具有上网功能,因此,除了在20世纪90年代初期时,Novell公司的Netware等系统被称为网络操作系统之外,人们一般不再特指某个操作系统为网络操作系统。,1.3.7 分布式操作系统 粗看起来,分布式系统与计算机网络系统没有多大区别。分布系统也可以定义为通过通信网络将物理上分布的具有自治功能的数据处理系统或计算机系统互连起来,实现信息交换和资源共享,
31、协作完成任务。但是有这样一些明显的区别应予考虑: (1) 计算机网络的开发都遵循协议,而对于各种分布式系统并没有制定标准的协议。当然,计算机网络也可认为是一种分布式系统。 (2) 分布式系统要求一个统一的操作系统,实现系统操作的统一性。,(3) 分布式操作系统对用户是透明的。但对计算机网络,若一个计算机上的用户希望使用另一台计算机上的资源,则必须明确指明是哪台计算机。 (4) 分布式系统的基础是网络。分布式系统已不仅是一个物理上的松散耦合系统,同时还是一个逻辑上紧密耦合的系统。 (5) 分布式系统还处在研究阶段。而计算机网络已经在各个领域得到广泛的应用。 20世纪90年代出现的网络计算的趋势和
32、高速网络的出现已使分布式系统变得越来越现实。特别是SUN公司的Java语言和运行在各种通用操作系统之上的Java虚拟机和Java OS的出现,更进一步加快了这一趋势。另外,软件构件技术的发展也将加快分布式操作系统的实现。,1.4 操作系统功能 下面我们从资源管理和用户接口的观点分五个方面来说明操作系统的基本功能。 1.4.1 处理机管理 在多道程序或多用户的情况下,要组织多个作业同时运行,就要解决对处理机分配调度策略、分配实施和资源回收等问题。这就是处理机管理功能。正是由于操作系统对处理机管理策略的不同,其提供的作业处理方式也就不同,例如成批处理方式、分时处理方式和实时处理方式。从而呈现在用户
33、面前,成为具有不同性质功能的操作系统。,1.4.2 存储管理 存储管理的主要工作是对内部存储器进行分配、保护和扩充。 (1) 内存分配。如何分配内存,以保证系统及各用户程序的存储区互不冲突。 (2) 存储保护。保证一道程序在执行过程中不会有意或无意地破坏另一道程序,保证用户程序不会破坏系统程序。 (3) 内存扩充。当用户作业所需要的内存量超过计算机系统所提供的内存容量时,把内部存储器和外部存储器结合起来管理,为用户提供一个容量比实际内存大得多的虚拟存储器。,1.4.3 设备管理 (1) 通道、控制器、输入输出设备的分配和管理。设备管理的任务就是根据一定的分配策略,把通道、控制器和输入输出设备分
34、配给请求输入输出操作的程序,并启动设备完成实际的输入输出操作。为了尽可能发挥设备和主机的并行工作能力,常需要采用虚拟技术和缓冲技术。 (2) 设备独立性。输入输出设备种类很多,使用方法各不相同。设备管理应为用户提供一个良好的界面,而不必去涉及具体的设备特性,以使用户能方便、灵活地使用这些设备。,1.4.4 信息管理(文件系统管理) 上述三种管理是针对计算机的硬件资源的管理。信息管理(文件系统管理) 是对系统的软件资源的管理。 文件如不能很好管理,就会引起混乱,甚至遭受破坏。这就是管理信息文件需要解决的问题。 信息的共享、保密和保护,也是文件系统所要解决的。如果系统允许多个用户协同工作,那么就应
35、该允许用户共享信息文件。但这种共享应该是受控制的,应该有授权和保密机制。还要有一定的保护机制以免文件被非授权用户调用和修改,即使在意外情况下,如系统失效、用户对文件使用不当,也能尽量保护信息免遭破坏。也就是说,系统是安全可靠的。,1.4.5 用户接口 前述的四项功能是操作系统对资源的管理。操作系统还为用户提供一个友好的用户接口。一般来说,操作系统提供两种方式的接口来为用户服务。 一种用户接口是程序一级的接口,即提供一组广义指令(或称系统调用、程序请求)供用户程序和其他系统程序调用。当这些程序要求进行数据传输、文件操作或有其他资源要求时,通过这些广义指令向操作系统提出申请,并由操作系统代为完成。
36、 另一种接口是作业一级的接口,提供一组控制操作命令(或称作业控制语言,或像UNIX中的Shell命令语言)供用户去组织和控制自己作业的运行。作业控制方式分两大类:脱机控制和联机控制。操作系统提供脱机控制作业语言和联机控制作业控制语言。,1.5 计算机硬件简介 如前所述,操作系统管理和控制计算机系统中所有软硬件资源。同时,因操作系统是一个运行于硬件之上的系统软件,我们还必须对操作系统运行的硬件环境有所了解。本节简要介绍计算机硬件系统。 1.5.1 计算机的基本硬件元素 构成计算机的基本硬件元素有以下4种:处理器、存储器、输入输出控制与总线、外部设备等。这些基本元素的逻辑关系如图1.6所示。,图1
37、.6 计算机的基本硬件元素,处理器控制和执行计算机的指令操作。一台计算机中可以有多个处理器或单个处理器。本书主要讨论单处理器的操作系统。单处理器也称CPU。存储器用来储存数据和程序。存储器可分为内存与外存,以及用于数据和程序暂时存储用的缓冲器与高速缓存(cache)等。 输入输出控制器与缓冲主要用来控制和暂时存储外部设备与计算机内存之间交换的数据和程序。 外部设备范围很广。它们是获取和输出数据与程序的基本单位,包括数字式设备和模拟式设备。不过,模拟式设备要通过模/数转换后才能把模拟信号输入到计算机,而计算机输出的数字信号则要通过数/模转换之后才能在模拟设备上显示或输出。,计算机系统的各种设备通
38、过总线互相连接。总线是连接计算机各部件的通信线路。计算机系统的总线有单总线和多总线之分。单总线是指处理机、外部设备、存储器等都连接在一起的总线结构,而多总线则指把系统的CPU和内存分开连接,外部设备和外存等也用其他总线分开连接进行管理和数据传送的总线结构。显然,不同的总线结构对操作系统的设计和性能有不同的影响。,1.5.2 与操作系统相关的几种主要寄存器 寄存器与操作系统密切相关,因为它们是在处理机中交换数据的速度比内存更快、体积也更小,而价格又更贵的暂存器件。处理机中寄存的功能分为二类,即用户可编程的寄存器以及控制与状态寄存器。机器语言或汇编语言的程序员可对用户可编程寄存器进行操作,以获得更
39、高的执行效率等。而控制与状态寄存器则被用来对处理机的优先级、保护模式或用户程序执行时的调用关系等进行控制和操作。 一般来说,用户可编程寄存器和控制与状态寄存器之间没有严格的区分和限制,在不同的系统中,寄存器的功能和作用可能不完全相同。,典型的用户可编程寄存器包括以下几种: 1. 数据寄存器 编程人员可以通过程序赋予数据寄存器众多的功能。一般来说,对数据进行操作的任何机器指令都被允许访问数据寄存器。不过,根据硬件设置的规定,这些寄存器也可能只被允许进行浮点运算或被其他某些规定所限制。 2. 地址寄存器 地址寄存器一般用来存放内存中某个数据或指令的地址,或者存放某段数据与指令的入口地址以及被用来进
40、行更复杂的地址计算。下面几种寄存器都可被认为是地址寄存器:,(1) 地址标识位寄存器; (2) 内存管理用各种始地址寄存器; (3) 堆栈指针; (4) 设备地址寄存器等。 3. 条件码寄存器 条件码寄存器也称标志寄存器。条件码寄存器的比特位由处理机硬件设置。 典型的控制与状态寄存器包括以下几种: 4. 程序计数器PC 程序计数器内装有下一周期被执行指令的地址。 5. 指令寄存器IR 指令寄存器内装有待执行指令。,6. 程序状态字PSW 程序状态字寄存器的各个比特位代表系统中当前的各种不同状态与信息。如执行模式是否允许中断等。 7. 中断现场保护寄存器 如果系统允许不同类型的中断存在,则会设置
41、一组中断现场保护寄存器以便保存被中断程序的现场和链接中断恢复处。 8. 过程调用用堆栈 堆栈被用来存放过程调用时的调用名、调用参数、以及返回地址等。 寄存器被广泛应用于计算机系统中,它们与操作系统有着非常直接和密切的关系。操作系统设计人员只有在完全掌握和了解硬件厂商所提供的各种寄存器的功能和接口之后,才能进行操作系统设计。,1.5.3 存储器的访问速度 硬件厂商提供有不同种类的存储器件,这些存储器件包括:可移动存储介质,例如光盘、磁盘和磁带等;硬盘,磁盘缓存内存,高速缓存以及寄存器等。 一般来说,容量越大的存储介质,访问速度会越慢,但单位存储的成本越低。例如,光盘和磁盘。反过来说,如果存储介质
42、的访问速度越高,则它的成本也会越高,例如寄存器。 存储器件的访问速度与存储量的大小的关系如图1.7所示。 除了上述的寄存器与存储介质之外,与操作系统设计相关的硬件器件还有中断机构、输入输出设备控制部分,例如通道和DMA器件等。,图1.7 存储介质的访问速度,1.5.4 指令的执行与中断 计算机提供的最基本功能是执行指令。任何应用程序都只有通过指令的执行才能得以完成。执行指令的基本过程分为两步,即处理机从内存把指令读入的过程和执行的过程。其中,读指令是根据程序计数器PC所指的地址读入,而执行的指令则是指令寄存器IR中的指令。 我们把指令的读入和执行过程称为一个执行周期。如图1.8所示。图1.8
43、指令的执行周期,指令的执行涉及到处理机与内存之间的数据传输,或者是处理机与外部设备之间的数据传输等。指令的执行也涉及到数据处理,例如算术运算或逻辑运算。另外,指令的执行还可以是对其他指令的控制过程。 一条指令的执行可以是上述几种情况的组合。 另外,在指令的执行过程中或一条指令执行结束时,尽管指令地址计数器中已指明了下一条被访问指令的地址,但是,外部设备或计算机内部可能会发来亟须处理的数据或其他紧急事件处理信号。这就需要处理机暂停正在执行的程序,转去处理相应的紧急事件,待处理完毕后再返回原处继续执行,这一过程称为中断,如图1.9所示。,中断给操作系统设计带来许多好处,首先使得实时处理许多紧急事件
44、成为可能;再者,中断可以增加处理机的执行效率;另外,中断还可以简化操作系统的程序设计。图1.9 中断执行过程,具有中断处理时的指令执行过程如图1.10所示。图1.10 中断处理时的指令执行周期 系统发生中断时,处理机收到中断信号,从而不能继续执行程序计数器中所指的原程序。这时处理机将保存当前的执行现场(也就是各寄存器中的值)并调用新的程序到处理机上执行。,1.6 算法的描述 操作系统设计和原理描述中涉及到许多算法。为了描述简单起见,本书定义下述关键词描述算法中有关过程。beginend 分别表示算法的开头和结束。Repeat操作Until 条件 表示当“条件”未被满足时重复所描述的“操作”。,
45、While 条件do操作od 表示当“条件”满足时,进行相应的“操作”。关键词“ do” 和“od”分别表示“操作”的开始和结束。If 条件Then操作Else操作fi,表示满足“if”所指的“条件”时,进行“then”后的相关“操作”,否则完成“else”后的相关操作。关键词“fi”表示条件判断的结束。 例如,图1.8所示指令执行周期可被描述为:Repeat IRMPC;PCPC + 1;ExecuteIR;Until CPU halt; 其中,MPC表示地址为PC所示内存单元中的指令内容。 另一个例子是: 令p1:n为1到n(n1)的整数置换, 设i=1,2,3,4,5,6,7; pi=4
46、,7,3,2,1,5,6;,描述pi的巡回置换算法。(巡回置换指k1:n时,k=p.pk.的置换。) 解:beginlocal x, k;k1;while k=7 doxk;repeat print(x);xpx;until x=k;kk+1;odend,1.7 研究操作系统的几种观点 上面各节,我们讨论了几种操作系统的基本概念、操作系统发展的历史和操作系统的分类和功能以及操作系统所依赖的硬件基础等问题,使我们认识到,操作系统是计算机资源有效使用的管理者和为用户提供友好的接口。这实质上代表了一种讨论操作系统的观点。 这一节我们简单地讨论一下操作系统研究中的不同观点,这些观点彼此并不矛盾,只不过
47、代表了对同一事物(操作系统)站在不同的角度来看待。每一种观点都有助于理解、分析和设计操作系统。,1.7.1 操作系统是计算机资源的管理者 前面已经指出操作系统就是指用来管理和控制计算机系统软硬资源的程序的集合,因此它提供了处理机管理、存储管理、设备管理和信息文件的管理等功能。对于每种资源的管理都可以从资源情况记录、资源分配策略、资源分配和资源回收等几个方面来加以讨论。,1.7.2 用户界面的观点 对于用户来说,对操作系统的内部结构并没有多大的兴趣,他们最关心的是如何利用操作系统提供的服务来有效地使用计算机。因此操作系统提供了什么样的用户界面成为关键问题,即上节中所提出的程序一级和作业一级的两种
48、接口。,1.7.3 进程管理观点 操作系统调用当前程序运行是一个动态过程,特别是现代操作系统的一个重要特征是并发性。并发性是指操作系统控制很多能并发执行的程序段。并发执行的程序在多处理机系统中可能是真正并行执行的,但在单处理机情况下则是宏观并行微观顺序执行的。它们可以完全独立地运行,也可能以间接或直接方式互相依赖和制约。并发的程序段不仅会受到其他程序段活动的制约,也会受到系统资源分配情况的制约。一个程序段可能在运行,也可能因等待某些资源或信息处于挂起状态等。因此只用“操作系统是资源管理程序”这一概念不能揭示它们在系统中活动联系及其状态变化,从而引进“进程” 的概念。所谓“进程”是指并发程序的执行。,用进程观点来研究操作系统就是围绕进程运行过程,即并发程序执行过程来讨论操作系统,那么我们就能讨论清楚“这些资源管理程序在系统中进行活动的过程”,对操作系统功能就能获得更多的认识。,习题 1.1 什么是操作系统的基本功能? 1.2 什么是批处理、分时和实时系统?各有什么特征? 1.3 多道程序设计(multiprogramming)和多重处理(multi-processing)有何区别? 1.4 讨论操作系统可以从哪些角度出发,如何把它们统一起来? 1.5 写出1.6节中巡回置换算法的执行结果。 1.6 设计计算机操作系统时与哪些硬件器件有关?,