1.1 操作系统在计算机系统中的地位
1.1.1 存储程序式计算机的结构和特点
随着科学技术的飞速发展,人类生活质量的不断提高,生产实践和社会活动的水平不断地提升,计算机应用随之深入且广泛。在大量的计算机应用中,如科学计算、数据处理、金融、航天、电信、信息家电等领域,都有大量的问题需要计算机来解决。
任何问题的求解都需要给出其形式化定义和求解方法的形式描述。对问题的形式化定义称为数学模型,问题求解方法的形式描述称为算法,通常将一个算法的实现叫作一次计算。而对问题的求解还必须有实现算法的工具或设施。
实现算法的工具或设施从最初的算盘,大量使用的计算器,直到现代的、几乎无所不能的计算机,发生了巨大的变化。然而,这些工具的计算方法的本质特征是相同的,算盘和计算器都可以进行加、减、乘、除运算。人们要解决某一问题,只有将问题的求解方法归结为四则运算问题后,才可以用算盘之类的工具进行计算。当遇到一个复杂的算法时,如求解一个微分方程,就必须将微分方程的解法转化为数值解法。这种计算称为手工计算方式,算盘或计算器是手工计算的一种工具。在这种计算方式下,人们按照预先确定的一种计算方案,先输入原始数据,然后按操作步骤做第一步计算,记下中间结果,再做第二步计算,直到算出最终结果,并把结果记录在纸上。在这一过程中,输入原始数据、执行运算操作、中间结果的存储和最终结果的抄录都是依靠人来操作完成的,所以,这一计算过程是手工操作过程。
现代计算机归根到底还是进行四则运算,不过,最重要的是它还具有自动计算和逻辑判断能力。著名数学家冯•诺依曼(Von Neumann)总结了手工操作的规律以及前人研究计算机的经验,于20世纪40年代提出了“存储程序式计算机”方案,即冯•诺依曼计算机体系结构,实现了计算的自动化。计算机要进行自动计算,必须有计算方案或计算机程序存放在机器内,计算机还必须能“理解”程序语言的含义并顺序执行指定的操作,能及时取得初始数据和中间数据,能够自动地输出结果。根据这样的分析,冯•诺依曼计算机必须有一个存储器用来存储程序和数据;有一个运算器用以执行指定的操作;有一个控制部件用来实现操作的顺序;还要有输入/输出(简称I/O)设备,以便输入数据和输出计算结果。
存储程序式计算机的结构包括中央处理器(CPU)、存储器和输入/输出设备。所有的单元都通过总线连接,总线分为地址总线和数据总线,分别连接不同的部件。冯•诺依曼计算机体系结构如图1.1所示。从20世纪40年代至今,计算机体系结构不断地发展变化,但对于单CPU的计算机而言,其结构仍然是存储程序式计算机的体系结构。
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.操作系统对各层的管理和控制
(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所示。
消息传递型多计算机又可称为大规模并行计算机MPP(Massivery Parallel Processor),其中定制网络的结构可以是网格、环、超立方体、带环立方体结构等。
消息传递型多计算机的结构特点是:①多个处理机/存储器对;②分布存储,无共享资源;③消息传递网络,由硬件直连,传递速率高;④可扩展性好。这种结构的并行计算机是具有分布存储的多计算机系统。
3.计算机网络
计算机网络是通过通信线将独立自治的计算机互连而成的集合体。互连是指两台计算机之间彼此交换信息,可以通过电缆、光缆、微波、卫星等方式进行互连。独立自治指的是网络中每一台计算机都是独立自治的,没有主从关系。
计算机网络的特点是:
①具有多个处理部件;
②无公共主存;
③有消息通信机制。组成计算机网络的各计算机的位置可以分布在不同的地方,甚至可以相距很远。这一点与消息传递型多计算机不同。消息传递型多计算机的各节点由定制网络连接,它们互相分离但距离不大。
伴随着计算机体系结构的变化,计算机的应用需求也在不断地提高,操作系统随之不断地发展变化,出现了不同类型的操作系统。其类型有批量操作系统、分时操作系统、实时操作系统、个人计算机操作系统,采用分时技术、多任务并发活动处理、资源分配与调度等技术。现代操作系统的代表有Windows、UNIX、Linux系统等。在具有并行处理能力的计算机系统上配置的操作系统类型依具体的结构不同而不同,有网络操作系统、多处理机操作系统、集群操作系统、分布式操作系统等。
目前在市场上销售的计算机,大部分仍然采用冯•诺依曼式计算机的结构,预计将来也仍然是如此。因此,我们一方面要学好当前计算机系统上配置的操作系统,另一方面也要关心计算机系统结构发展的新趋势。从计算机体系结构的角度出发去分析操作系统,就容易理解操作系统的功能和实现技术。通过这样的分析,不但可以学到对当前有用的知识,而且可以鉴别哪些是合理的,哪些是需要改造的,哪些是将来仍然有用的。
1.2 操作系统的形成和发展
操作系统是由客观的需要而产生,随着计算机技术的发展、计算机体系结构的变化和计算机应用的日益广泛而不断地发展和完善的。它的功能由弱到强,在计算机系统中的地位也不断提高,以至成为系统的核心。操作系统的发展与当时的硬件基础和软件技术水平有着密切的关系。本章讨论操作系统的发展历程,读者应该关注操作系统的发展经历了哪几个阶段,每个阶段具备的硬件支持、所采用的软件技术、获得的成就、解决的问题,以及进一步发展出现的新问题,这样我们就能了解操作系统产生的必然性和促使它发展的根本原因。
从20世纪40年代至今,组成计算机的元器件经历了电子管时代、集成电路时代、超大规模集成电路时代。硬件技术在20世纪60年代初期有了两个重大突破——通道的引入和中断技术的出现。硬件技术的成果使操作系统支持多个程序同时运行成为可能。外部设备从只有纸带输入机、磁带机,发展到出现磁盘、磁鼓、磁盘阵列、光盘塔等存储设备,调制解调器、网络接口等通信设备,这些设备使操作系统与外界的联系与通信更加方便和快捷。计算机体系结构也在不断地变化,由单CPU的计算机系统发展到具有并行处理能力的计算机系统,在不同体系结构的计算机系统上配置了不同类型的操作系统。
操作系统的发展过程经历了操作系统发展的初级阶段、操作系统的形成以及进一步发展这3个大的阶段。操作系统发展的初级阶段又可分为早期批处理、脱机批处理和执行系统3个过程;操作系统形成的标志性特征是采用了多道程序设计技术和分时技术,这一阶段出现了批量操作系统、分时操作系统和实时操作系统;从20世纪80年代以来,操作系统得到了进一步发展,出现了功能更强、使用更为方便的各种不同类型的操作系统。
1.2.1 操作系统发展的初级阶段
1946年至20世纪50年代后期,计算机的发展处于电子管时代,构成计算机的主要元件是电子管,其运算速度很慢(只有几千次/秒)。早期计算机由主机、输入设备(如纸带输入机、卡片阅读机)、输出设备(如打印机)和控制台组成。人们在早期计算机上解题采用的是手工操作方式,即用户用手工方式安装或拆卸,控制数据的输入或输出,通过设置物理地址启动程序运行,这些手工操作称为“人工干预”。在早期计算机中,由于计算机的速度慢,这种人工干预的影响还不算太大。
在20世纪50年代后期,计算机进入晶体管时代,计算机的速度、容量、外设的品种和数量等方面和电子管时代相比都有了很大的提高,这时手工操作的慢速度和计算机运算的高速度之间形成了人机矛盾。表1.1所示为人工操作时间与机器有效运行时的关系,由表1.1可见人机矛盾的严重性。
为了解决人机矛盾,必须去掉人工干预,实现作业的自动过渡。人们编制了一个小的核心代码,称为监督程序。它常驻主存,实现了作业的自动过渡。这个监督程序就是操作系统的萌芽。
1.早期批处理
每个用户将需要计算机解决的任务组织成一道作业。每个作业包括程序、数据和一个作业说明书。作业说明书提供用户标识、用户程序所需的编译程序、系统资源等信息。每道作业的最后是一个终止信息,它给监督程序一个信号,表示此作业已经结束,应为下一个用户作业的服务做好准备。
在控制作业运行前需要做预处理。各用户提交的作业由操作员装到输入设备上,然后由监督程序控制将这一批作业转存到辅存(早期是磁带)上。监督程序对磁带上的一批作业将依次调度,使它们进入主存运行。监督程序首先审查该作业对系统资源的要求,若能满足,则将该作业调入主存,并从磁带上输入所需的编译程序;编译程序将用户源程序翻译成目标代码,然后由连接装配程序把编译后的目标代码及其所需的子程序装配成一个可执行的程序,接着启动执行;计算完成后输出该作业的计算结果。一个作业处理完毕后,监督程序又自动地调下一个作业进行处理。重复上述过程,直到该批作业全部处理完毕。
监督程序实现了作业的成批处理,I/O工作由CPU直接控制,这样的系统称为(早期)联机批处理系统。注意,这里说的联机指的是中央处理机对I/O的控制方式,若CPU直接控制I/O操作,则系统采用的是联机操作方式。
2.脱机批处理
早期的联机批处理系统实现了作业的自动过渡,同手工操作相比,计算机的使用效率提高了。但存在的问题是作业从输入机到磁带、由磁带调入主存、结果的输出打印都是由中央处理机直接控制。在这种早期的联机操作方式下,随着处理机速度的不断提高,CPU的高速度和I/O设备的慢速度之间形成的矛盾不断地加剧。因为在输入或输出时,CPU是空闲的,使得高速的CPU要等待慢速的I/O设备的工作,从而不能发挥应有的效率。为了克服这一缺点,在批处理系统中引入了脱机I/O技术而形成了脱机批处理系统。
脱机批处理系统由主机和卫星机组成,如图1.4所示。主机负责计算,卫星机负责I/O工作。作业通过卫星机输入到磁带上,然后移到主机上;主机从输入带上调入作业,并予以执行;作业完成后,主机负责把结果记录到输出带上,再由卫星机负责把输出带上的信息打印输出。这样,主机摆脱了慢速的I/O工作,可以较充分地发挥它的高速计算能力。同时,由于主机和卫星机可以并行操作,因此和早期联机批处理系统相比,脱机批处理系统较大程度地提高了系统的处理能力。
联机批处理系统解决了人机矛盾,而脱机批处理系统进一步解决了CPU的高速度和I/O设备的低速度这一对矛盾。
3.执行系统
脱机批处理系统实现了作业的自动过渡,提高了系统的处理能力,但存在着一些缺点。首先是磁带需要人工拆卸,极其不便;其次是系统保护问题越来越突出。一种情况是,由于系统没有任何保护自己的措施,若目标程序执行一条非法的停机指令,机器就会错误地停止运行。另一种情况是,如果一个程序进入死循环,系统就会踏步不前,只有操作员提出终止该作业的请求,删除它并重新启动后,系统才能恢复正常运行。更严重的是无法防止用户程序破坏监督程序和系统程序。
20世纪60年代初期,硬件技术的发展出现了通道和中断,这两项重大成果导致操作系统进入执行系统阶段。通道是一种专用的处理部件,它能控制一台或多台外设的工作,负责外部设备与主存之间的信息传输。它受CPU的控制,一旦被启动就能独立于CPU运行,这样CPU和通道可以并行操作,而且CPU和各种外部设备也能并行操作。中断是指当主机接到某种信号(如I/O设备完成信号)时,马上停止原来的工作,转去处理这一事件,当事件处理完毕,主机又回到原来的工作点继续工作。
在通道与中断技术的基础上,I/O工作可以在主机控制之下完成,这与早期联机批处理系统相比较有着本质的区别。因为在通道与中断技术的支持下,不仅实现了联机控制I/O工作,而且还实现了CPU和I/O的并行操作。执行系统可以这样描述:借助通道与中断技术,由主机控制I/O传输,监督程序不仅负责作业的自动调度,还要负责提供I/O控制功能。这个优化后的监督程序常驻主存,称为执行系统。
执行系统(也称批处理系统)节省了卫星机,降低了成本,实现了主机和通道、主机和外设的并行操作,提高了系统的安全性。系统负责用户的I/O传输工作,检查用户I/O命令的合法性,避免了由于不合法的I/O命令造成的对系统的威胁。
执行系统的普及实现了标准文件管理系统和外部设备的自动调节控制功能。在这期间,程序库变得更加复杂和庞大;随机访问设备(如磁盘、磁鼓)已开始代替磁带作为辅助存储器;高级语言也比较成熟和多样化。20世纪50年代末到20世纪60年代初期,出现了许多成功的批处理操作系统,其中IBM7090/7094计算机配置的IBM OS是最有影响的。
1.2.2 操作系统的形成
批处理系统利用中断和通道技术实现了中央处理机和I/O设备的并行操作,解决了高速处理机和低速外部设备的矛盾,提高了计算机的工作效率。但在批处理系统使用过程中发现,这种并行还是有限度的,并不能完全消除中央处理机对外部传输的等待。虽然中断和通道技术为中央处理机和外部设备的并行操作提供了硬件支持,但是,是否能实现CPU的计算与外部传输的并行操作还依赖于程序的运行特征。如果一个程序只需要CPU进行大量的计算时,外部设备就无事可做;而当一个程序需要的是大量的I/O传输时,CPU就不得不处于等待状态。如何解决这一问题?操作系统采用了多道程序设计技术。
1.多道程序设计技术
首先分析一个进行数据传输的应用程序,该程序在运行过程中依次输入n批数据(每批数据是1000个字符)。输入机每输入1000个字符需用1000ms,CPU处理这1000个字符的数据需用300ms。可见,尽管处理机具有和外部设备并行工作的能力,但是在这种情况下处理机仍有空闲等待现象。图1.5为单个应用程序(又称为单道程序)的工作示例。
在图1.5中,首先是用户程序在CPU中进行计算,当它需要进行I/O时,向监督程序提出请求。监督程序接到用户程序的I/O请求,进行必要的处理,然后启动I/O操作。这段时间是监督程序在CPU上运行所花费的时间,是系统用于管理的开销。I/O设备被启动后,CPU空闲等待,直到I/O操作完毕,发生结束中断。当监督程序接收到设备发出的中断信号,进行设备中断处理,然后将CPU的控制权交还给用户程序,用户程序又接着在CPU上继续计算。注意,用户程序的计算和监督程序的管理工作都是在CPU上运行。从上述分析可看出,在输入操作结束之前,处理机处于空闲状态,其原因是I/O处理与本道程序相关。
应用程序要解决的问题是多种多样的,一般,数据处理、情报检索等任务需要的计算量比较少,而I/O量比较大。这样的任务运行时,中央处理机的等待时间会比较长。而对于计算量大的科学和工程计算任务而言,使用外部设备则比较少,因而当CPU运行时,外部设备经常处于空闲状态。这些情况说明了当系统内只有一道程序工作时,计算机系统的各部件不一定能并行操作,它们的效能没有得到充分发挥。为了解决这一问题,提出了在系统内同时存放几道程序,让它们同时运行的思路和方法,这就是多道程序设计技术。
多道程序设计技术是在计算机主存中同时存放几道相互独立的程序,它们在操作系统控制之下,相互穿插地运行。当某道程序因某种原因不能继续运行下去时(如等待外部设备传输),操作系统便将另一道程序投入运行,这样可以使CPU和各外部设备尽可能地并行操作,从而提高计算机的使用效率。图1.6为多道程序工作示例。
在图1.6中,用户程序A首先在处理机上运行,当它需要输入数据时,操作系统为它启动输入机进行输入工作,并调度用户程序B开始运行。当程序B请求输出时,操作系统又启动相应的外部设备进行工作。当程序A的I/O处理结束时,程序B仍在CPU上运行,则程序A等待,直到程序B计算结束请求输出时,才转入程序A的执行。从图1.6中可以看出,在两道程序执行的情况下,CPU的效率已大大提高。请读者分析一下,此例中CPU有无空闲等待?若有,又是什么原因?
多道程序运行的特征有如下3点。
① 多道:计算机主存中同时存放几道相互独立的程序。
② 宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们都开始运行,但都未运行完毕。
③ 微观上串行:从微观上看,主存中的多道程序轮流或分时地占有处理机,交替执行。
如何理解宏观上并行这一特征?在单处理机系统中,CPU严格地按照指令计数器的内容顺序地执行每一个操作,即一个时刻只能有一个程序在处理机上运行。那么,多道程序如何并行执行呢?由于计算机系统有多个物理部件(如CPU、输入机、打印机等),进入主存的多道程序可以在不同的部件上进行操作。例如某时刻程序A正在处理机上运行,程序B在打印输出,程序C正在输入数据,从宏观上看,这几道程序的工作都在向前推进,它们都处于执行状态。微观上串行这一特征表现在同时被接收进入计算机的若干道程序在CPU上是相互穿插地运行,当正在处理机上运行的程序因为要输入或输出等原因而不能继续运行下去时,就把处理机让给另一道程序。所以从微观上看,一个时刻只有一个程序在处理机上运行。
随着系统中多道运行的数量的增大,CPU的空闲等待时间随之减少,几乎始终处于忙碌状态。请读者考虑,多道运行的数量可以无限制地增加吗?它将受什么条件的制约?
2.分时技术
在批处理系统中引入了多道程序设计技术,实现了多道成批处理。在这样的系统中,大量的用户程序以作业为单位成批进入系统,而用户使用计算机的方式是脱机操作方式(请读者注意,这里指的是用户使用计算机的操作方式)。在脱机方式下,程序运行过程中用户不能直接实施控制。用户必须在程序提交给系统前考虑好程序运行中可能出现的问题以及处理的方法。用户使用系统提供的作业控制语言写好操作说明书,连同程序和数据一起提交给系统。以脱机方式使用计算机,用户是非常不方便的。
人们希望能直接控制程序的运行,这种操作方式称为联机操作方式。在此方式下,一方面,操作员可以通过终端向计算机发出各种控制命令;另一方面,系统在运行过程中可输出一些必要的信息,如给出提示符,报告运行情况和操作结果等,以便让用户根据这些信息决定下一步的工作。这样,用户和计算机之间可以“交互会话”,人们十分喜欢这种工作方式。
当计算机技术和软件技术发展到20世纪60年代中期,主机速度的不断提高,使一台计算机同时为多个终端用户服务成为可能。操作系统采用了分时技术,使每个终端用户在自己的终端设备上以联机方式使用计算机,好像自己独占机器一样。
所谓分时技术,是把处理机时间划分成很短的时间片(如几百毫秒)轮流地分配给各个用户程序使用,如果某个用户程序在分配的时间片用完之前还未完成计算,该程序就暂停执行,等待下一轮继续计算,此时处理机让给另一个用户程序使用。这样,每个用户的各次要求都能得到快速响应,给每个用户的印象是独占一台计算机。采用分时技术的系统称为分时系统,分时系统的响应时间一般为秒级。
在多道程序设计技术和分时技术的支持下,出现了批处理系统和分时系统,在这两类系统中配置的操作系统分别称为批量操作系统和分时操作系统,这两类操作系统的出现标志着操作系统的形成。
与此同时,计算机开始用于生产过程的控制,形成了实时系统。随着计算机性能的不断提高,计算机的应用领域越来越宽广。例如,炼钢、化工生产的过程控制,航天和军事防空系统中的实时控制。更为重要的是计算机广泛用于信息管理,如仓库管理、医疗诊断、气象监控、地质勘探等。
实时处理的关键词是实时二字。“实时”是指计算机对于外来信息能够在被控对象允许的截止期限(deadline)内做出反应。实时系统的响应时间是由被控对象的要求决定的,一般要求秒级、毫秒级、微秒级甚至更快的响应时间。
实时系统中配置的操作系统称为实时操作系统。在20世纪60年代后期,批处理系统、分时系统和实时系统得到广泛应用,在这一阶段形成操作系统的主要类型有:批量操作系统、分时操作系统和实时操作系统。在这些操作系统中采用的很多技术至今仍在使用。
1.2.3 操作系统的进一步发展
从20世纪80年代以来,操作系统得到了进一步发展。促使其进一步发展的原因,一是微电子技术、计算机技术、计算机体系结构的迅速发展;二是用户的需求不断提高。它们使操作系统沿着个人计算机操作系统、网络操作系统、多处理机操作系统、集群操作系统、分布式操作系统等方向发展。
现代操作系统是指当前正广泛使用和流行的操作系统,包括具有图形用户界面、功能强大的个人计算机操作系统;吞吐量大、处理能力强的现代批处理操作系统;交互能力强、响应快的分时操作系统;具有实时响应、可预测分析能力的实时操作系统;具有网络资源共享、远程通信能力的网络操作系统;具有单一系统映像、分布处理能力的分布式操作系统以及分布实时操作系统等。这些操作系统继承了批处理系统和分时系统中已采用的多道程序设计技术、分时技术、保护和安全等技术。随着应用需求的不断提高,人机交互技术、其他面向可视化的技术不断地发展,并得到更为广泛的应用。
在计算机硬件技术不断发展、价格不断下降,网络带宽不断提升这一趋势的推动下,软件技术也得到迅速的发展,出现了客户服务器计算模式。这一计算模式的发展促使操作系统从分时共享和多道操作系统设计技术向支持网络化的方向发展。从实现单台计算机分时共享的分时操作系统(或批处理操作系统)发展为能适应局域网环境的网络操作系统,实现了网络环境下各节点(计算机)之间的资源共享,包括硬件资源和软件资源的共享,还提供网络通信能力、客户和服务器资源管理、进程通信等功能。
计算机网络不是一个一体化的系统,还存在一定的局限性。网络操作系统不支持全局的、动态的资源分配,不支持合作计算,所以它不能满足分布式数据处理和许多分布式应用的需要。而分布式操作系统却能解决网络操作系统不能解决的问题。在硬件体系结构上分布式系统是由多个地理位置分布(或分离)的节点,通过通信网络连接的系统;但在分布式操作系统的支持下,它呈现的是具有单一系统映像,能进行透明的资源访问、支持合作计算的一个逻辑整体,能满足各种分布式应用、并行分布式计算的需要。
1.3 操作系统的基本概念
1.3.1 操作系统的定义和特性
1.操作系统的定义
组成计算机系统的软件包括系统软件、应用软件和工具软件。其中,有数据库系统,各种程序设计语言和相应的编译系统,负责维护系统正常工作的查错程序、诊断程序,还有大量的应用程序……其中,最重要的是核心系统软件——操作系统。操作系统将系统中的各种软、硬资源有机地组合成一个整体,使计算机真正体现了系统的完整性和可利用性。操作系统是所有软件中与硬件相连的第一层软件,它在裸机上运行;同时它又是系统软件和应用程序运行的基础。计算机系统的软件层可以用图1.7来描述。
操作系统的宗旨是提高计算机系统的效率、方便用户的使用。为了充分利用计算机系统的各类资源、充分发挥整个计算机系统的效率,操作系统必须采用并行处理技术,让多个用户程序同时执行。多个用户共用一个计算机系统,这是一个资源共享的问题,而共享必将导致对资源的竞争。资源共享是指多个计算任务对计算机系统资源的共同享用,资源竞争就是多个计算任务对计算机系统资源的争夺。
如一台配置好后的计算机系统有如下部件:一台处理机、两台输入机、一台打印机。假定某时刻该系统有4个用户,当这些用户程序同时投入运行时,它们都需要CPU进行计算,都需要进入主存,占用主存空间,可能需要输入数据,也可能要输出打印。因此,必然会出现竞争局面,即竞争CPU时间、竞争主存空间、竞争I/O设备、竞争使用公用子程序等。这种竞争局面是为了充分利用系统资源而必然出现的。为了保证对系统资源的竞争有条不紊,为了保证大量的用户程序正确的运行,必须有一套科学的、完整的策略和方法。这种策略和方法能有效地管理系统资源,协调各用户程序之间的关系和组织整个工作流程,这种策略和方法就是由操作系统来实现的。
操作系统将系统资源进行很好的分配以便充分发挥它们的作用,这不仅是经济上的需要,同时也是方便用户的需要。如果面对的是各种各样的物理部件,用户将会束手无策。例如,用户需要使用打印机输出一批数据,若要求用户直接启动其工作,该用户必须事先了解这台设备的启动地址,了解它的命令寄存器、数据寄存器的使用方法,以及如何发启动命令、如何进行中断处理,而这些细节以及设备驱动程序和中断处理程序的编制等均是十分麻烦的。又如,若系统不提供文件管理的功能,当用户想把程序存放到磁盘上,他就必须事先了解磁盘信息的存放格式,具体考虑应把自己的程序放在磁盘的哪一道,哪一扇区内……诸如此类的问题将使用户望而生畏。特别是在多用户的情况下,让用户直接干预各个设备的具体工作更是不可能的,这些工作只能由操作系统来实施。
配置了操作系统后,用户便可通过操作系统来使用计算机。用户要使用计算机系统的各类资源,再也不是物理的部件,而是经过操作系统改造后的逻辑部件,或称为虚拟资源。系统内部是非常复杂的,但操作系统提供给用户的是方便、友好的界面,这个界面屏蔽了系统内部的复杂性。计算机通过操作系统的工作可向用户提供一个功能很强的系统,用户可以使用操作系统提供的命令,简单、方便地把自己的意图告诉系统,以完成他所需要完成的工作。正是由于操作系统卓越的工作,才能充分地利用系统的资源,方便用户的使用。
综上所述,操作系统是一个大型的程序系统,它负责计算机系统软、硬件资源的分配和使用;控制和协调并发活动;提供用户接口,使用户获得良好的工作环境。
操作系统是重要的系统软件,只有配置了操作系统,计算机系统才能体现系统的完整性和可利用性。当用户需要计算机解决应用问题时,仅需编制源程序(用户在源程序中,可以利用操作系统提供的系统调用请求其服务),而其余的大量工作,如人机交互、系统资源的合理分配和使用,多个程序之间的协调等工作都是由操作系统来实施。程序的编译、连接等工作将由其他系统软件来完成。所以,操作系统使整个计算机系统实现了高度自动化、高效率、高利用率、高可靠性,因此操作系统是整个计算机系统的核心。
2.操作系统的特性
为了充分利用计算机系统的资源,操作系统一般采用多个同时性用户共享的策略。由于当前计算机大多数仍然是以顺序计算为基础的存储程序式计算机,所以操作系统在解决并行处理问题时,采用了多道程序设计和分时技术等。以多道程序设计为基础的操作系统具备的主要特征就是并发与共享。另外,由于操作系统要随时处理各种事件,所以它也具备不确定性。
(1)并发
并行性,又称为共行性,是指能处理多个同时性活动的能力。单机操作系统的并行性,又称为并发性。原因是,在单机上可以有多个同时性活动,它们在CPU和各种不同的I/O设备上可以同时操作,但在CPU的执行上只能顺序地执行,这种并行称为逻辑上的并行。这与多处理机系统或多计算机系统的不同在于:在后者环境中的多个活动不仅在CPU和各I/O设备上可以同时操作,而且在CPU的计算上也可同时进行,这些活动是真正的、物理的并行。
在单机操作系统中,I/O操作和计算重叠,在主存中同时存放的几道用户程序同时执行,这些都是并发的例子。由并发活动产生的一些问题是:如何从一个活动切换到另一个活动;怎样保护一个活动使其免受另外一些活动的影响;如何实现相互依赖的活动之间的同步。
(2)共享
共享是指多个计算任务对系统资源的共同享用。进入系统的各应用程序在其活动期间,都需要各类系统资源,如申请使用CPU,请求文件信息的读/写,请求数据的输入/输出……操作系统必须解决资源分配的策略和分配方法等问题。对信息资源的共享还需要提供保护手段,如实施存取控制等措施,以保证信息资源的安全。
并发和共享是一对孪生兄弟。程序的并发执行,必然要求对资源的共享,而只有提供资源共享的可能才能使程序真正并发执行。
(3)不确定性
操作系统能处理随机发生的多个事件,如用户在终端上按中断按钮;程序运行时发生错误;一个程序正在运行,打印机发出中断信号等。这些事件的产生是随机的(即随时都有发生的可能),而且大量事件产生的先后次序又有多种可能,即事件组成的序列数量是巨大的,操作系统可以处理各种事件序列,使用户的各种计算任务正确地完成。
1.3.2 操作系统的资源管理功能
操作系统的主要功能包括三个方面:①对系统资源实施管理和调度;②控制和协调并发活动;③对外提供用户界面。系统资源管理和并发活动控制是操作系统的核心功能,这两个部分是互相联系、不可分割的。用户程序进入系统开始活动时,系统将这一活动称为一个进程(将在第4章详细讨论)。众多的进程在活动过程中需要申请资源、释放资源,这些将与系统资源的分配、调度发生密切的联系。如进程要进入系统执行时,需要存储管理为它分配主存空间;当它需要CPU执行权时,需要处理机调度程序为它分配处理机……我们应该关注操作系统的资源管理功能和进程管理之间的内在关系,这样才能更好地理解操作系统的实现技术。
操作系统资源管理的目标与操作系统的宗旨是一致的,那就是提高系统资源的利用率和方便用户使用。操作系统的资源管理包括处理机管理、存储管理、输入/输出管理和文件系统这四大功能。
1.处理机管理
计算机系统中最重要的资源是中央处理机,任何计算都必须在CPU上进行。在处理机管理中最核心的问题是CPU时间的分配,这涉及分配的策略和方法。在单CPU计算机系统中,当有多进程请求使用CPU时,将处理机分配给哪个进程使用的问题就是处理机分配(又称为进程调度)的策略问题。调度策略也就是分配原则,这是在多对1(即多个进程竞争1个CPU)的情况下必须确定的。这些原则因系统的设计目标不同而不同。可以按进程的紧迫程度,或按进程发出请求的先后次序,或是其他的原则来确定处理机的分配原则。在确定调度策略时还需要确定给定的CPU时间,是分配一个时间片?还是让选中进程占用CPU,直到该进程因为请求I/O操作等原因放弃CPU控制权?确定了调度策略就可以用某种程序设计语言(一般为C语言)写出进程调度算法。最后,还需要解决的问题是给选中的进程进行处理机的分派,使选中的进程真正得到CPU的控制权。所以,处理机管理的功能是:
① 确定进程调度策略;
② 给出进程调度算法;
③ 进行处理机的分派。
2.存储器管理
计算机系统中另一个重要的资源是主存,任何程序的执行都必须从主存中获取数据信息。现代操作系统非常重视主存的存储调度和处理机调度的结合,在主存分配时,将程序中当前最需要的部分调入主存,这样这一部分程序马上可以投入运行。即只有当程序在主存时,它才有可能到处理机上执行,而且仅当它可以到处理机上运行时才把它调入主存,这种调度能实现最大化的主存使用。
现代计算机系统的存储管理具备以下功能。
(1)存储分配和存储无关性
如果有多个用户程序在机器上运行,其程序和数据都需要占用一定的存储空间。这些程序和数据将分别安置在主存的什么位置,各占多大区域,这就是主存分配问题。然而,用户无法预知存储管理部件(模块)把他们的程序分配到主存什么地方,而且用户也希望摆脱存储地址、存储空间大小等细节问题。现代操作系统为用户程序呈现的是逻辑地址、作业地址空间(或称虚地址空间)。为此,存储管理部件应具备地址重定位能力,提供地址映像等机构。
(2)存储保护
主存中可同时存放几道程序,为了防止某道程序干扰、破坏其他用户程序,存储管理必须保证每个用户程序只能访问它自己的存储空间,即实现用户程序之间的隔离。当某用户企图(有意或无意)存取任何其他范围的信息时,系统能够捕获,以防止对其他用户程序的干扰和破坏,也就是要提供存储保护的手段。存储保护机构有界限寄存器、存储键和锁等,由硬件提供支持,由操作系统实现判断和处理功能。
(3)存储扩充
主存空间是计算机资源中重要的资源之一,尤其是在多用户运行环境中,主存资源显得更加紧张。现代操作系统提供虚拟存储技术,借助联机辅助存储器(如磁盘、阵列、光盘塔等),通过虚拟存储的机制和软件去扩充主存空间。
每个应用程序都有自己的虚地址空间,它由用户的所有的程序地址和数据地址组成。当多个用户程序同时进入主存投入运行时,现代操作系统并不是将这些用户程序的全部代码和数据,在程序的整个运行时间内都放在主存内。而是将这些用户程序的全部代码和数据存放在辅存中,只将每个用户程序虚地址空间中的一部分调入主存。操作系统能自动处理信息在辅存与主存之间的调度,让各用户程序都能正确地运行。用户的感觉是系统的主存足够用,自己程序的大小没有受到主存容量的限制。这种虚拟的感觉正是由于操作系统提供了虚拟存储技术,实现了主存空间的扩充。
3.设备管理
设备管理是操作系统中最庞杂、琐碎的部分,其原因是:
①设备管理涉及很多实际的物理设备,这些设备品种繁多、用法各异;
②各种外部设备都能和主机并行工作,而且有些设备可被多个进程所共享;
③主机和外部设备,以及各类外部设备之间的速度极不匹配,级差很大。基于这些原因,现代操作系统的设备管理主要解决以下问题。
(1)设备无关性
用户向系统申请和使用的设备与实际操作的设备无关,即在用户程序中或在资源申请命令中使用设备的逻辑名,此即为与设备无关性。这一特征不仅为用户使用设备提供了方便,而且也提高了设备的利用率。
(2)设备分配
各个用户程序在其运行的开始阶段、中间或结束时都可能要进行输入或输出,因此需要请求使用外部设备。在一般情况下,外部设备的种类与台数是有限的(每一类设备的台数往往少于用户的个数),所以,在多对少(多个用户请求少量的设备台数)的情况下,如何分配设备是十分重要的。设备分配通常采用独享分配、共享分配和虚拟分配这三种基本分配技术。
(3)设备的传输控制
设备的传输控制是设备管理要完成的重要和本质的工作。主要工作包括:①控制设备实现物理的I/O操作,即组织完成本次I/O操作的有关信息,启动设备工作;②当设备完成本次I/O操作或操作出错时会产生设备中断信号,由设备中断处理程序进行中断处理。
另外,设备管理还提供缓冲技术,Spooling技术以改造设备特性和提高设备的利用率。
4.文件系统
软件资源是各种程序和数据的集合,程序又分为系统程序和用户程序,系统程序包括操作系统的功能模块、系统库和实用程序。为了实现多个用户对系统程序的有效存取,这些程序必须是可重入的,这比创建多个资源副本有着明显的好处。系统程序是以文件形式组织、存放、提供给用户使用的。用户程序也是以文件的形式进行管理的。
文件系统(也就是软件资源管理)要解决的问题是,为用户提供一种简便的、统一的存取和管理信息的方法,并要解决信息的共享、数据的存取控制和保密等问题。具体而言,文件系统要实现用户的信息组织、提供存取方法、实现文件共享和文件安全,还要保证文件完整性,完成磁盘空间分配的任务。
综上所述,操作系统的主要功能之一是管理系统的软、硬件资源。这些资源按其性质来分,可以归纳为四类:处理机、存储器、外部设备和软件资源。这四类资源构成了系统程序和用户程序赖以活动的物质基础。针对这四类资源,操作系统就有相应的处理机管理、存储管理、设备管理和软件资源管理这四大管理功能。分析这些资源管理程序的功能和实现方法就是操作系统的资源管理观点。
1.3.3 操作系统应解决的基本问题
现代操作系统具有并发、共享的特征。为了实现多用户、多任务的并发执行,操作系统必须解决如下几个问题。
1.资源分配的策略和方法
操作系统要实现多用户、多任务对处理机、主存空间、外部设备、软件资源的共享,就必须提出资源分配的策略和方法。不同类型的资源有不同的特征和使用方法,但作为资源,它们都要为用户提供服务,所以,对于不同类型的资源而言,资源分配策略和资源分配方法都具有共性,例如资源分配用的数据结构;任何资源的一个具体部件的分配状态就是分配或未分配两种。
研究操作系统的资源管理,可以从共性出发去研究资源的概念、资源的使用方法和管理策略,而对各具体资源的管理,则可在总的调度原则、管理方法基础上结合具体资源的“个性”来考虑和实施。例如,对资源的分配常采用两种策略,即先来先服务(按提出服务请求的先后次序)策略和优先调度(按请求服务的紧迫程度)策略。而对CPU的调度(即为处理机分配)策略常采用的就是优先调度策略,按进程优先级的高低来满足进程对处理机的请求。另一个常采用的策略是时间片轮转策略(见第4章),这一策略正是先来先服务策略的一种特例。
2.协调并发活动的关系
大量活动(又称为进程)同处于一个计算机系统中,它们之间存在相互制约的关系。这种相互制约关系可以分为两类,一类是间接的相互制约关系;一类是直接的相互制约关系。间接的相互制约关系是由于各进程对资源的共享而产生的(例如,两个进程都需要打印机输出数据),这种相互制约关系可以通过操作系统的资源管理功能来协调和解决。另一种直接的相互制约关系是由于若干进程为完成一个共同任务而互相协作时产生的,这时,这些进程之间存在着一定的逻辑关系(例如,两个售票进程共享一个代表已售票数目的变量x)。进程的直接的相互制约关系必须由操作系统提供一种称为同步机构的设施来协调,以使各种活动能顺利地进行并得到正确的结果。同步机构有锁、上锁操作和开锁操作;还有功能更强,使用更为广泛的信号灯、信号灯上的P操作和V操作,这些内容将在第4章阐述。协调并发活动的关系指的就是解决进程的直接的相互制约关系。
3.保证数据的一致性
数据资源的一致性就是要保证数据资源不轻易地被破坏,如避免其残缺不全,或前后矛盾。为此,操作系统要提供保护手段,解决好程序并发执行时对公用数据的使用问题。
保护数据资源问题涉及多级保护:①对系统程序的保护;②对同时进入主存的多道程序的保护;③对共享数据的保护。
对这三类保护问题可分别采取不同的措施。
(1)为保护系统程序不受破坏,应建立一个保护环境。采用的办法是对计算机系统设置不同的状态。现代操作系统支持系统的状态分为系统态、用户态两态;或分为核态、系统态、用户态三态。
(2)为了防止多道程序之间的相互干扰,系统提供主存保护措施。
(3)当并发进程共享某些数据时,必须谨慎地处理进程之间的逻辑关系,即进程间的直接的相互制约关系,以避免发生与时间有关的错误。
4.实现数据的存取控制
数据的存取控制是一个保护问题。为了确保正确、合理地使用信息,需要解决存取信息时的保护问题。在访问信息时,应由文件系统做保护性检查,未经信息主人授权的任何用户不得存取该信息,授权用户也只能在其允许的权限内使用。例如,任何一个程序都不能在未得到许可的情况下,去访问另外一个用户的内部数据。又如,当一个用户想使用另一个用户被保护的标准程序时,也不应该在没有进行检查控制的情况下去执行这一程序。
每个用户对各种数据的存取都事先规定了一定的权限。所谓权限,就是用户对这个数据能执行什么操作,可分为执行、读、写等不同的权限。当一个用户程序访问某一数据信息时,文件系统要检查该用户是否是核准的用户,是否拥有访问这一数据信息的权限,若满足上述两个条件,就允许访问,否则,系统将中止该程序的执行。
近年来,计算机系统广泛用于各种数据处理问题,尤其是计算机网络的出现,使得信息保护成了一个重要的问题。数据存取控制问题急需解决,人们在操作系统中,特别是在数据库管理系统中做了不少工作,采取了各种保护措施,以达到安全使用的目的。
1.4 操作系统的基本类型
在操作系统发展过程中,为了满足不同应用的需要而产生了不同类型的操作系统,根据应用环境和用户使用计算机的方式不同,操作系统的类型主要有批量操作系统、分时操作系统、实时操作系统、个人计算机操作系统、网络操作系统和分布式操作系统这几种。
1.4.1 批量操作系统
批处理系统采用多道程序设计技术,对提交给系统的用户程序组织成作业形式,由操作员将一批作业转储到辅存设备(如磁盘)上,形成一个作业队列,等待运行。当需要调入作业时,操作系统的作业调度程序负责对磁盘上的一批作业进行选择,将其中满足资源条件且符合调度原则(例如,按先后顺序进行选择)的几个作业调入主存,使它们投入运行。当某个作业完成计算任务时,输出其结果,并收回该作业占用的全部资源。然后根据主存和其他资源的使用情况,再调入一个或几个作业。现代批处理系统仍然采用批量方式输入作业,但提供批处理文件的能力,一个批处理文件可以通过交互会话提交给系统。在一般的计算中心都配有批量操作系统。
1.批量操作系统的定义
批量操作系统将用户提交的作业(包括相应的程序、数据和处理步骤)成批送入计算机,然后由作业调度程序自动选择作业运行。这样减少了处理机的空闲等待,从而提高了系统效率。
批量操作系统的主要特征是“批量”。用户要使用计算机时,必须事先准备好自己的作业,然后由操作员将一批作业送入系统,计算结果也是成批输出。系统内的多道程序同时执行,在作业执行过程中,用户不能直接进行干预。
2.批量操作系统的特点
批量操作系统的优点是系统的吞吐率高。作业的调度由系统控制,并允许几道程序同时投入运行,只要合理搭配作业(例如把计算量大的作业和I/O量大的作业搭配)就可以充分利用系统的资源。缺点是作业周转时间(用户向系统提交作业到获得系统的处理信息的时间间隔称为作业周转时间)较长,用户不能及时了解自己程序的运行情况并加以控制,导致用户使用计算机十分不方便。
1.4.2 分时操作系统
在分时系统中,一台计算机与许多终端设备连接,每个用户可以通过终端向系统发出命令,请求完成某项工作,系统分析从终端设备发出的命令,完成用户提出的要求,之后,用户又根据系统提供的运行结果,向系统提出下一步请求,这样重复上述交互会话过程,直到用户完成预计的全部工作为止。在分时系统中,用户使用计算机的方式称为联机操作方式。
1.分时操作系统的定义
分时操作系统一般采用时间片轮转的办法,使一台计算机同时为多个终端用户服务。该系统对每个用户都能保证足够快的响应时间,并提供交互会话功能。
2.分时操作系统的特点
分时系统具有以下几个特点。
① 并行性。共享一台计算机的众多联机用户可以在各自的终端上同时处理自己的程序。
② 独占性。分时操作系统采用时间片轮转的方法使一台计算机同时为许多终端用户服务,每个用户的感觉是自己独占计算机。操作系统通过分时技术将一台计算机改造为多台虚拟计算机。一般分时系统的响应时间为秒级,这样用户在终端上感觉不到等待,会感到满意。
③ 交互性。用户与计算机之间可以进行“交互会话”,用户从终端输入命令,系统通过屏幕(或打印机)将信息反馈给用户,用户与系统这样一问一答,直到全部工作完成。
分时系统的目标是要实现对处理机共享的公平性,同时,给用户提供一台虚拟计算机,这台计算机处理速度比真实的处理机的速度要慢,但用户感觉到的是在独占使用。另外,分时系统给用户提供的是联机操作方式,每个用户通过各自的终端方便地使用计算机。
批量操作系统、分时操作系统的出现标志着操作系统的形成。
1.4.3 实时操作系统
20世纪50年代后期,计算机开始用于生产过程的控制,形成了实时系统。到了20世纪60年代中期,计算机进入第三代(集成电路时期),机器性能得到了极大的提高,以监视、响应或控制外部环境为目的的实时应用越来越广泛。这类应用的例子包括完全独立的系统(如军事指挥系统、飞行控制系统、住院病人监护系统)和作为某些大型系统的组件的嵌入式系统(如汽车控制系统、手机)。实时系统中配置的操作系统称为实时操作系统。
1.实时操作系统的定义
实时操作系统对外部输入的信息,能够在规定的时间(截止期限,deadline)内处理完毕并做出反应。 实时操作系统最重要的特征是,必须满足控制对象的截止期限的要求,若不能满足这一时间约束,一般认为系统失败。其另一个重要的特征是可预测性分析。操作系统各功能模块的实现应该具有有限的、已知的执行时间。对实时应用进程的CPU调度应该是基于时间约束的,以满足截止期限的要求。主存管理,即使有虚拟主存,也不能采用异步的和无法预测的页面或段的换进换出。而文件在磁盘上的物理结构一般应采用连续分配方式,以避免耗时的、不可确定的文件操作,如动态确定磁盘柱面的搜寻操作。
2.实时操作系统的特点
实时操作系统的特点如下。
① 实时响应。对外部实时信号能实时响应,响应的时间间隔足以能够控制发出实时信号的那个环境。
② 高可靠性和安全性。实时系统应具有高可靠性和安全性,系统的效率则放在第二位。为确保系统的可靠性和安全性,有的系统采用双工方式工作。
③ 实时操作系统的终端设备通常只是作为执行装置或咨询装置,不允许用户通过实时终端设备去编写新的程序或修改已有的程序。
计算机应用到实时控制中,配置实时操作系统,可组成各种各样的实时系统。实时系统按其使用方式分为实时控制和实时信息处理两种。
3.实时操作系统的分类
(1)实时控制 计算机的早期应用之一是进行过程控制和提供环境监督。现在,实时控制的应用已十分广泛,如炼钢、化工生产的过程控制,航天和军事防空系统中的实时控制。实时控制系统将从传感器获得的输入数字或模拟信号进行分析处理后,激发一个改变可控过程的控制信号,以达到控制的目的。
(2)实时信息处理 计算机还有一类很重要的实时性应用是组成实时数据处理系统。如仓库管理、医疗诊断、气象监控、地质勘探、图书检索、飞机订票、银行储蓄、出版编辑管理等。这一类应用大多数用于服务性工作,如预订一张飞机票、查阅一种文献资料。用户可通过终端设备向计算机提出某种要求,而计算机系统处理后通过终端设备回答用户。
4.嵌入式系统与嵌入式操作系统
嵌入式系统指计算机作为某个专用系统中的一个部件而存在,嵌入到更大的、专用的系统中的计算机系统,是一种以应用为中心、以计算机技术为基础、软件硬件可裁剪,功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它与普通计算机系统的区别包括:
① 嵌入式系统一般是专用系统,而普通计算机系统是通用计算平台;
② 嵌入式系统的资源比普通计算机系统少得多;
③ 嵌入式系统软件故障带来的后果比普通计算机系统大得多;
④ 嵌入式系统一般采用实时操作系统;
⑤ 嵌入式系统大都有成本、功耗的要求;
⑥ 嵌入式系统得到多种微处理体系的支持;
⑦ 嵌入式系统需要专用的开发工具。
嵌入式操作系统(Embedded Operating System,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配和任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
流行的嵌入式操作系统包括VxWorks、Nucleus、Windows CE、嵌入式Linux等,它们广泛应用于国防系统、工业控制、交通管理、信息家电、家庭智能管理、POS网络、环境工程与自然监测、机器人等多种领域。
实时操作系统的出现和应用的日益广泛,批量操作系统和分时操作系统的不断改进,使操作系统日趋完善。
1.4.4 个人计算机操作系统
随着计算机应用的日益广泛,许多人都能拥有自己的个人计算机,而在大学、政府部门或商业系统则使用功能更强的个人计算机,通常称为工作站。在个人计算机上配置的操作系统称为个人计算机操作系统。目前,在个人计算机和工作站领域有两种主流操作系统:一种是微软(Microsoft)公司提供的具有图形用户界面的视窗操作系统(Windows);另一种是UNIX系统和Linux系统。
Windows系统的前身是MS-DOS。MS-DOS是微软公司早期开发的磁盘操作系统,其应用十分广泛,具有设备管理、文件系统功能,提供键盘命令和系统调用命令。MS-DOS的后继版本包含了许多新的特征,其中有许多来源于UNIX系统。后来,MS-DOS逐渐发展成为界面色彩丰富、使用直观方便、具有图形用户界面的Windows操作系统。Windows系统是32位的多任务操作系统,它使用图形用户界面(GUI)技术,具有非常直观方便的工作环境。MS-DOS的另一个发展是IBM公司将其升级为多任务系统OS/2。
UNIX系统是一个多用户分时操作系统,自1970年问世以来十分流行,它运行在从高档个人计算机到大型机等各种不同处理能力的机器上,提供了良好的工作环境;它具有可移植性、安全性,提供了很好的网络支持功能,大量用于网络服务器。而目前十分受欢迎的、开放源码的操作系统Linux,则是用于个人计算机的、类似UNIX的操作系统。
1.4.5 网络操作系统
计算机技术、通信技术的快速发展和二者的不断交融,大大地推进了人类社会的进步。计算机通过互相连接形成计算机网络,改变着人类的社会生活。而在其中起着核心控制作用的是网络操作系统。
1.什么是计算机网络
计算机技术和通信技术的结合使得实现资源更广泛的共享成为可能。这两种技术的结合已经对计算机的组成方式产生了深远的影响。许多台计算机通过通信线路连接起来,就可以实现网上计算机之间硬件资源和软件资源的共享。互连指的是两台计算机,它们之间能彼此交换信息,这种连接不一定必须经过电缆,也可以采用激光、微波和地球卫星等技术来实现。
由一些独立自治的计算机,利用通信线路相互连接形成的一个集合体称为计算机网络。网络中的每一台计算机都是独立自治的,即计算机网络中的各个计算机是平等的,任何一台计算机都不能强制性地启动、停止或控制另一台计算机。
计算机网络的特点是:①具有多个处理部件;②无公共主存;③有消息通信机制。组成计算机网络的每一台计算机(又称为节点)都有自己的处理部件、存储部件。计算机之间通过通信线路可以相互通信。这是计算机网络的硬件结构特点。但计算机网络要实现资源共享,还必须有网络操作系统的支持。
2.网络操作系统
在计算机网络中,每台主机都有操作系统,它为用户程序运行提供服务。当某一主机联网使用时,该系统就要与网络中其他的系统和用户交往,这个单机操作系统的功能需要扩充,以适应网络环境的需要。网络环境下的操作系统既要为本机用户提供简便、有效地使用网络资源的手段,又要为网络用户使用本机资源提供服务。
网络操作系统除了具备一般操作系统应具有的功能模块(处理机管理、存储管理、设备管理、文件系统)之外,还要增加一个网络通信模块。该模块由通信接口中断处理程序、通信控制程序以及各级网络协议等软件组成。
网络操作系统允许用户访问网络主机中的各种资源,并对用户访问进行控制,仅允许授权用户访问特定的资源。计算机网络上的用户对远程资源的使用如同本地资源一样。
网络操作系统以命令(或称原语)形式向用户或上层软件提供服务。这些原语可分为以下四类。
(1)用户通信原语
用户通信原语支持用户之间、用户对系统、系统对用户的通信及状态检查。状态检查常用于检测网络工作是否正常,例如,检查某个主机当时是否利用不足,或现在可否利用某一主机来完成一项任务等。用户可以通过电子邮件进行通信,也可以在多个用户之间实现会议对话。
(2)作业迁移原语
要完成一个算题任务,往往可以分成若干个子任务来共同完成,这些子任务可以放在不同的主机上运行。这样,可以充分利用网上处于空闲状态的计算机,达到了网络负载平衡的目的。作业迁移功能最好集中由中央网络控制机制来完成。
(3)数据迁移原语
数据迁移原语支持对信息的远程访问,数据迁移有两种常用的方法。
① 请求访问远地主机中的某一个数据项,该命令传送到远地主机后,在那里得到这个数据项,然后传送回本机。
② 请求访问远地主机中的某一个数据项,把含有该数据项的整个文件传送到本机,再实现对该数据项的访问操作。
第一种方法用于请求频率不高的情况,第二种方法常用于对一个文件的高频率请求。但采用第二种方法时,一定要注意数据的一致性问题。
(4)控制原语
控制原语用于对子网的控制,如控制网络与主机间的交互作用。
网络操作系统的功能在不断地扩大和完善,它将随着计算机网络的广泛应用而得到更进一步的发展。
1.4.6 分布式系统
1.计算机网络的局限性
一组相互连接并能交换信息的计算机形成了一个网络。但是,计算机网络并不是一个一体化的系统,它还有许多方面不能满足用户不断提升的应用需求,计算机网络的功能对用户来讲是不透明的。用户希望使用一个功能十分强大的计算机网络,但他们不希望面对的、感受到的是一个非常复杂(由多个计算机组成)的系统。用户希望面对的的是一台计算机(虚拟的), 以统一的界面、标准的接口去使用系统的各种资源,去实现所需要的各种操作。计算机网络结构的复杂性,通信功能的实施,各种任务的协调和处理均由一个功能更为强大的操作系统来完成,这就是分布式系统。
计算机网络不是一个一体化的系统,它存在着局限性。下面从3个方面分析计算机网络和分布式系统的区别。
(1)不能支持透明的资源存取
计算机网络是多机集合体,对终端用户或程序员而言,存取资源的方式、方法是不透明的。网络上每台机器的资源组织、命名方式、存取方法可能不同,用户必须知道要存取资源的位置、路径以及存取方法。用户必须使用显示的命令,指出资源所在的主机位置及存取路径,才能共享网上的资源。
而分布式系统,用户看到的是一个逻辑整体,是具有单一用户界面的系统。这样的系统以服务方式提出对资源的请求,即提出它需要什么(例如,要访问一个文件),而不需要具体指出它所需要的资源或资源服务器在哪里。这是高水平的资源共享,而不是计算机网络所提供的低级的资源共享方式。
(2)不能对网络资源进行有效、统一的管理
计算机网络对资源的使用方式是资源本地使用,若要共享其他机器上的资源时,必须由用户给出显示的命令。
而分布式系统对各节点上的资源进行全局、动态分配,还要进行动态负载平衡,全系统的资源可以得到高效的使用,系统还提供容错能力。为了实现资源的全局、动态分配,分布式系统需要实施各种技术和策略,如资源分配策略(就近分配或依负载轻重)、动态负载平衡算法、进程迁移、数据迁移、动态备份、多副本技术等。只有实现了资源的全局、动态分配,系统才可能具备透明性。
(3)不能支持合作计算
不论是分布式数据处理问题,还是高性能计算,都有大量的任务在并行执行,而且,如果有些任务共同完成一个更大的任务,这些任务之间还有合作。
在计算机网络中,如果存在有合作关系的任务并行执行,必须由用户自己负责,进行任务划分;由用户考虑这些任务应分配到哪些节点上去运行;还要用显示的命令进行任务传送、结果收集和处理等工作。
而对于分布式系统而言,上述这些工作都将由系统负责,由系统自动完成,而不需要用户干预。系统要具备任务划分、任务全局分配、任务通信、数据文件管理、结果收集等功能,使系统有效地支持合作计算。
综上所述,计算机网络是构成分布式系统的一个很好的结构形式,即分布式系统的硬件基础可以是计算机网络。分布式系统和计算机网络的差别在于软件,特别是操作系统,分布式系统有一个全局的分布式操作系统。
2.分布式系统的定义
一个分布式系统的商务活动或事务处理要求硬件和物理的处理部件是分布的,被处理的数据和各种活动也是分布的,这体现了服务的分布化。而分布式系统还有一个本质的分布性,那就是控制的分布化。在一个分布式系统中有多个控制中心,使系统存在多个执行控制路径,它们控制多个事务活动同时进行,但又相互合作。
(1)分布式系统定义
分布式系统这一名词用得比较混乱,过多地滥用这些技术名称会导致混淆和误解。许多学者对分布式系统给出了不同的描述。下面,给出P.H.Enslow提出的比较完整的、具有研究和发展性的定义,他强调了并行处理和分布式控制的重要性。P.H.Enslow给出的分布式系统的定义是根据分布式系统应有的特征来描述的。
① 系统包含多个通用的资源部件(物理资源和逻辑资源),它们可以被动态地指派给各个任务,并且物理资源可以是异构的。
② 这些物理资源和逻辑资源是物理分布的,并通过一个通信网络相互作用。各分散的处理部件之间的进程通信采用相互合作的协议来实现消息通信。
③ 在系统内有一个分布式操作系统,采用分布式控制的办法,有多个控制器负责系统的全局控制,以便提供动态的进程间的合作。
④ 系统的内部构造与分布性对用户是完全透明的。用户发出使用请求时,不需要具体指明要哪些资源为他服务,而只需要指明要求系统提供什么服务。
⑤ 所有资源(不论是物理的,还是逻辑的)都必须高度自治而又相互合作。各资源之间不允许存在层次控制或主从控制的关系。
下面对这五个特征稍加讨论。
第①点强调的是资源的通用性。例如,某系统提供通用处理机服务,那么该系统必须有多个通用的处理机。针对所提供服务的资源,系统有能力在短时间内进行动态重分配和系统重构。只有当一个系统拥有多个通用部件,并且能实施动态分配时,资源的利用率才能提高,可靠性才能增强。也就是说,系统才可能具有容错能力。它是判断分布式系统的一个重要特征。
第②点和第③点强调分布式控制和消息通信。系统有多个处理部件,它们是合作自治的。同时,系统内有多个控制中心,存在多个控制路径。系统中多个活动之间的一致性是靠协议来实现的。协议是一种共同约定的规则。在分布式系统中,合作的主要形式是协议。合作进程之间的消息通信是平等的通信。
第④点强调的是系统透明性。分布式系统对用户的接口是服务方式而不是服务器。用户提出服务请求时,只需要描述用户要什么,而不需要指明要哪些物理或逻辑部件来提供这种服务。用户使用分布式系统就好像面对一个集中式系统一样,因为用户看到的是单一用户界面。系统的透明性是分布式系统非常重要的特征,只有具备这一特征,分布式系统才可能具有高可靠性、可扩展性和适应性。
第⑤点强调的是合作自治,这也是分布式系统的重要特征之一。在分布式系统中所有物理部件或逻辑部件都是自治的。通过网络协议进行消息通信时,消息的发送者和接收者需要相互合作。当某部件接收到一个服务请求后,都有提供服务或拒绝服务的选择权,各部件中间不存在“控制”关系。但系统中各部件又都必须遵循分布式操作系统制定的原则。这种工作模式称为相互合作的自治。
(2)分布式系统的优点
① 增强系统性能
分布式系统采用并行处理技术来提高性能。系统内有多个处理部件可实施物理的并行操作;另一方面分布式操作系统的功能分解成多个任务,分配到系统的多个处理部件中同时执行,系统只需保证处理过程中的一致性,就能提高系统吞吐量、缩短响应时间、增强系统性能。
② 可扩展性好
随着用户需求(包括功能、性能方面的需求)的增长,需要增加新部件或增加新的功能模块,分布式系统可以方便地实现性能扩展或功能扩展,而不必替换整个系统。
③ 增加可靠性
分布式系统由于硬件、软件、数据以及控制的分布性(不存在集中环节),资源冗余以及结构可动态重构,可提高系统的可靠性。
④ 更高一级的资源共享
分布式系统在全系统范围内实施资源的动态分配、负载平衡,并对用户提供透明的服务,使系统得到最佳的资源分配和最好的资源共享效果。
⑤ 经济性好
分布式系统由于可扩充性好,可以避免较大的初始投资。另外,由于分布式系统可用多台微型、小型机构成,而其性能却可超过一台大型机的性能,所以可获得很好的性能价格比。
⑥ 适应性强
分布式系统可广泛应用于资源、信息分布较广,而又需要相互协调、合作的部门,如银行金融业务系统、铁路运营管理系统等。
目前分布式应用越来越广泛,其上配置的分布式系统所采用的硬件结构有许多是计算机网络,也可以采用消息传递型多计算机系统。分布式操作系统是当前研究的热点,并不断取得研究成果。由于计算机应用的迫切需要,分布式操作系统与分布式系统将日益完善和实用化。
1.5 操作系统采用的关键技术
现代操作系统采用了大量的先进技术,从以上几节的讨论,读者已了解了多道程序设计技术和分时技术,还有许多操作系统的实现技术将在以后的章节中讨论。要学懂操作系统,必须抓住操作系统最核心的思想方法和最关键的实现技术。这一节给出操作系统采用的关键技术,是为了让读者能以此作为指导,去分析、思考以后各章节的内容,以便从操作系统庞杂的内容中清晰地抓住操作系统的本质。
现代操作系统大多是多用户、多任务操作系统,所采用的关键技术是并行处理技术和虚拟技术。
1.5.1 操作系统采用的并行处理技术
所谓并行性是指能处理多个同时性活动的能力。现代操作系统能支持多个应用程序同时进入计算机,使这些应用程序都处于已经开始执行,但都没有执行完毕的过程之中。
在现代操作系统中存在大量的并行活动,如应用程序的并行执行。某时刻在一个计算机系统中有的程序正在输入数据,有的程序正在CPU上计算,有的程序在打印机上输出数据。这些任务的活动都在向前推进,它们都处于同时执行的状态中。还有在计算机系统中的多个部件的同时操作。输入机的输入操作、CPU的计算、打印机的输出打印工作可以同时进行;还可能存在远程节点的数据正在通过网卡传送到本机的操作……发生在这些物理部件上的操作是真正的物理的并行。
要实现应用程序的并行执行和系统各部件的并行操作,操作系统必须具备资源动态分配的能力,提供在多用户、多任务之间进行资源分配(调度)的策略和实现技术。操作系统还应具备对多任务同时性活动的控制和协调能力,提供有效地解决进程控制、进程调度和进程同步等问题的机制和技术。
操作系统具有处理大量同时性活动的能力,在对系统资源和应用程序实施控制和管理过程中,并行处理技术无处不在、无时不在。并行处理是指利用多个处理部件,为完成一个整体任务而同时执行。并行处理的必要条件是必须具备多个能真正同时操作的物理部件。计算机系统具有各种各样的输入/输出设备,还有计算机部件CPU。面对大量的用户和任务,操作系统采用并行处理技术对系统中的各类软、硬资源进行分配和控制,对大量的用户和应用程序的工作进行处理和协调。这样充分发挥了各物理部件并行操作的能力,使整个计算机系统的效率大大提高。
1.5.2 操作系统采用的虚拟技术
操作系统在其实现中大量使用虚拟技术。操作系统要管理和控制各种硬部件,如中央处理机、存储器和各种外部设备。这些部件的使用、控制是十分复杂的。而用户使用计算机解决各类问题时,希望方便、简单。操作系统采用虚拟技术,提供给用户的是逻辑的部件,使用方便的接口。即使是在多用户、多任务同时共享计算机系统的情况下,每个用户也都会感觉到计算机系统为他提供了足以满足自己需求的资源。例如,在分时系统中,CPU时间被分为很小的时间片,每个进程每次只能分到一个时间片,若时间片到时任务还未完成,系统会将CPU的使用权赋给另一个进程。处理机使用权的切换对用户而言是完全透明的,即用户是不得而知的,从而给用户造成他在独占CPU的错觉。这样,操作系统利用分时使用CPU的技术将中央处理机改造成可供多进程“同时”使用的多个虚拟的处理机。
在存储管理中,现代操作系统提供虚拟存储技术。为用户提供逻辑地址和用户程序的虚存空间(作业地址空间)。另一方面,程序实际上是存储在物理主存中,以实际的物理地址进行主存的存取操作。在逻辑与物理之间的映射由操作系统的地址映射机构自动完成。而且,现代操作系统还实现了只装入部分代码和数据的用户程序的正确运行,这时,所需信息是否在主存的判断和信息的调动都由操作系统控制完成(硬件配合)。由于操作系统实现了虚拟存储技术,给用户的感觉是程序的大小不受限制,每个用户都有自己的虚存,其效果是一个物理存储器改造成了多个虚拟存储空间。
操作系统在设备管理中提供虚拟设备和虚拟分配技术。例如,一个应用程序请求在打印机上输出一批数据,实际上操作系统是将这一批数据写到了一个虚拟打印机(磁盘)上,由操作系统的假脱机系统负责,在适当的时候,真正在物理打印机上输出。正是由于操作系统提供假脱机技术,多个进程可以并行“打印”,每个进程都有自己的虚拟的打印机。
图1.8所示为虚拟技术的原理。系统硬件包括CPU、主存和各种外部设备(如打印机)。每台硬部件被操作系统复制成多个虚拟部件,并分配给每一个应用程序使用。这样,每个应用程序就感觉自己拥有CPU、主存和外部设备,这就是虚拟技术产生的效果。