计算机操作系统(第3版)(微课版)
上QQ阅读APP看书,第一时间看更新

第1章 绪论

1.1 操作系统在计算机系统中的地位

1.1.1 存储程序式计算机的结构和特点

随着科学技术的飞速发展,人类生活质量的不断提高,生产实践和社会活动的水平不断地提升,计算机应用随之广泛深入。在计算机应用中,如科学计算、数据处理、金融、航天、电信、信息家电等领域,都有大量的问题需要计算机来解决。

任何问题的求解都需要给出其形式化定义和求解方法的形式描述。对问题的形式化定义称为数学模型,问题求解方法的形式描述称为算法,通常将一个算法的实现叫作一次计算。而对问题的求解还必须有实现算法的工具或设施。

认识操作系统

实现算法的工具或设施从最初的算盘,大量使用的计算器,直到现代的、几乎无所不能的计算机,发生了巨大的变化。然而,这些工具的计算方法的本质特征是相同的,算盘和计算器都可以进行加、减、乘、除运算。人们要解决某一问题,只有将问题的求解方法归结为四则运算问题后,才可以用算盘之类的工具进行计算。当遇到一个复杂的算法时,如求解一个微分方程,就必须将微分方程的解法转化为数值解法。这种计算称为手工计算方式,算盘或计算器是手工计算的一种工具。在这种计算方式下,人们按照预先确定的一种计算方案,先输入原始数据,然后按操作步骤做第一步计算,记下中间结果,再做第二步计算,直到算出最终结果,并把结果记录在纸上。在这一过程中,输入原始数据、执行运算操作、中间结果的存储和最终结果的抄录都是依靠人来操作完成的,所以,这一计算过程是手工操作过程。

现代计算机归根到底还是进行四则运算,不过,最重要的是它还具有自动计算和逻辑判断能力。著名数学家冯·诺依曼(Von Neumann)总结了手工操作的规律以及前人研究计算机的经验,于20世纪40年代提出了“存储程序式计算机”方案,即冯·诺依曼计算机体系结构,实现了计算的自动化。计算机要进行自动计算,必须有计算方案或计算机程序存放在机器内,计算机还必须能“理解”程序语言的含义并顺序执行指定的操作,能及时取得初始数据和中间数据,能够自动地输出结果。根据这样的分析,冯·诺依曼计算机必须有一个存储器用来存储程序和数据;有一个运算器用以执行指定的操作;有一个控制部件用来实现操作的顺序;还要有输入/输出(简称I/O)设备,以便输入数据和输出计算结果。

存储程序式计算机的结构包括中央处理器(CPU)、存储器和输入/输出设备。所有的单元都通过总线连接,总线分为地址总线和数据总线,分别连接不同的部件。冯·诺依曼计算机体系结构如图1.1所示。从20世纪40年代至今,计算机体系结构不断地发展变化,但对于单CPU结构的计算机而言,仍然是存储程序式计算机的体系结构。

图1.1 冯·诺依曼计算机体系结构

CPU(又称为中央处理器)是一种能够解释指令、执行指令并控制操作顺序的硬设备。它由算术逻辑运算单元(ALU)和控制单元构成。ALU包含一个能完成算术逻辑操作的功能单元以及一组通用寄存器和状态寄存器,通用寄存器为功能单元提供操作数,并能接收、保存操作的结果。状态寄存器保存着处理机运行过程中的当前状态。现代的CPU一般包含32~64个通用寄存器,每个寄存器能够保存一个32位(bit)的数值。控制单元负责从主存储器提取指令、分析其类型,并产生信号通知计算机其他部分执行指令所指定的操作。控制单元包含一个程序计数器(Program Counter,PC)和一个指令寄存器(Instruction Register,IR)。程序计数器指示下一步应该执行的指令,而指令寄存器包含当前指令的拷贝。

主存储器(Main Memory)简称主存,是组成计算机的一个重要部件,其作用是存放指令和数据,并能由中央处理器直接随机存取。主存接口由存储地址寄存器(Memory Address Register,MAR)、存储数据寄存器(Memory Data Register,MDR)以及命令寄存器(Command Register,CR)三个寄存器组成。主存的单元数目和每个单元的位数取决于当时的电子制造技术以及硬件设计考虑。现代计算机为了提高性能,兼顾合理的造价,往往采用多级存储体系。多级存储体系由存储容量小、存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器,存储容量大但存取速度较慢的辅存储器组成。

输入/输出设备(I/O设备)负责信息的传输,将数据从外部世界传送到计算机内,或将主存中的内容传输到计算机的外部世界。输入/输出设备分为存储设备(如磁盘或磁带)、字符设备(如终端显示器、鼠标)和通信设备(如连接调制解调器的串行端口或网络接口)。每个设备通过设备控制器与计算机的地址总线和数据总线相连。控制器提供一组物理部件,可以通过CPU指令操纵它们以完成输入/输出操作。

冯·诺依曼计算机是人类历史上第一次实现自动计算的计算机,它的影响是十分深远的。它采用顺序过程计算模型,具有逻辑判断能力和自动连续运算能力,特点是集中顺序过程控制。其计算是过程性的,完全模拟手工操作过程,即首先取原始数据,执行一个操作,将中间结果保存起来,再取一个数,与中间结果一起执行下一个操作,如此计算下去,直到计算完成。系统中的程序计数器体现其顺序性(在单CPU的计算机系统中只有一个程序计数器),计算机根据程序设定的顺序依次执行每一个操作。集中控制是指机器各部件的工作由CPU集中管理和指挥。

1.1.2 操作系统与计算机系统各层次的关系

现代计算机系统拥有丰富的硬件和软件资源。硬件是指组成计算机的机械的、磁性的、电子的装置或部件,也称为硬设备。硬件包括中央处理器(CPU)、存储器和各类外部设备。由这些硬件组成的机器称为裸机。

如果用户直接在裸机上处理程序将会寸步难行。因为裸机不包括任何软件,没有程序设计语言及编译系统、没有编辑软件、没有操作系统(不提供数据输入/输出、文件处理等功能)……总之,裸机不提供任何可以帮助用户解决问题的手段,没有方便应用程序运行的环境。用户在使用计算机时希望十分方便,应用程序在处理时需要各方面的支持,这一切若要求硬件完成,不仅成本极高,有些功能硬件也不可能实现,而且对用户使用计算机也将造成极大的障碍。所以,在裸机上必须配置软件,以满足用户的各种要求,特别是那些复杂而又灵活的要求。

软件由程序、数据和在研制过程中形成的各种文档资料组成,是方便用户和充分发挥计算机效能的各种程序的总称。软件可分为以下3类。

①系统软件:操作系统、编译程序、程序设计语言,以及与计算机密切相关的程序。

②应用软件:各种应用程序、软件包(如数理统计软件包、运筹计算软件包等)。

③工具软件:各种诊断程序、检查程序、引导程序。

整个计算机系统的组成可用图1.2来描述。由图1.2可知,计算机系统由硬件和软件两部分组成。硬件处于计算机系统的底层;软件在硬件的外围,由操作系统、其他的系统软件、应用程序构成。硬件是计算机系统的物质基础,没有硬件就不能执行指令和实施最基本、最简单的操作,软件也就失去了效用;而若只有硬件,没有配置相应的软件,计算机也不能发挥它的潜在能力,这些硬件资源也就没有活力。软件和硬件有机地结合在一起构成了计算机系统。

在所有软件中,有一个重要的系统软件称为操作系统。它管理系统中的各种软、硬资源,控制用户和应用程序的工作流程,将系统各部件有机地融合成一个整体,使计算机真正体现了系统的完整性和可利用性。

图1.2 计算机系统的组成

在计算机系统中,操作系统的位置处在硬件和其他所有软件之间。它在裸机上运行,是所有软件中与硬件相连的第一层软件。从操作系统在计算机系统中的位置可以分析操作系统与各层之间的关系,这对于理解操作系统应具备的功能以及实现这些功能的方法是十分重要的。操作系统与各层的关系表现在两个方面:一是操作系统对各层的管理和控制;二是各层对操作系统的影响和制约。

1.操作系统对各层的管理和控制

(1)操作系统直接与硬件交互

控制CPU的工作、访问存储器、进行设备驱动和设备中断处理。

(2)操作系统与用户和应用程序交互

操作系统是其他系统软件和应用程序运行的基础,它为上层软件和用户提供运行环境,即提供方便、简单的用户接口。

2.各层对操作系统的制约

(1)计算机系统结构对操作系统实现技术的制约

硬件提供了操作系统的运行基础,计算机的系统结构对操作系统的实现技术有着重大的影响。例如,单CPU计算机的特点是集中顺序过程控制,其计算模型是顺序过程计算模型。而现代操作系统大多数是多用户、多任务操作系统,是一个并行计算模型,这就是一对矛盾。

大家熟知的Windows系统就是一个多任务操作系统,用户在Windows系统中可以开很多窗口,一个窗口就是一个任务,系统支持多个任务同时执行。例如,你正在编辑一个图像时,可以听着音乐,同时还可下载一个文件。那么单CPU计算机如何运行多任务呢?这是一件十分困难的事,需要许多技术来支持。为此,操作系统提出并实现了以下各章节要讨论的内容(如多道程序设计技术、分时技术;进程概念、进程控制及同步;资源分配与调度的机制和策略),使得在单CPU的计算机上能实现多任务操作系统。这就是计算机的系统结构对操作系统的实现技术的影响和制约。

(2)用户和应用程序的需求对操作系统实现技术的制约

用户和上层软件运行在操作系统提供的环境上,对操作系统会提出各种要求,操作系统必须满足不同的应用需求,提供良好的用户界面,为此需要设计不同类型的操作系统。例如,多用户需要公平的响应,直接与计算机“会话”,这就需要分时操作系统。若要进行过程控制或实时信息处理,应用程序需要实时响应,这时操作系统必须提供实时和具有可预测能力的服务,即提供实时操作系统。所以,在操作系统的设计和采用的实现技术上都要考虑自己的定位,要充分考虑用户和上层软件的需求。

操作系统自它诞生之日起就明确了自己的宗旨——提高计算机的使用效率,方便用户的使用。在操作系统发展的初期,由于硬件价格昂贵,提高计算机的使用效率被放在了第一位,随着计算机硬件技术、微电子技术的快速发展,计算机应用的普及和应用水平的日益提高,方便用户的使用、提高服务质量(QoS)越来越重要。在操作系统的功能实现上必须考虑这一因素和变化。

1.1.3 操作系统与计算机体系结构的关系

计算机系统的硬件基础是冯·诺依曼计算机,而构成计算机系统的另一个重要的系统软件是操作系统。操作系统是运行在计算机上的第一层系统软件,必然受到冯·诺依曼计算机结构特点的制约和影响。

早期的计算机上配置的操作系统是单用户操作系统。这样的操作系统只允许一个用户使用计算机,用户独占计算机系统的各种资源,整个系统为用户的程序运行提供服务。在这种情况下,除了CPU和外部设备有可能提供并行操作外,其余的活动都是顺序操作。这种单用户操作系统也是顺序计算模型,容易实现。但存在的问题是,昂贵的计算机硬部件没有得到充分利用,计算机的性能,特别是资源利用率不能充分地发挥。

为了提高资源利用率,操作系统必须能支持多个用户共用一个计算机系统,必须解决多个应用程序共享计算机系统资源的问题,也需要解决这些应用程序共同执行时的协调问题。为此,人们研究并实现了一系列新的软件技术,如多道程序设计技术、分时技术;多任务控制和协调;解决资源分配和调度的策略和方法。这些技术已经载入操作系统发展的光荣史册,并被人们誉为20世纪60年代至70年代计算机科学的奇迹,在近代又得到不断的完善和进一步发展,这些技术的应用取得了可观的经济效益。人们所做的努力实际上是采用了并行处理技术,将单处理机系统改造成了逻辑上的多计算机系统(现代操作系统大都是多用户、多任务操作系统)。多用户、多任务操作系统的计算模型是并行计算模型。

由于计算机系统的计算模型是顺序计算模型,其特点是集中顺序过程控制,而操作系统需要支持的是多用户、多任务的同时执行,是并行计算模型,这就产生了一对矛盾,即硬件结构的顺序计算模型和操作系统的并行计算模型的矛盾。为了解决这一矛盾,单处理机的操作系统的实现技术变得非常复杂、不易理解,最终使操作系统成为一个庞然大物,且效果并不一定很理想。

在单CPU计算机上配置的操作系统越来越复杂的情况下,人们研究与并行计算模型一致的计算机系统结构,出现了多处理机系统、消息传递型多计算机和计算机网络等具有并行处理能力的计算机系统结构。

1.多处理机系统

多处理机系统具有多个处理器,所有处理器共享一个公共主存,共享I/O通道、控制器和外部设备。它的特点是通过共享存储器实现多个处理机(结点)之间的互相通信,由于高度的资源共享,被称为紧耦合系统。但多处理机系统存在瓶颈、可扩展性差的问题。

2.消息传递型多计算机

消息传递型多计算机由两台以上的计算机组成,每台计算机有自己的控制部件、本地存储器(处理机/存储器对)或I/O设备,按MIMD(多指令流多数据流)模式执行程序,采用消息通信机制实现通信。消息传递型多计算机的一般结构如图1.3所示。

图1.3 消息传递型多计算机的一般结构

消息传递型多计算机又可称为大规模并行计算机MPP(Massivery Parallel Processor),其中定制网络的结构可以是网格、环、超立方体、带环立方体结构等。

消息传递型多计算机的结构特点是:①多个处理机/存储器对;②分布存储,无共享资源;③消息传递网络,由硬件直连,传递速率高;④可扩展性好。这种结构的并行计算机是具有分布存储的多计算机系统。

3.计算机网络

计算机网络是通过通信线将独立自治的计算机互连而成的集合体。互连是指两台计算机之间彼此交换信息,可以通过电缆、光缆、微波、卫星等方式进行互连。独立自治指的是网络中每一台计算机都是独立自治的,没有主从关系。

计算机网络的特点是:①具有多个处理部件;②无公共主存;③有消息通信机制。组成计算机网络的各计算机的位置可以分布在不同的地方,甚至可以相距很远。这一点与消息传递型多计算机不同。消息传递型多计算机的各节点由定制网络连接,它们互相分离但距离不大。

伴随着计算机体系结构的变化,计算机的应用需求也在不断地提高,操作系统随之不断地发展变化,出现了不同类型的操作系统。其类型有批量操作系统、分时操作系统、实时操作系统、个人计算机操作系统,采用分时技术、多任务并发活动处理、资源分配与调度等技术。现代操作系统的代表有Windows、UNIX、Linux系统等。在具有并行处理能力的计算机系统上配置的操作系统类型依具体的结构不同而不同,有网络操作系统、多处理机操作系统、集群操作系统、分布式操作系统等。

目前在市场上销售的计算机,大部分仍然采用冯·诺依曼式计算机的结构,预计将来也仍然是如此。因此,我们一方面要学好当前计算机系统上配置的操作系统,另一方面也要关心计算机系统结构发展的新趋势。从计算机体系结构的角度出发去分析操作系统,就容易理解操作系统的功能和实现技术。通过这样的分析,不但可以学到对当前有用的知识,而且可以鉴别哪些是合理的,哪些是需要改造的,哪些是将来仍然有用的。