操作系统原理与实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-01 16:16:12

点击下载

作者:曾宪权,冯战申,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

操作系统原理与实践

操作系统原理与实践试读:

前言

操作系统课程是高等学校计算机科学与技术、软件工程专业的核心课程,也是网络工程、信息安全和自动化等专业学生必须学习和掌握的基础课程。该课程在计算机软硬件课程的设置上起着承上启下的作用,也是打好软件基础的课程,其内容涉及理论、算法、技术和实现等,集成了程序设计知识、数据结构、计算机组成和体系等多种不同门类的计算机专业知识,在整个计算机专业课程体系中扮演着核心角色。因此,操作系统知识的学习对于从事计算机技术的人员来说是非常重要的。但是,在教学实践中,可以发现学生学习和理解这门课程有一定的难度,其原因主要有以下几点。(1)操作系统是计算机硬件上的第一层软件,负责管理计算机资源,为其他软件提供运行环境,其涉及计算机软、硬件的诸多知识。(2)课程内容较抽象。尽管大家使用计算机时都要与操作系统交互,但是对什么是操作系统、操作系统能够做什么及怎样做等问题并不是很清楚,因而对操作系统倍感抽象、费解。(3)发展变化快。计算机操作系统在用户需求的推动下,随着计算机体系的发展而不断发展,是计算机软件中变异、更新最快的软件,因而加重了学生的学习难度。

为了解决这些问题,提高操作系统课程的教学质量,在广泛汲取国内外优秀教材和研究成果的基础上,借鉴、参照ACM/IEEE-CS2002和CCC2002中操作系统课程教学的相关内容,结合多年操作系统课程的教学经验,编者编写了本书。本书采用“理论—技术—实践”的体系来安排教学内容,以降低问题难度,提高学生学习兴趣,培养学生实践能力和创新意识。与国内相关书籍相比,本书具有以下特点。(1)理论联系实际。本书将操作系统原理讲解和实际操作系统结合起来,在介绍原理之后,给出了该原理在实际商用操作系统中的应用,从而把理论与实践有机地结合起来,使抽象的理论更利于理解和消化,提高了学生的学习兴趣。(2)实践性强。本书结合教学内容提供了相关编程实例和技术,给出了部分程序的完整C语言代码,精选了部分与课程内容相关的实验。每个实验都给出了相关背景知识。读者通过阅读这些背景知识,基本上可以完成这些实验。通过完成这些实验,一方面可以加深读者对操作系统原理的理解,另一方面可以提高学生系统程序设计和分析的能力。(3)内容新颖。本书在选材过程中,根据现代操作系统的发展要求,选择最近几年出现的新思想、新概念、新技术,在一定程度上反映了操作系统的发展方向,以提高学生适应迅速变化的操作系统发展的能力,了解操作系统的发展趋势,培养学生的创新能力。(4)适用面广。本书做到了理论与实践的有机结合,既讲述了操作系统的基本原理,又介绍了相关的编程知识和技术,既可以作为教材使用,又可以作为计算机工程人员的参考用书。(5)便于教学和自学。本书每章都给出了学习要求和建议,课后精选大量习题来巩固课程内容,给出了一些扩展阅读材料,利于教师教学和读者自学。

全书共分8章,基本上涵盖了现代操作系统的基本概念、设计原理和实现技术。第1章介绍操作系统的概念、功能、特征、发展历史和结构;第2章分析操作系统的工作环境和操作系统提供的服务和接口;第3章~第7章分别介绍了处理器管理与调度、进程同步和死锁、存储管理、文件管理和I/O管理;第8章叙述了操作系统与计算机系统的安全和保护问题。

本书以普通高校计算机科学与技术及其相关专业本、专科学生为主要对象,也可以作为自学和考研参考书。由于各高校的不同专业教学安排要求和教学时间有一定的差别,因此,在本书教学内容上可酌情进行取舍。如果课时较充分,则可以讲授全部内容,并安排上机实践来完成实验。如果课时较少,则可讲授每章的基本内容,实验可作为学生的作业。为检查学习效果,每章后留有习题和相应的实验,读者可根据实际需要选择使用。

本书是许昌学院精品课程建设教材,由曾宪权、冯战申、章慧云担任主编,邱颖豫、鄢靖丰参编。具体分工如下:第1章由邱颖豫编写,第2章~第5章由曾宪权编写,第6章和第7章由冯战申编写,第8章由鄢靖丰编写。本书部分章节引用了一些中、英操作系统教材、著作及网络资源,在此向各位作者表示衷心的感谢。

由于编者水平有限,加之时间仓促,书中疏漏和错误之处在所难免,真诚希望各位读者批评指正。编者联系信箱:xianquanzeng@126.com。编者第1章操作系统概论目标和要求◆ 了解操作系统在整个计算机系统中的地位。◆ 理解和掌握操作系统的概念和作用。◆ 理解现代操作系统的特征和功能。◆了解操作系统的发展历程及发展趋势,从而理解计算机技术发展的推力及发展趋势。◆掌握批处理系统、分时系统和实时系统的特点,能够区分不同类型的操作系统。◆了解操作系统的设计目标,熟悉操作系统的设计结构。学习建议本章是操作系统课程的总论,涉及内容比较多,也比较抽象和枯燥,因此,学习中应加强对基本概念的理解,结合Windows和UNIX/Linux等商用操作系统的发展历程来理解整个操作系统的发展,进而理解操作系统的概念、作用和特点,明白“什么是操作系统”、“操作系统能做什么”等。操作系统是计算机系统中最重要的系统软件,它管理整个计算机系统的软、硬件资源,是其他软件和程序的运行基础,是用户与计算机硬件的桥梁。由于应用领域的不同,各种操作系统有着不同的设计目标和要求,但这些操作系统仍然有一些共性。本章分析了操作系统在计算机系统中的地位和作用,回顾了操作系统的发展历史,介绍了现代操作系统的特征和功能,并对支持操作系统的硬件环境及操作系统设计等相关问题做了综合性讨论,为进一步学习操作系统理论奠定了良好的基础。1.1 概述1.1.1 操作系统的地位

现代的大多数计算机系统是以数学家约翰·冯·诺依曼等在20世纪40年代末期提出的“存储程序控制”的原理为基础的。它能够按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果。因此,计算机系统要提供基本的组件,以组成计算机系统赖以工作的实体。这些组件包括中央处理器(Central Processing Unit,CPU)、存储器、输入和输出设备等,它们给用户提供了基本的计算资源,用户可以借助这些资源来完成自己的计算任务。由于计算机系统每类硬件资源都有不同的物理特性,需要采用不同的操作方式,使用起来非常不方便。为了正确使用计算机系统,屏蔽硬件的差异,需要编写程序来管理计算机的所有部件。计算机系统中使用的各种程序称为计算机软件。有了软件,计算机才可以对信息进行存储、处理和检索,检查文档拼写错误,玩儿探险游戏,处理许多有意义的事情。因此,现代计算机系统是硬件和软件的有机统一体,硬件是计算机的“躯体”,软件是计算机的“灵魂”,软件能充分发挥硬件潜能和扩充硬件功能,完成各种系统及应用任务。

根据软件在计算机系统中所起的作用不同,计算机软件大致可分为系统软件和应用软件。通常,一个完整的计算机系统可以粗略分成计算机硬件、操作系统、系统软件和应用程序四个层次。

图1-1给出了计算机系统的软硬件层次结构。其中,每一层具有一组功能并提供相应的接口,接口对内层掩盖了实现细节,对外层提供了使用约定。图1-1 计算机系统的层次结构

计算机硬件层提供基本的可计算性资源,包括具有一组指令的处理器、可被访问的寄存器和存储器,可被使用的各种I/O设施和设备。这些设施和设备是操作系统和上层软件赖以工作的基础,也是操作系统设计者可以使用的资源。

操作系统层是硬件层上的第一层软件,是对硬件所做的首次扩充和改造,主要完成资源的调度和分配、信息的存取和保护、并发活动的协调和控制等。操作系统是上层软件运行的基础,为编译程序、编辑程序、数据库系统等的设计者提供了有力支撑。在计算机系统的操作过程中,操作系统提供了正确使用计算机资源的方法。

系统程序层建立在操作系统改造和扩充过的机器上,提供了扩展指令集,实现各种语言处理程序、数据库管理系统和其他系统程序的作用。此外,它还提供了种类繁多的实用程序,如链接装配程序、库管理程序、诊断排错程序、分类/合并程序等供用户使用。

应用程序层用来解决用户的不同应用要求,如娱乐、办公等。通过使用操作系统提供的支撑环境,应用程序开发者可以借助各种程序设计语言来快捷、方便地开发各种应用程序,满足用户的应用要求,而不需要考虑计算机系统硬件的差异。

因此,可以认为,在整个计算机系统中,操作系统和硬件组成了一个运行平台,其他软件都运行在这个平台上。1.1.2 操作系统的目标

计算机发展到今天,从个人机到巨型机,无一例外地都配置了一种或多种操作系统,操作系统已经成为现代计算机系统不可分割的重要组成部分。配置操作系统的主要目标如下。(1)方便用户使用。操作系统提供良好的、一致的用户接口,弥补硬件系统的类型和数量差别,使计算机系统使用起来十分方便。(2)扩大机器功能。操作系统是计算机硬件上的第一层软件,应该能够改造硬件设施,扩充机器功能。(3)管理系统资源。操作系统管理和分配硬件、软件资源,合理地组织计算机的工作流程。(4)提高系统效率。操作系统应该充分利用计算机系统的资源,保持CPU和I/O设备的繁忙,提高计算机系统的效率和吞吐量。(5)构筑开放环境。操作系统应该构筑一个开放环境,主要指:遵循有关国际标准;支持体系结构的可伸缩性和可扩展性;支持应用程序在不同平台上的可移植性和可互操作性。开放性已成为计算机技术的核心问题,也是一个新的系统或软件能否被应用的重要依据。1.1.3 操作系统的作用

大多数计算机用户有过一些使用操作系统的体验,但要准确地给出操作系统的定义却很困难,部分原因在于用户可以从不同的角度来观察操作系统。一般来说,操作系统在计算机系统中的作用可以从以下几个方面来理解。

1.操作系统是用户与计算机硬件之间的接口

为了使用计算机来完成自己的任务(如娱乐、游戏、科学计算等),用户需要通过操作系统来使用这些计算机系统的资源。因此,从用户的角度来看,操作系统是其与计算机硬件之间的一个接口。通过这个接口,用户能够使用不同的界面(如Windows的图形用户界面和控制台方式)方便、快捷、安全、可靠地操作计算机硬件来完成自己的计算任务。图1-2给出了操作系统作为用户接口时的示意图。

2.操作系统为用户提供了扩展计算机

在机器语言上,计算机的体系结构是原始的且编程是很困难的,尤其是输入和输出操作。例如,当用户使用磁盘来进行I/O操作时,用户必须了解磁盘的各种参数(如磁盘的扇区数、物理介质的记录格式等)。显然,这对程序员的编程造成了相当的困难,而对一般的程序员来说,他们并不想涉足磁盘编程的细节,需要的是一种简单的、高度抽象的、可以与之交互的设备。这就需要采用软件技术使硬件的复杂性和用户隔离开来,给用户提供一个更好的使用计算机设备的接口,这种软件就是操作系统。操作系统隐藏了计算机硬件的底层特性,给用户提供了一个扩展的计算机系统,使用户能够实现处理器的管理、存储空间的分配和管理、输入和输出设备的控制和管理等。图1-2 操作系统接口示意图

每当在计算机上安装一层软件时,提供了一种抽象,系统的功能就会增加一些,使用就更加方便,用户可用的运行环境就更好。所以,当计算机上安装了操作系统后,便为用户提供了一台功能显著增强、使用更加方便、效率明显提高的扩展机器。它比底层硬件的功能更强,更易于编程和使用。

3.操作系统是计算机系统的资源管理者

在计算机系统中,能分配给用户使用的各种硬件和软件设施总称为资源。资源包括两大类:硬件资源和信息资源。其中,硬件资源分为处理器、存储器、I/O设备等,I/O设备又分为输入型设备、输出型设备和存储型设备;信息资源则分为程序和数据等。操作系统的重要任务之一是有序地管理计算机中的硬件、软件资源,跟踪资源使用状况,满足用户对资源的需求,协调各程序对资源的使用冲突,为用户提供简单、有效的资源使用方法,最大限度地实现各类资源的共享,提高资源利用率,使得计算机系统的效率有了很大提高。

资源管理是操作系统的一项主要任务,而控制程序执行、扩充其功能、屏蔽使用细节、方便用户使用、组织合理工作流程、改善人机界面等都可以从资源管理的角度理解。

通过上面的介绍,大家知道操作系统是计算机系统中最重要的系统软件,是其他程序运行的基础。到底什么是操作系统,它应该具有哪些功能,现在还没有一个完整的定义,结合上面的介绍,可把操作系统定义如下:操作系统是控制和管理计算机硬件和软件资源,合理地对各种资源进行分配和调度,规范计算机工作流程,方便用户使用的程序的集合。

操作系统是计算机系统的基础软件,它常驻内存,给用户程序提供了支撑环境,所以,操作系统有哪些成分变得非常重要。一个比较公认的定义是,操作系统是一直运行在计算机上的系统程序(通常称为内核),其他程序则为应用程序,运行在操作系统提供的良好环境中,因此,操作系统类似于政府,它本身并不能实现任何有用的功能,只是提供了一个其他程序进行工作的环境。1.1.4 操作系统的特征

尽管现在的操作系统种类繁多,功能差别很大,但它们仍然具有一些共同的特征,如操作系统具有并发性、共享性、虚拟性和异步性。

1.并发性

并发性是指两个或多个事件或活动在同一时间间隔内发生。操作系统是一个并发的系统,并发性是它最重要的特性。操作系统的并发性是指计算机系统中同时存在若干个运行的程序,这些程序在执行时间上重叠。并发性能够消除计算机系统中各个部件之间的相互等待,有效地改善了系统资源的利用率,提高了系统的吞吐量和系统效率。例如,一个程序等待I/O时,它会让出CPU,操作系统调度另一个程序占有CPU运行,即在程序等待I/O时,CPU不会空闲,使得多个I/O设备可同时进行输入和输出,也使得设备I/O和CPU计算同时进行,这就是并发技术。

尽管并发能有效改善资源的利用率,但会引发一系列的问题,使操作系统的设计和实现变得复杂,如程序之间如何切换、协调等问题,操作系统必须具有控制和管理各种并发活动的能力,保证各程序的正确执行。在计算机系统中,并发实际上是一个物理CPU在若干个程序之间的多路复用,它与并行性不同。并行性是指两个或两个以上事件或活动在同一时刻发生。可见,并行的事件或活动一定是并发的,但并发的事件或活动未必是并行的,并行性是并发性的特例,而并发性是并行性的扩展。实现并发性的关键技术之一是如何对系统内的多个程序进行切换,这涉及进程调度问题。

2.共享性

共享性是现代操作系统的另一个重要特征。共享是指系统中的硬件和软件资源不再为某个程序独占,而是供多个用户共同使用。资源共享的方式有如下两种。(1)互斥访问。系统中的某些资源,如打印机、磁带机等,它们虽然可以提供给多个程序使用,但在同一时间段内只允许一个程序访问这些资源,即要求互相排斥地使用这些资源。(2)同时访问。计算机系统中有些资源允许同一时间内多个程序对它们进行访问。典型的可同时访问的设备是磁盘,各种可重入程序也可被同时访问。

并发性和共享性是现代操作系统最基本的两个特征,两者是互为存在条件的。资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题。若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至无法并发执行。

3.虚拟性

虚拟性是指操作系统采用的一种管理技术,它把一个物理上的实体变为若干个逻辑上的对应物,或者把物理上的多个实体变成逻辑上的一个对应物。显然,物理实体(前者)是实际的,而后者是虚拟的。采用虚拟技术的目的是给用户提供一个易于使用、高效的操作环境。在现代计算机系统中,操作系统通过共享计算机的硬件资源来实现虚拟设备,如图1-3所示。

4.异步性

在多道程序环境下,允许多个进程并发执行,但由于竞争资源等因素的限制,使进程的执行不是“一气呵成”,而是以“走走停停”的方式运行的。也就是说,在多道程序环境下,程序的执行是以异步方式进行的。每个程序在何时执行,多个程序间的执行顺序及完成每道程序所需的时间都是不确定和不可预知的。在操作系统中,不确定性有如下两种含义。(1)程序执行结果是不确定的,即程序是不可再现的。(2)程序在何时执行,多个程序的执行顺序及每个程序的完成时间都是不确定的,因而也是不可预知的。图1-3 操作系统虚拟技术的工作原理

异步性是现代操作系统的重要特征。操作系统运行在一个随机的环境中,但这并不能说明,操作系统不能很好地控制资源的使用和程序的运行,而只是强调操作系统的设计和实现要考虑各种可能性,以便稳定、高效、可靠、安全地达到程序并发和资源共享的目的。1.1.5 操作系统的功能

操作系统的主要任务是为多道程序的运行提供良好的运行环境,保证多道程序的高效运行,提高资源的利用率和方便用户的使用。为实现上述目标,现代操作系统应具有以下几项功能。

1.处理器管理

处理器是计算系统中最重要的资源,各种程序最终都要在处理器上执行,因此,必须尽可能地提高处理器的利用率。为了提高处理器的利用率,现代操作系统采用了多道程序设计技术。当一个程序因等待某一条件而不能运行时,就把处理权交给另一个可以运行的程序。或者,当一个比当前运行程序更重要的程序到达时,它应该抢占当前程序占用的CPU。为了描述多道程序的并发执行,操作系统引入进程或线程的概念来描述程序的动态执行过程。处理器的分配和调度都是以进程或线程为基本单位的,因而,处理器的管理可归结为对进程或线程的管理。操作系统负责下列进程管理的活动。(1)创建或删除用户进程和系统进程。(2)暂停或重启进程。(3)提供进程同步机制。(4)提供进程通信机制。(5)提供死锁处理器制。

2.存储管理

内存是现代计算机系统的中心,是可以被 CPU 和 I/O 设备共同访问的数据仓库。内存通常是CPU直接寻址和访问的、唯一的大容量存储器。例如,如果CPU要处理磁盘中的数据,那么这些数据必须通过CPU产生的I/O调用并传送到内存中。同样,如果CPU需要执行指令,则这些指令必须在内存中。如果一个程序要执行,则它必须先映射成绝对地址并装入内存。随着程序的执行,进程可以通过产生绝对地址来访问内存中的程序指令和数据。程序运行结束时,其内存空间得以释放,下一个程序可以被装入并执行。

为了改善CPU的利用率和计算机对用户的响应速度,必须在内存中保留多个程序。内存管理方法很多,不同算法的效能和特定环境有关。某一特定系统的内存管理方法的选择取决于多种因素,尤其是系统的硬件设计。每个算法都要求有特定的硬件支持。操作系统负责下列内存管理活动。(1)记录内存的哪些部分正在被使用及被谁使用。(2)当内存空间可用时,决定哪些进程可以装入内存。(3)根据需要分配和释放内存空间。(4)确保在多道程序环境下,各个程序的运行只在自己的内存空间中运行,互不干扰。(5)当内存空间不足时,采取何种策略扩展逻辑内存。

3.设备管理

计算机系统中的设备有着不同的物理特性,为了方便用户使用设备,操作系统提供了设备管理功能来隐藏特定设备的硬件特质。操作系统的设备管理的主要任务是管理各类外部设置,完成用户提出的I/O请求,加快I/O信息的传送速度,发挥I/O设备的并行性,提高I/O设备的利用率,以及提供各种设备的驱动程序和中断程序,方便用户的使用。为此,设备管理应具有以下功能。(1)提供外部设置的控制与处理。(2)提供缓冲区的管理。(3)提供设备独立性。(4)外部设置的分配和驱动调度。(5)实现虚拟设备。

4.文件管理

文件管理是操作系统最常见的功能。计算机可以在多种物理介质上存储信息。磁带、磁盘和光盘是最常用的介质,这些介质有着不同的特点和物理组织。为了便于使用计算机系统,操作系统对存储设备的物理属性进行了抽象,定义了逻辑存储单元。操作系统将文件映射到这些介质上,并通过这些存储设备访问文件。文件是由创建者定义的一组相关信息的集合。文件通常可以用来表示程序和数据,可以是有严格格式的,也可以是没有格式的。为了实现文件的管理,操作系统必须提供文件的存储、检索和修改等操作,解决文件的共享、保密和保护等问题,以便用户能方便、高效、安全地访问文件。现代操作系统一般都提供了功能很强的文件系统。

通常,操作系统负责与文件管理相关的以下活动。(1)创建或删除文件。(2)创建或删除目录。(3)提供操作文件和目录的原语。(4)将文件映射到外存上。(5)在稳定的存储介质上备份文件。

5.用户接口管理

为了方便用户灵活、方便地使用计算机系统,操作系统提供了一组友好的用户接口。通过这些接口,用户能方便地调用操作系统的功能,有效地组织任务及其工作、处理流程,并使整个系统高效运行。操作系统提供的接口有两大类:命令接口和程序接口。程序接口是为用户程序执行中访问系统资源而设置的,是用户程序取得操作系统资源的唯一途径,它由一组系统调用组成。命令接口可分为基于文本的接口(通常称为Shell)和基于图形的用户接口(Graphical User Interface,GUI)两种。用户通过命令接口可以实现与操作系统的交互。

6.其他功能

随着计算机技术和网络的广泛应用,操作系统的功能进一步得到加强。除了传统操作系统的功能外,操作系统还必须提供其他新功能来满足计算机发展的需要,这些新功能主要包括系统安全和网络通信。

1)系统安全

操作系统的安全直接关系到信息自身的安全,安全已成为衡量操作系统性能的极为重要的方面。通常,系统安全有两方面的含义:一个含义是安全,即保存在系统中的数据或信息不会被未经授权的任何单位、个人操作、复制或修改;另一个含义是防护机制,即操作系统应该为用户提供一套信息防护手段。这套防护系统能按照不同信息系统的防护要求,采取相应的机制来防止一定强度的入侵攻击。

2)网络通信

在计算机网络时代,网络上任何计算机的应用都离不开网络通信,所以,现代操作系统都注重为用户提供可靠、快捷的网络通信功能。这里所说的网络通信功能主要是指,操作系统为应用提供必要的网络协议栈,即一组网络通信所必需的通信程序。常用的网络协议是TCP/IP协议。通信协议的实现涉及操作系统内部的多种功能,将网络通信协议作为操作系统的一项功能一并设计,有利于提高网络通信的效率和可靠性。

通过前面的介绍,已了解了操作系统的特点、功能和作用,为了更好地理解操作系统的概念,有必要回顾一下操作系统的发展历史。通过跟踪发展,能够识别操作系统的共性,并知道这些系统是如何和为何发展成现在的样子的。1.2 操作系统的形成和发展

操作系统的形成和发展是随着计算机体系结构的变化而发展起来的,为了更清楚地把握操作系统的实质,了解操作系统的发展是很有必要的,因为操作系统的许多基本概念都是在操作系统的发展过程中出现并逐步发展和成熟的。了解操作系统的发展历史,有助于更深刻地认识操作系统基本概念的内在含义。通过对操作系统历史的简单回顾,可注意到在操作系统中,问题的发现将导致引入新的硬件功能。1.2.1 人工操作阶段

从计算机诞生(1946年)到20世纪50年代中期研制的计算机属于第一代计算机,这时的计算机体积庞大,速度慢,没有操作系统。由用户(程序员)采用手工方式直接控制和使用计算机硬件,即由用户(程序员)将事先准备好的程序和数据穿孔在纸带或卡片上,然后将这些纸带或卡片装入纸带或卡片输入机,启动硬件并将程序和数据输入到计算机中,随后启动计算机运行。当程序运行结束取走结果后,才让另一个用户上机。这种人工操作方式有以下缺陷。(1)用户上机独占全机资源,而使资源利用率不高,系统效率低下。(2)手工操作多,浪费处理器时间,也极易发生差错。(3)数据的输入、程序的执行、结果的输出均联机进行,从上机到下机的时间非常长。

随着计算机速度的提高,人工操作方式的缺点暴露出来。例如,一个作业在每秒1万次的计算机上执行,需要运行1小时,作业的建立和人工干预只用了3min,那么手工操作的时间占总运行时间的5%。当计算机的速度提高到每秒10万次时,作业运行仅需要6min,而手工操作不会有大的变化,仍为3min,这时手工操作时间占总运行时间的50%。由此可见,缩短手工操作和人工干预的时间是十分必要的。另外,CPU速度迅速提高,而I/O设备速度却提高不多,导致CPU和I/O设备之间的矛盾越来越突出,操作系统必须妥善解决这些问题。1.2.2 管理程序阶段

20世纪50年代,随着晶体管计算机的广泛应用,计算机高级语言(FORTRAN、ALGOL、COBOL等)的出现,用户可以采用高级语言编写程序来控制计算机的执行。用户要完成某一任务,首先将程序写到纸上,然后穿成卡片,再将卡片带到计算中心交给操作员。计算机运行完当前任务后,其结果由打印机输出,操作员再从卡片盒中选择另一个任务(作业)交给计算机执行。在这个阶段中,用户提交的任务是在操作员的干预下成批执行的。

由于处理器的速度与手工操作设备输入和输出不匹配,人们设计了监督程序(或管理程序)来实现任务的自动转换处理。在此期间,每个任务由程序员提供一组在某种介质(如纸、磁盘)上的任务信息(文件),包括任务说明书及相关的程序和数据。任务说明书由程序员提交给系统操作员,操作员集中一批用户提交的作业,由管理程序将这批作业从纸带或卡片机输入到磁带上,每当一批作业输入完成后,管理程序自动把磁带上的第一个作业装入内存,并把控制权交给作业。当该作业执行完成后,作业又把控制权交回管理程序,管理程序再调入磁带上的第二个作业到内存中执行,以此类推,直到所有的作业都完成。这种处理方式称为“批处理方式”。由于是串行操作,所以又称为单道批处理。第一个批处理操作系统(也是第一个操作系统)是20世纪50年代中期由General Motors开发的,使用在IBM 701上。在20世纪60年代早期,许多厂商为自己的计算机系统开发了批处理操作系统,用于IBM 7090/7094计算机的操作系统IBSYS最为著名,它对其他操作系统有着广泛影响。

在早期的批处理系统中,作业的输入和输出都是联机的。联机I/O的缺点是速度慢,I/O设备和CPU仍然串行工作,CPU消耗时间多,为此,在批处理系统中引入了脱机I/O技术。除主机外,另设一台外围计算机,该机仅与I/O设备交互,不与主机相连。输入设备上的作业通过外围机输入到高速磁盘上(脱机输入),主机从高速磁盘上把作业读入内存并执行。作业执行完毕后,主机负责将结果输出到高速磁盘(脱机输出)上,外围计算机从磁盘将结果读出并交打印机进行打印输出,如图1-4所示。这样,I/O工作脱离了主机,外围计算机和主机可以并行工作,大大加快了程序的处理和数据的输入/输出,这种技术称为脱机I/O技术。图1-4 脱机批处理系统1.2.3 多道批处理

在单道批处理系统中,内存中仅有一个任务,无法充分利用系统中的所有资源,致使系统中仍有许多资源空闲,设备利用率低,系统性能差。在20世纪60年代中期,计算机的体系结构发生了很大的变化,由以CPU为中心的结构改变为以主存为中心,使在内存中同时装入多个作业(或任务)成为可能,多道程序的概念成为现实。

所谓多道程序设计是指允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中同时存放多道(两道以上相互独立的)程序,它们都处于开始点和结束点之间。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各程序轮流使用CPU,交替执行。引入多道程序设计技术的根本目的是提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。

在多道批处理系统中,用户所提交的作业(任务)都存放在外存上形成后备队列,由作业调度程序按一定的算法从后备队列中挑选若干个作业装入内存,使它们共享处理器和系统资源。中央处理器采用切换方式为每个作业服务,使得程序可以同时执行,大大提高了CPU和设备的利用率,增加了系统的吞吐量,如图1-5所示。这个阶段的管理程序已迅速发展成为一个重要的系统软件—操作系统。

这里给出一个简单的例子来说明多道程序设计的好处。考虑一台计算机,它有250MB可用存储器(没有被操作系统使用)、磁盘、终端和打印机,同时提交执行三个程序:JOB1、JOB2和JOB3。它们的属性在表1-1中列出。假设JOB2和JOB3对处理器只有最低的要求,JOB3要求连续使用磁盘和打印机。对于简单的批处理环境,这些作业将顺序执行。因此,JOB1在5min后完成,JOB2必须等待5min,然后在此之后的15min内完成,而JOB3则在20min后才开始,即从它最初被提交开始,30min后才完成。表1-2中的单道程序设计列出了平均资源利用率、吞吐量和响应时间,图1-6(a)显示了各个设备的利用率。显然,在整个需要的30min内,所有资源都没有得到充分使用。图1-5 多道程序设计表1-1 示例程序执行属性表1-2 多道程序的资源利用效果

假设作业在多道程序操作系统下并行运行。由于作业间几乎没有资源竞争,这3个作业都可以在计算机中同时存在其他作业的情况下,在几乎最小的时间内运行(假设JOB2和JOB3均分配到了足够的处理器时间,以保证它们的输入和输出操作处于活动状态)。JOB1仍然需要5min完成,但此时JOB2也完成了1/3,而JOB3完成了一半。这三个作业将在15min内完成。由图1-6(b)中的直方图可获得表1-2中多道程序设计中的那一列数据,从中可以看出性能的提高是很明显的。图1-6 设备利用率直方图1.2.4 分时系统与实时系统的出现

1.分时系统

在批处理系统中,用户不能干预自己程序的运行,无法得知程序的运行情况,这对程序的调试和排错极为不利。为了克服这一缺陷,增强系统的交互能力,便产生了分时操作系统(Time Sharing Operating System)。其实现思想如下:在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机资源,如图1-7所示。图1-7 分时系统示意图

分时技术把处理器的时间分成很短的时间片,这些时间片轮流地分配给各个联机的作业使用。如果某作业在分配给它的时间片用完时仍未完成,则该作业暂时中断,等待下一轮运行,并把处理器的控制权让给另一个作业使用。这样在一个相对较短的时间间隔内,每个用户作业都能得到快速响应,以实现人机交互。

第一个分时操作系统是由麻省理工学院开发的兼容分时系统(Compatible Time-Sharing System,CTSS),源于多路存取计算机项目,该系统最初是在1961年为IBM 709开发的,后来又移植到IBM 7094中。

批处理和分时都使用了多道程序设计,但分时系统与多道批处理系统相比,具有完全不同的特征。分时系统具有以下特点。(1)多路性:允许在一台主机上同时连接多台联机终端,系统按分时原则为每个用户服务。(2)独立性:每个用户各占一个终端,彼此独立操作,互不干扰。(3)及时性:用户的请求能在很短的时间内获得响应。(4)交互性:用户可通过终端与系统进行广泛的人机对话。

2.实时系统

虽然多道批处理操作系统和分时操作系统获得了较佳的资源利用率和快速的响应时间,从而使计算机的应用范围日益扩大,但它们难以满足实时控制和实时信息处理领域的需要。这样就产生了实时系统。目前有三种典型的实时系统;过程控制系统、信息查询系统和事务处理系统。计算机用于生产过程控制时,要求系统能现场实时采集数据,并对采集的数据进行及时处理,进而能自动地发出控制信号控制相应执行机构,使某些参数(压力、温度、距离、湿度)能按给定规律变化,以保证产品质量。导弹制导系统、飞机自动驾驶系统、火炮自动控制系统都是实时过程控制系统。计算机还可用于控制实时信息处理,情报检索系统是典型的实时信息处理系统。计算机接收成百上千从各处终端发来的服务请求和提问,系统应在极快的时间内做出回答和响应。事务处理系统不但对终端用户及时做出响应,而且要对系统中的文件或数据库频繁更新。例如,银行业务处理系统,每次银行客户发生业务往来,均需修改文件或数据库。这样的系统要求响应快、安全保密、可靠性高。

实时操作系统(Real Time Operating System)是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的时间之内控制监控的生产过程或对处理系统做出快速响应,并控制所有实行任务协调一致运行的操作系统。由实时操作系统控制的过程控制系统较为复杂,通常由以下四部分组成。(1)数据采集。它用来收集、接收和录入系统工作必需的信息或进行信号检测。(2)加工处理。它对进入系统的信息进行加工处理,获得控制系统工作必需的参数或做出决定,并进行输出、记录或显示。(3)操作控制。它根据加工处理的结果采取适当措施或动作,达到控制或适应环境的目的。(4)反馈处理。它监督执行机构的执行结果,并将该结果反馈至信号检测或数据接收部件,以便系统根据反馈信息采取进一步措施,达到控制的预期目的。

在实时系统中通常存在若干个实时任务,它们常常通过“队列驱动”或“事件驱动”开始工作,当系统接收来自某些外部事件后,分析这些消息,驱动实时任务完成相应处理和控制。可以从不同角度对实时任务加以分类。按任务执行是否呈现周期性分类,可分成周期性实时任务和非周期性实时任务;按实时任务截止时间分类,可分成硬实时任务和软实时任务。

分时系统和实时系统的出现标志着操作系统步入了实用化阶段,操作系统成为计算机系统中重要的系统软件,它为用户的应用提供了一个良好的支撑环境,方便了用户的使用。批处理操作系统、实时操作系统和分时操作系统构成了现代操作系统的基本类型,现代操作系统可能综合它们多方面的特征以满足不同的应用需求。1.2.5 操作系统的进一步发展

近年来,由于组成计算机的电子元器件快速更新换代,导致计算机体系结构不断发展,为了适应计算机结构的变化,满足用户不断变化的应用需求,提高计算机系统资源利用率,许多新的操作系统出现了。典型的有微机操作系统、网络和分布式操作系统、并行和集群系统及嵌入式系统等。

1.微机操作系统

从20世纪70年代以来,个人计算机得到了广泛的应用。为了满足个人用户使用计算机的要求,方便用户的使用,提高系统的响应速度,微机操作系统应运而生。微机操作系统是在个人计算机上使用的操作系统,因而早期的微机操作系统是单用户和单任务的(如DOS)。现在,随着计算机技术的发展,用户需求的提高,许多在大型计算机上使用的技术被引入到微机操作系统中。

近年来,微机操作系统得到了进一步发展,以Windows、OS2、MacOS和Linux为代表的新一代微机操作系统具有GUI、多用户和多任务、虚拟存储管理、网络通信支持、数据库支持、多媒体支持、应用编程支持API等功能。新一代微机操作系统还具有以下特点。(1)开放性:支持不同系统互连、支持分布式处理和多CPU系统。(2)通用性:支持应用程序的独立性和在不同平台上的可移植性。(3)高性能:随着硬件性能提高、64位机逐步普及、CPU速度进一步提高,微机操作系统中引进了许多以前在中、大型机上才能实现的技术,支持多线程,支持对称处理器,使计算机系统性能大大提高。(4)采用微内核结构:提供基本支撑功能的内核极小,大部分操作系统功能由内核之外运行的服务器来实现。

2.网络和分布式操作系统

计算机网络是通过通信设备将物理上分散的并具有自制能力的多个计算机系统互连起来的系统。网络操作系统(Network Operating System)能够控制计算机在网络中方便地传送信息和共享资源,并能为网络用户提供各种所需服务的操作系统。网络操作系统主要有以下两种工作模式。(1)客户机/服务器(Client/Server)模式,这类网络中有服务器和客户机两类站点。服务器主要为用户提供文件打印、通信传输、数据库等服务。客户机是本地处理和访问服务器的节点。(2)对等模式(Peer-to-Peer)。在这种结构中,网络中的站点是对等的。

网络操作系统除了具有操作系统的基本功能外,还应具有网络通信、资源管理和网络管理等功能。目前比较流行的网络操作系统有Windows Server 2003、Linux和UNIX。

分布式计算机系统是一种特殊的计算机网络系统。在分布式系统中,每台计算机高度自治,又相互协调,能在系统范围内实现资源管理、任务分配,能并行地运行分布式程序。分布式系统与计算机网络的关键区别在于:在分布式系统中,多台自主的计算机对用户是透明的(或者说是不可见的)。用户输入一条命令运行某个程序,分布式系统便会去运行,而不需要事先知道程序所在的位置,也就是说,在分布式系统中,用户察觉不到多个处理器的存在,用户面对的是一台虚拟的单处理器。在计算机网络中,用户必须明确指出在哪台机器上登录,明确地运行递交的任务,明确地指定文件传输的目的地;而在分布式系统中,不需要明确指定这些内容,系统会自动完成而不需用户的干预。从效果上讲,分布式系统是建立于计算机网络之上的软件系统,具有高度的整体性和透明性。因此,计算机网络和分布式系统的区别更多地取决于软件(尤其是操作系统)而不是硬件。用于管理分布式系统的操作系统称为分布式操作系统。

3.并行和集群系统

现代的绝大多数计算机属于单处理器系统,即只有一个主CPU。随着企业应用的不断增长,为了增加计算能力,减少投资和增加系统的可靠性,多处理器系统(也称为并行系统)的重要性日益突出。多处理器系统有多个紧密通信的处理器,它们共享计算机总线、时钟,有时还包括内存和外设等。多处理器系统有对称多处理(Symmetric Multiprocessing,SMP)和非对称多处理(Asymmetric Multiprocessing)两种模式。在对称多处理器系统中,每个处理器都运行一个操作系统的副本,这些副本根据需要互相通信。而在非对称的多处理系统中,每个处理器的地位是不平等的,它们有自己特定的任务,一个主处理器控制系统,其他处理器或者向主处理器请求任务或者执行预先固定的任务。目前,最为普遍使用的多处理器系统是对称多处理器系统。

与并行系统一样,集群系统(Cluster System)将多个CPU集中起来完成计算任务。然而,集群系统与并行系统不同,它是由两个或多个独立的系统耦合起来的。集群的定义尚未定型,通常的定义是集群计算机共享存储并通过LAN紧密连接。

4.嵌入式操作系统

随着以计算机技术、通信技术为主的信息技术的快速发展和Internet的广泛应用,3C(Computer,Communication,Consumer Electronic)合一的趋势已初露端倪,计算机是贯穿社会信息化的核心技术,网络和通信是社会信息化赖以存在的基础设施,电子消费品是人与社会信息化的主要接口。3C合一的必然产品是信息电器。而信息电器的使用,要求把计算机嵌入到各种设备中,以适应不同的应用领域。由于嵌入式计算机与其他计算机系统有着巨大的差别,需要相应的嵌入式软件的支持,而嵌入式操作系统是各类嵌入式软件的基本支撑,是运行在嵌入式计算机环境中,对整个系统及所有操作及各种部件、装置等资源进行管理、协调和控制系统的软件。它具有操作系统的基本功能,又具有微型化、可定制、实时性、可靠性和易于移植等特点。目前,代表性的嵌入式操作系统有Windows CE(微软)、Personal Java(SUN公司)等。

纵观整个操作系统的发展历史,可以发现:操作系统正是在用户需求的推动下不断地向前发展的,从而极大地方便了用户的使用。当代,操作系统的发展正在呈现更加迅猛的发展态势。从规模上看,操作系统向着大型化和微型化两个不同的方向发展。大型系统的典型是分布式操作系统和集群操作系统,而微型系统的典型代表则是嵌入式操作系统。分布式操作系统和集群操作系统是适应计算平台向异构、网络化方向演变而出现的,嵌入式操作系统是为了支持智能电子设备的应用而引入的,目前已得到越来越广泛的应用。

案例研究:Linux和Windows操作系统

1.Linux操作系统

Linux是类UNIX操作系统大家族中的一员。从20世纪90年代末开始,Linux变得非常流行,并且跻身于有名的商用UNIX操作系统之列,这些UNIX系统包括AT&T公司开发的SVR4(System V Release 4)、加利福尼亚大学伯克利分校发布的4.4 BSD、DEC公司(现在属于HP)的Digital UNIX、IBM公司的Solaris及Apple公司的Mac-OS-X。

1991年,Linus Torvalds开发出了最初的Linux,它是一种适用于基于Intel 80386微处理器的IBM PC兼容机的操作系统。Linus将这个系统放到Internet上,允许人们自由下载,许多人对Linux进行了改进、扩充、完善,做出了关键性贡献。这些年来,开发者已经可以使Linux在其他平台上运行,包括HP的Alpha、Itanium(最新的Intel 64微处理器)、MIPS、SPARC、Motorola的MC680x0、PowerPC及IBM的zSeries。

Linux最大的优点就在于它不是商业操作系统,它的源码在GNU公共许可证下是开放的,任何人都可以获得源码并修改它(Linux内核源码的官方网站是http://www.kernel.org/)。它继承了UNIX系统的许多优点,还做了许多改进,成为一个真正的多用户、多任务通用操作系统。1993年,Linux1.0诞生,随着众多商业公司的参与,Linux得到了进一步的发展,各种不同的Linux发行版本相继问世,如著名的Red Hat Linux,这些发行版将Linux内核和相关的工具、应用程序集成到一个系统中,更加方便了用户的使用。现在,Linux的内核已由最初的1.0发展到2.6。

Linux操作系统的技术特点如下。(1)Linux继承了UNIX的优点,有许多改进,是集体智慧的结晶,能紧跟技术发展潮流,具有极强的生命力。(2)通用操作系统,可作为Internet上的服务器、网关;可用做文件和打印服务器;也可供个人使用。(3)内置通信联网功能,可让异种机联网。(4)开放源代码,有利于发展各种特色的操作系统。(5)符合POSIX标准,各种UNIX应用可方便地移植到Linux下。(6)Linux提供了庞大的管理功能和远程管理功能。(7)Linux支持大量外部设备。(8)Linux支持32种文件系统,如EXT2、EXT、Xiafs、Isofs、HPFS、MS-DOS、UMSDOS、Proc、NFS、SYSV、Minix、SMB、UFS、NCP、VFAT、AFFS等。(9)提供GUI,有图形接口X-Windows,有多种窗口管理器。(10)Linux支持并行处理和实时处理,能充分发挥硬件性能。(11)用户可自由获得源代码,在Linux平台上开发软件成本低。

2.Windows操作系统

Windows操作系统是由微软公司开发的操作系统。从1983年微软公司宣布Windows的诞生到现在的Windows 8.0,Windows已经走过了30多年,并且成为风靡全球的微机操作系统。目前,个人计算机上采用Windows操作系统的占90%,微软公司几乎垄断了PC软件行业。

1983年11月,比尔·盖茨宣布推出Windows。但是一直到1985年11月,微软公司才正式发布Windows 1.0。1987年12月,Windows 2.0正式发布。1990年5月22日,微软推出了Windows 3.0。从此,在许多独立软件开发商和硬件厂商的支持下,微软的Windows在市场中逐渐开始取代DOS成为操作系统平台的主流软件。表1-3列出了Windows的一些版本的发展时间表。Windows之所以如此流行,是因为它有强大的吸引功能及Windows的易用性。表1-3 Windows版本的发展时间表(1)界面图形化。以前DOS的字符界面使得一些用户操作起来十分困难,Mac首先采用了图形界面和鼠标,这就使得人们不必学习太多的操作系统知识,只要会使用鼠标即可进行工作。这就是界面图形化的好处。Windows中的操作可以说是“所见即所得”,只要移动鼠标单击、双击即可完成操作。(2)多用户、多任务。Windows系统可以使多个用户用同一台计算机而不会互相影响。多任务是现在许多操作系统都具备的,这意味着可以同时让计算机执行不同的任务,并且互不干扰,如一边儿听歌一边儿写文章,同时打开数个浏览器窗口进行浏览等,这对现在的用户而言是必不可少的。(3)网络支持良好。Windows中内置了TCP/IP协议和拨号上网软件,用户只需进行一些简单的设置即可上网浏览、收发电子邮件等。同时,它对局域网的支持也很出色,用户可以很方便地在Windows中实现资源共享。(4)出色的多媒体功能。这也是Windows的一个特色。在Windows中可以进行音频、视频的编辑/播放工作,可以支持高级的显卡、声卡,使其“声色俱佳”。MP3及ASF、SWF等格式的出现使计算机在多媒体方面更加出色,用户可以轻松地播放最流行的音乐或观看影片。(5)硬件支持良好。Windows 95以后的版本都支持“即插即用”技术,这使得新硬件的安装更加简单。用户将相应的硬件和计算机连接好后,只要有其驱动程序,Windows就能自动识别并进行安装。几乎所有的硬件设备都有Windows下的驱动程序。随着 Windows的不断升级,它能支持的硬件和相关技术也在不断增加,如USB设备、AGP技术等。(6)众多的应用程序。在Windows下有众多的应用程序可以满足用户各方面的需求。Windows下有数种编程软件,有无数的程序员在为Windows编写程序。1.3 操作系统结构

操作系统是一个复杂的、庞大的系统软件,它的设计和开发必须采用软件工程的原则和方法。在进行操作系统的设计和开发时,了解操作系统的设计目标和设计原则,熟悉操作系统的体系结构是非常重要的。1.3.1 操作系统的设计

1.操作系统的设计目标

一个高质量的操作系统应具有可靠性、高效性、可扩充性、可移植性、安全性和兼容性等特征。(1)可靠性。可靠性包括正确性和健壮性,这是现代操作系统最基本的要求,也就是说,作为计算机系统最底层、最重要的基础性系统软件,操作系统必须能够保证系统的正确性和容错性,给用户提供良好的工作平台,以方便用户的使用。(2)高效性。高效性是指操作系统能够满足多个用户的资源请求,支持多道程序的运行,提高系统资源的利用率,进而提高系统的运行效率,即现代操作系统必须是一个高效的系统,以最大程度地满足用户的要求。(3)可扩充性。一个实际的操作系统投入运行后,随着应用需求的变动,可能需要对相应的功能进行扩展,以满足用户的要求,这就要求操作系统易于扩展、维护。(4)可移植性。可移植性指的是把一个程序从一个计算机系统环境移到另一个计算机系统环境中并能正常运行的特性。现代操作系统的设计都将可移植性作为一个重要的目标,而影响可移植性的最大因素就是和机器有关的硬件处理部分,因此,现代操作系统在设计时总是把操作系统与硬件相关的部分相对独立出来,并且位于操作系统的底层。(5)安全性。操作系统是计算机系统的基础软件,它的安全性直接关系到整个计算机系统的安全,因此,操作系统应为用户数据提供最基本的安全机制,以保证整个系统的安全。(6)兼容性。兼容性是指一个计算机系统环境中的软件对于另一种计算机系统环境的适应能力。由于用户的使用要求不断发生变化,因此操作系统的版本不断更新,这就要求操作系统具有相应的兼容性以满足不同层次用户的要求。

2.操作系统的设计与实现

操作系统的设计是一项复杂的、高创造性的工作,必须采用科学的原理和方法,正确区分设计策略和实现机制,做到策略和机制相分离。机制决定了如何做,策略决定了做什么。例如,定时器的结构是一种确保CPU保护的机制,而对特定的系统将定时器的时间设置为多长却是策略问题。策略和机制的区分对于系统的灵活性很重要,策略可能会随时间和地点而有所改变。在最坏的情况下,每次策略的改变都可能需要机制的改变。系统需要更通用的机制,这种策略的改变只需要重新定义一些系统参数。著名的UNIX操作系统的设计名言就是“提供机制而不是策略”。

在设计操作系统之后必须实现它。传统的操作系统使用汇编语言来编写,但操作系统现在通常使用高级语言(如C和C++)来编写。采用高级语言来实现操作系统,代码编写更快、更为紧凑、更容易理解和调试、更容易移植。现代操作系统的典型代表,如UNIX、OS/2、Linux和Windows等的主要代码均是采用C语言编写的。1.3.2 操作系统结构的类型

在操作系统的发展过程中,产生了多种体系结构。到目前为止,大致可以分为四种类型。这四种结构的系统都在实际使用中,各有其使用范围。需要说明的是,对于一个实际的现代操作系统来说,它的体系结构往往比较难划分到某一个类别之下,往往充分吸收多种体系结构的优点,把不同的体系结构整合起来使用。

1.整体式结构

操作系统的整体式结构又称模块组合结构,是一种基于结构化程序设计的软件设计方法。早期的操作系统(如IBM S/360)及一些小型操作系统(如DOS操作系统)均属于这种类型。整体式操作系统

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载