Linux操作系统基础教程第1章操作系统概述第1章操作系统概述
(接正文是42mm章题二行)学习目的与要求
通过了解操作系统的产生与发展,领略三大基本类型操作系统截然不同的性能特征,并理解从中引出的一些基本概念以及操作系统的定义、五大管理功能和基本特征。操作系统是计算机资源的管理者,也是用户与计算机之间的友好接口。本章还要求掌握交互式系统中的命令接口和批处理系统中的作业管理与调度策略。
1.1操作系统及其发展历程
如果说计算机是拥有各种资源的复杂而庞大的庄园,用户是庄园的主人,那么操作系统就是组织和管理庄园内所有资源的大管家。引入了操作系统的计算机,用户只需通过操作系统告诉计算机想要做什么,而无须关心该怎么做,因为操作系统会按用户的意图自动组织实施,从而使计算机的操作变得十分简便。
1.1.1操作系统的定义与观点
计算机硬件系统是由处理器(CPU)、存储器和外部设备三大部件组成的,但它们仅仅提供了用户作业赖以活动的物质基础。如果把没有任何软件支持的计算机称为裸机(Bare Machine),那么现在呈现在用户面前的是经过操作系统改造而成的功能更强、使用更方便的虚拟机(Virtual Machine)。因为操作系统在用户和计算机之间架起了一座桥梁,它控制和管理着整个系统的硬件和软件资源,提供了各种软件运行的支撑环境,使用户无须深入硬件就可以方便、透明地使用计算机。
于是,我们给出操作系统较为完整的定义: 操作系统是用来控制和管理计算机系统资源,合理地组织��算机工作流程,以及方便用户操作的程序集合。定义中表达三层含义的三句话,实际上是不同用户从不同侧面看待操作系统的三种观点。
(1) 资源管理观点。这是对系统设计员来说的,资源管理观点的实质是把操作系统看成计算机系统的资源管理程序。计算机系统中的资源按其作用可以分为四大类: 处理器、存储器、外部设备三类硬件以及存放在外存上的信息,操作系统的任务就是对这些资源进行动态地分配、释放、相互配合以及信息的记录和修改,为用户提供一种简单有效的资源使用方法,充分发挥资源的利用率。
(2) 用户管理观点。对一般用户来说,操作系统是用户和计算机之间的接口。也就是说,用户通过操作系统提供的服务来使用计算机。用户要实现的功能由操作系统负责组织,而不需要了解计算机内部是如何工作的。为此,操作系统为用户提供了两种接口: 一种是程序接口,由一组供程序员编程时使用的系统调用程序组成;另一种是命令接口,是提供给操作员可以使用命令或鼠标操作计算机的界面。
(3) 进程管理观点。这是对那些专门研究程序和数据流通的人员来说的,多道程序出现后,同一时间在系统中存在多个独立运行的并发程序,而处理器的数量总是少于并发程序的数量,所以它们在系统中不可能同时占有处理器而真正并行执行,在程序执行过程中会存在相互的制约关系,进程的引入就是为了描述这些并发程序之间的动态执行过程。从这个观点来说,操作系统的作用是对进程进行管理,如进程的创建、调度、撤销以及相互通信等,其实质就是对处理器的时间进行合理的分配和管理。
1.1.2操作系统的产生与发展
计算机从*初的手工操作,到采用监督程序来管理程序执行过程的单道批处理,逐步产生了操作系统的雏形。从此,按不同的应用场合、运行环境以及对系统功能的不同要求,形成了多道批处理系统、分时系统和实时系统三大类性能特点截然不同的操作系统。经过20世纪六七十年代的计算机技术大发展时期后,操作系统到80年代已趋于成熟,呈现出多种类型。因此,操作系统由用户和计算机的客观需要而产生,伴随着计算机技术本身及其应用的日益发展而逐渐发展和不断完善。
下面详细介绍操作系统的产生和发展过程,目的是让读者了解随着计算机的发展而不断引出的新问题以及解决问题的思路,以及引入的许多操作系统的基本概念。
1. 手工操作
在**代计算机时期(1946年至20世纪50年代中期),操作系统尚未出现。这时的计算机采用手工操作方式,用户既是程序员又是操作员,由他们直接对计算机硬件系统进行操作,如图11所示。
图11计算机的手工操作方式
首先,将事先已穿孔的纸带(或卡片)装入纸带输入机(或卡片输入机),再启动它们把程序和数据送入计算机;然后通过控制台开关启动计算机运行程序;当程序运行完毕,并取走计算结果、卸下纸带(或卡片)后,才让下一个用户上机。这种手工操作方式有以下两个缺点。
(1) 用户独占全机。一台计算机的全部资源只能由一个用户独占。
(2) CPU等待人工操作。在用户进行装带(卡)、卸带(卡)等手工操作时间内,CPU是空闲的。
在计算机发展初期,由于运算速度较慢,手工操作在整个程序上机操作过程中所占比例还不是很大,对手工操作方式所造成的资源利用率的降低还能够容忍。但由于CPU速度的提高和系统规模的扩大迅速,而I/O设备的速度提高缓慢,人机速度以及CPU和I/O设备速度的差距都日趋加大。
为了减小这些差距,20世纪50年代末出现了一种脱机输入/输出技术。该技术是指事先将纸带(或卡片)上的程序和数据通过一台外围机输入相对高速的磁带(或磁盘)存储器中,当主机需要执行该程序时再把它们从磁带(或磁盘)上高速地调入内存,如图12所示。输出过程也是类似,先将结果由主机高速地送入磁带(或磁盘),再由外围机将其送到输出设备进行输出。
图12脱机输入/输出方式
这种脱机I/O方式的主要优点如下。
(1) 减少了CPU的空闲时间。装带(卡)、卸带(卡)以及将程序和数据从低速I/O设备送到高速磁带(或磁盘)上,都是在脱机情况下进行的,它们不占用主机时间,从而有效地减少了CPU的空闲时间。
(2) 提高了I/O速度。当CPU在程序运行中需要数据时,是直接从高速的磁带(或磁盘)上将数据调入内存的,不再是从低速I/O设备上调入,从而大大缓解了CPU和I/O设备之间速度的不匹配,进一步提高了CPU的利用率。
2. 单道批处理系统的形成
我们先引入一个作业的概念。用户使用计算机解题时,通常采用某种计算机语言对计算问题编写源程序,准备好运行时的初始数据,同时还要提出如汇编或编译、装配连接、启动执行等用于控制执行过程的要求。作业就是指一次计算过程或者事务处理过程中,从输入开始到输出结束,用户要求计算机所做的全部工作的集合。其中的每一个加工步骤称为作业步。
早期的计算机系统非常昂贵,为了能更充分地利用它,人们尽量让主机开启后能连续地运行。在手工操作阶段,一个作业要完成其全部过程之后才能开始下一个作业,脱机I/O方式为成批处理用户作业的单道批处理系统的形成奠定了基础。
当有大量用户作业提交给计算**要求处理时,计算机操作员可以按作业的优先程度、作业的类型等因素选择一批作业,把它们以脱机的方式输入磁盘;然后由系统配备的监督程序(Monitor)自动控制每个作业从调入内存、汇编或编译、装配连接、启动执行、输出结果的全过程,并使作业一个接一个地连续处理,直到这批作业全部完成为止。这里,监督程序相当于管理者的角色,也是后来形成的操作系统的雏形,它对作业运行过程的管理的描述如图13所示。
图13监督程序管理作业的运行过程
20世纪60年代初期,计算机硬件技术获得了通道技术和中断技术两方面的重大进展。这两项技术的发展使得操作系统进入执行系统(Executive System)阶段,克服了监督程序管理作业运行时可能出现的系统程序和用户程序之间的调用、冲突等问题。执行系统具有以下特点。
(1) I/O工作由主机控制下的通道完成,主机和通道、主机和I/O设备可并行操作。
(2) 用户程序的I/O操作都由系统进行合法性检查后才执行,提高了系统**性。
(3) 除I/O中断外,溢出、时钟等中断可克服错误停机、用户程序的死循环等。
由于系统对作业的处理都是成批进行的,而且在内存中始终只保持一道作业,所以称为单道批处理系统。20世纪50年代末至60年代初,出现了许多成功的单道批处理系统,如FMS、IBSYS等。虽然在系统资源利用率和系统吞吐量等方面,单道批处理系统比手工操作阶段有了显著提高,但还远远没有达到理想的要求。
例如,单道批处理系统有着单道性、顺序性和自动性的特征,也就是说监督程序每次只能从外存上的一批作业中按顺序调入一道作业进入内存,该作业完成运行后,才调入后续作业并运行。然而,实际中的作业有大有小,并且一个作业的运行过程往往是CPU运算和I/O操作交叉进行。一方面,当一个作业在运行中需要进行慢速的I/O操作时,就会造成高速CPU的等待;另一方面,系统内存需要按*大的作业配置,而多数时间内存中只有一道小作业,这就降低了内存的利用率。
严格地说,单道批处理系统还不能称为操作系统,只能算是操作系统的前身。
3. 多道批处理操作系统
在20世纪60年代中期引入了多道程序设计技术,由此形成了多道批处理系统,标志着操作系统进入了成熟的阶段。
在多道批处理系统中,用户提交的作业都先存放在外存并排成一个队列,称为后备队列;然后,由作业调度程序按一定的算法从后备队列中选择若干个(而非一个)作业调入内存,这些在内存中等待CPU调度执行的作业称为进程,也排列成进程的就绪队列,如图14所示,它们将共享CPU和系统中的各种资源。
图14多道批处理系统中的作业调度程序
当CPU正在运行某个进程时,如果需要进行I/O操作,进程调度程序就会让其进入等待队列,并从就绪队列中按一定原则重新选择一个进程占有CPU而运行,使得CPU总是处于忙碌状态。这样,同时存放在内存中的多道程序从微观上看是串行的,但从宏观上看却是并行的,它们同时向前推进,如图15所示。
图15多道批处理系统中的CPU时间分配
可以看出,在多道批处理系统中,CPU、内存和I/O设备的利用率都得到了极大的提高,在保持CPU和I/O设备不断忙碌的同时,也必然会大幅度地提高系统的吞吐量。因此,资源利用率高和系统吞吐量大是多道批处理系统的两个*大优点。
但是,多道批处理系统也存在着两个主要缺点: ①无交互能力,用户把作业提交给系统后直至作业完成,都不能与自己的作业进行交互,这对修改和调试程序极为不便; ②平均周转时间长,由于作业要排队依次进行处理,所以一个作业从进入系统开始到它完成并退出系统所经历的时间往往较长,通常需要几个小时甚至几天的时间。
多道批处理系统具有操作系统的五大管理功能,为使系统中的多道程序间能协调地运行,必须解决以下几个方面的主要技术问题。
(1) 并行运行的多道程序要共享计算机系统的硬件和软件资源,它们不仅要竞争,还要彼此同步,所以同步与互斥机制成为操作系统设计中的重要问题。
(2) 随着多道程序的增加,出现了内存不够用的问题,提高内存的使用效率就变得十分重要,也因此出现了诸如覆盖技术、对换技术和虚拟存储技术等内存管理技术。
(3) 多道程序存在于内存,就要保证系统程序存储区和各用户程序存储区的**可靠,由此提出了内存保护的要求。
4. 分时操作系统
20世纪60年代,计算机的运算速度有了很大提高,但它仍然十分昂贵,不可能像现在这样每人独占一台计算机。如果说追求高资源利用率和系统吞吐率是多道批处理系统的设计目标,那么用户对人机的交互、多用户共享主机以及方便的作业控制等方面的迫切要求,是推动分时操作系统形成和发展的主要动力。
分时系统就是为了满足用户需要所形成的一种新型操作系统,它与多道批处理系统有着截然不同的性能目标。多用户分时系统如图16所示。
图16多用户分时系统
在多用户分时系统中,一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,每个用户都可以通过自己的终端以交互方式使用计算机。要实现分时系统,必须解决以下两个关键问题。
(1) 如何使多个终端用户共享系统资源。为解决这一问题,人们把计算机系统中具有运行能力的资源(如CPU、I/O设备等)的时间划分成很小的时间片,然后按一定规则分配给需要它的程序。例如,假设系统连接了50个终端,系统轮流为每个终端分配10ms的CPU时间用来接收和处理用户输入的命令。这样,对某个终端用户来说,每隔500ms就会轮到一次服务,避免了像批处理系统中一个作业可能长时间占用CPU的情形。由于响应速度足够快,所以用户感觉就像自己独占了一台主机一样。显然,时间片长短的选择至关重要,它将直接影响着分时系统的性能。如果时间片过长,则无法满足用户对响应时间的要求;如果时间片过短,则系统在多个终端用户之间切换处理而需要花费的额外开销就会大大增加,从而降低系统效率。
(2) 如何使终端用户能方便地与自己的作业命令交互。系统为每个联机的终端用户创建一个操作界面,当用户在自己的终端上输入作业命令时,系统应及时地接收该作业命令,并直接调入内存进行处理,*后将处理结果返回用户。接着,用户又可以输入下一条命令,也就实现了人机交互。这一工作方式与批处理系统完全不同,批处理系统中是先将作业存入磁盘,然后再调入内存运行,因为磁盘上的作业无法运行,也就无法实现交互。
在具体实现上,分时系统有单道分时系统、具有“前台”和“后台”的分时系统以及多道分时系统等三种实现方法。现在所使用的分时系统都属于引入了多道程序设计技术而形成的多道分时系统。与批处理系统相比,分时系统具有以下特征。
(1) 交互性。用户可通过终端与系统进行广泛的人机交互。主要表现在两个方面: ①为用户提供了良好的软件开发和调试环境,使用户可以在程序动态运行情况下对其加以控制,为用户上机提交作业提供了方便,尤其对于远程终端用户; ②为用户之间进行合作提供方便,通过文件系统、电子邮件或其他通信机制可以彼此交换信息。
(2) 及时性。每个终端用户的请求都能在很短的时间内获得响应,其时间间隔是根据人们所能接受的等待时间来确定的,通常为2~3s。
(3) 多路性。多路性也就是同时性,是指允许在一台主机上同时连接多台联机终端,系统按分时原则为每个用户服务,多个用户共享CPU和其他资源,充分发挥了系统的效率。
(4) 独立性。每个用户各占一个终端,彼此独立操作,由于每个用户都能快速得到响应,所以客观上用户感觉不到其他用户的存在,就像独占计算机一样。
5. 实时操作系统
20世纪60年代中期进入了第三代计算机的发展时期,计算机的各项性能都有了很大的提高,造价大幅度下降,使计算机的应用领域日益扩大,逐步向实时控制和实时信息处理等领域渗透。尽管分时系统已考虑用户对响应时间的要求,但其及时性还远远不能满足实时控制和实时信息处理的需要。
(1) 实时控制系统。当计算机用于生产过程的实时控制而形成以计算机为**的控制系统时,系统要求能实时采集现场数据并及时处理,进而自动控制相应的执行机构,使某些参数(如温度、压力、方位等)能按预定的规律变化,以保证产品的质量并提高产量。类似地,也可以将计算机用于武器的控制,如火炮的自动控制、飞机的自动驾驶、导弹的制导等。通常把要求进行实时控制的系统称为实时控制系统。
(2) 实时信息处理系统。这是要求对信息进行实时处理的系统。这类系统通常由一台或多台主机通过通信线路连接成百上千个远程终端,计算机接收远程终端发来的服务请求,根据用户提出的问题,对信息进行检索和处理,并在很短的时间内为用户做出正确的回答。典型的实时信息系统有: 飞机订票系统、情报检索系统等。
实时控制系统和实时信息处理系统统称为实时系统。实时系统中必定存在着若干个实时任务,它们反映或控制着相应的外部事件,因而具有某种程度的紧迫性。按执行时是否呈现周期性来划分,任务有周期性任务和非周期性任务两大类。其中,非周期性任务又分为开始截止时间任务和完成截止时间任务两种。因此,实���系统*明显的特征是实时性、可靠性和专用性。
(1) 实时性。实时信息系统对实时性的要求虽然也是以人们所能接受的等待时间来确定的,但通常要求响应速度要比分时系统更严格一些;而实时控制系统是根据控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、毫秒级,有的甚至要求低于100μs。
(2) 可靠性。实时系统要求系统高度可靠,因为任何软、硬件上的故障或差错都可能带来巨大的经济损失,甚至造成无法预料的灾难性后果。因此,在实时系统中,往往都会采取多级容错措施,以保证系统的**及数据的**。例如,在硬件上采用双工体制,用两台完全相同的计算机,一台作为主机用于实时控制或实时处理,另一台则和主机并行工作用作后备。它们在任何时刻都保持相同的CPU现场,若一台主机发生故障,后备机就立即代替主机继续工作,以确保系统不间断地运行。又如,在对信息可靠性要求较高的场合可以采用多存储系统,即将相同的数据在不同存储位置上以镜像方式重复保存多个副本。
(3) 专用性。正是由于不同的控制和处理对象对实时性和可靠性有着特殊的要求,所以实时系统通常都是针对具体的应用而专门设计的,属于专用系统。
实时系统与批处理系统不同,它强调的是实时性和可靠性,而不是追求很高的资源利用率和系统吞吐量。实时系统与分时系统也不同,尽管它具有多路性、独立性和交互性的特征,但这些特征通常都有一定的针对性。例如,实时系统中的交互性一般只允许用户使用它提供的少量专用命令,不允许用户编写或修改程序。另外,实时系统中没有作业和“道”的概念,也就不存在作业的调度和切换问题。
1.1.3操作系统的进一步发展
批处理系统、分时系统和实时系统构成了操作系统的3种基本类型,而现在一个实际的操作系统则往往兼有三者或其中两者的功能特点。随着微机和网络技术的发展,操作系统也进一步形成了微机操作系统、网络操作系统、分布式操作系统等多种类型。
1. 微机操作系统
配置在微机上的操作系统称为微机操作系统。*早出现的微机操作系统是在8位微机上的CP/M,后来出现了16位和32位微机,相应地也就出现了16位和32位的微机操作系统。但从操作系统的技术实现角度来说,通常把微机操作系统分为单用户单任务操作系统、单用户多任务操作系统和多用户多任务操作系统3种。
(1) 单用户单任务操作系统。这是一种*简单的微机操作系统,只允许一个用户上机,且只允许用户程序作为一个任务运行。这类操作系统主要配置在8位和16位微机上,*具代表性的是CP/M(Control Program/Monitor)和MSDOS操作系统。CP/M是1975年由Digital Research公司率先推出的带有软盘系统的8位微机操作系统,配置在以Intel 8080、8085、Z80芯片为基础的微机上。MSDOS是1981年由Microsoft公司开发,配置在IBM公司推出的基于16位Intel 8086 CPU的个人计算机(PC)上。它在 CP/M 的基础上进行了较大的扩充,具有较强的功能和性能优良的文件系统。
(2) 单用户多任务操作系统。这种操作系统只允许一个用户上机,但允许将一个用户程序分成若干个任务,使它们并发执行,从而有效地改善系统的性能。随着386、486到P4等32位微机的出现,多任务处理能力和图形用户界面成为微机操作系统的发展趋势,其中*具代表性的是OS/2和Windows操作系统。OS/2是在1987年针对80286开发的16位微机操作系统;Windows是在1990年推出的,以其易学易用、友好的图形用户界面,以及支持多任务等优点,成为PC上的主流操作系统。
(3) 多用户多任务操作系统。这种操作系统允许多个用户通过各自的终端使用同一台主机,共享主机系统中的各类资源,而每个用户程序又可进一步分为多个任务,使它们并发执行,从而进一步提高资源利用率和系统的吞吐量。大、中、小型机中配置的都是多用户多任务操作系统,32位微机上也有不少配置这类操作系统,其中*具代表性的是UNIX和Linux。UNIX*初于20世纪60年代末配置在DEC公司的小型机PDP上,是由美国电报电话公司的Bell实验室开发的一套集中式多用户分时操作系统,它不仅具有强大的系统功能,而且在系统**性、稳定性、可靠性以及多任务处理能力等方面具有一定的优势。Linux是*初于1991年由Linus Torvalds开发,是一套完全免费并开放源代码的类UNIX操作系统,本书将在第2章予以详细介绍。
2. 网络操作系统
计算机网络是计算机技术和通信技术高度发展并相互结合的产物,它可以定义为: 将地理位置不同的、功能独立的多个计算机系统,通过通信设备和线路连接起来,由功能完善的网络软件将其有机地联系到一起并进行管理,从而实现网络资源共享和信息传递的系统。一般来说,通信距离的远近决定着传输速率的快慢,而传输速率又极大地影响着网络硬件和软件技术的各个方面,所以人们通常按照网络覆盖范围的大小,把计算机网络分为局域网(LAN)、广域网(WAN)和城域网(MAN)三类。
为计算机网络所配置的操作系统称为网络操作系统,它除了具备通常意义上的操作系统所具有的功能外,*为突出的就是还具有网络管理模块和通信软件。通信软件是一种交流的协议,是各计算机在通信中需要共同遵守的规则。网络操作系统应具有网络通信、资源管理、网络服务、网络管理和互操作能力5个方面的功能。
注意: 多用户分时系统看上去与星状结构的计算机网络非常相似,但两者完全不同。分时系统中各用户使用的是由显示器、键盘和一个串行接口组成的终端,没有CPU和内存,也就没有处理能力,只能用于输入和传输用户的请求给主机,然后接收来自主机的处理结果并显示出来;而连接在计算机网络中的都是具有独立运行能力的计算机系统。当然,个人计算机上配置适当的仿真软件或硬件后,也可以作为一台智能终端来使用。
3. 分布式操作系统
在以往的计算机系统中,处理和控制功能都高度集中在一台主机上,所有的任务都由主机处理,这种系统称为集中式处理系统。分布式处理系统是指由多个分散的处理单元经网络的连接而形成的系统。其中,每个处理单元既具有高度的自治性,又相互协同,能在系统范围内实现资源管理、动态分配任务、并行运行分布式程序。
可见,分布式处理系统*基本的特征就是处理上的分布,其实质是资源、功能、任务和控制都是分布式的。
在分布式处理系统上配置的操作系统称为分布式操作系统。分布式处理系统是以网络为基础发展起来的,因此分布式操作系统与网络操作系统有许多相似之处,但在分布性、并行性、透明性、共享性和健壮性等方面两者也各有特点。
1.2操作系统的功能与特征〖1〗1.2.1操作系统的功能操作系统的主要任务是控制和管理计算机系统中的资源。正是基于这种资源管理的观点,无论哪种类型的操作系统,其功能都可分为处理器管理、存储器管理、设备管理、信息管理(文件系统)和用户接口(作业管理)五大模块。
1. 处理器管理
处理器是计算机*珍贵的核心资源,所有程序的运行都要靠它来实现。处理器管理的主要任务是对处理器进行分配,并对其运行进行有效的控制和管理。在单道环境下,处理器被一个作业独占,对处理器的管理十分简单。但在多道程序并发执行的环境下,必须引入进程来动态地描述程序的执行过程,并以进程为单位来分配处理器,因而对处理器的管理可归结为对进程的管理。它主要包括以下几个方面。
(1) 进程控制。其主要任务包括: ①为用户要运行的作业分配必要的资源,并创建进程; ②控制进程在运行过程中的状态转换,因为多个进程共享处理器,就必须对处理器时间合理分配; ③负责撤销已结束的进程,并回收其占有的资源。
(2) 进程调度。其主要任务是从进程的就绪队列中,按某种调度策略(算法)选择一个进程投入运行,即把处理器分配给它,并为它设置运行现场。
(3) 进程同步。由于多个进程竞争处理器资源,每个进程都以人们不可预知的速度向前推进,进程之间可能存在同步和互斥两种关系,因此要在系统中设置同步机制,对各进程的运行进行协调,从而实现进程的同步与互斥。
(4) 进程通信。在多道环境下,系统可能为一个应用程序建立多个进程,它们相互合作完成共同的任务。进程通信的任务就是使相互合作的进程之间实现信息的交换。
2. 存储器管理
存储器是计算机中有限的宝贵资源,因为其*大容量受地址总线位数的限制。尽管硬件的发展使存储器容量不断扩大,但无法满足多道程序环境下用户对存储容量无止境