配套课件-计算机操作系统_第1页
配套课件-计算机操作系统_第2页
配套课件-计算机操作系统_第3页
配套课件-计算机操作系统_第4页
配套课件-计算机操作系统_第5页
已阅读5页,还剩1029页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1计算机系统与操作系统1.2操作系统的形成1.3操作系统的类型1.4操作系统的功能习题1.1.1计算机系统

计算机系统是一个整体概念,不论是大型机、小型机还是微型机,都是由两大部分组成的:计算机硬件部分和软件部分。

硬件部分指的是组成计算机的任何机械的、磁性的、电子的装置或部件。它是由中央处理器、存储器、输入/输出设备等组成的。这些部件一般采用总线结构组织在一起。由这些硬件部件构成的机器称为裸机,它是计算机系统最基本的硬件环境,是计算机系统的物质基础。1.1计算机系统与操作系统然而,用户不喜欢裸机这种工作环境,因为裸机上没有任何一种可以协助他们解决问题的手段,只提供最低级的机器语言。为了对硬件的性能加以扩充和完善,为了方便用户上机,在裸机外添加了能实现各种功能的软件程序。例如,为了方便用户描述自己的算题任务,提供了程序设计语言以及相应的翻译程序。为了方便、有效地解决各类问题,提供了各种服务性程序和实用程序,如系统程序库、编辑程序、连接装配程序等。为了维护系统正常工作,提供有查错程序、诊断程序和引导程序。此外,还有用户应用程序、数据库管理系统等。这些系统程序或应用程序以及有关的数据形成了软件。在这些软件中有一个很重要的软件系统,即操作系统,它管理系统中所有的软、硬件设备,并组织整个计算机的工作流程。软件一般可以分为以下几类:

系统软件,如操作系统、编译系统、连接装配程序等。

工具软件,如各种诊断程序、检查程序等。

应用软件,如应用程序、软件包等。裸机是计算机系统的物质基础,没有硬件就不能执行指令和实施最原始、最简单的操作,软件也就失去了效用;而若只有硬件,没有配置相应的软件,计算机就不能发挥它潜在的能力,这样硬件也就没有活力。因此,硬件和软件这二者是相互依赖、相互促进的。只有软件和硬件有机地结合在一起的系统,才能称得上是一个计算机系统。操作系统将系统中的各种软、硬件资源有机地组合成一个整体,使计算机真正体现了系统的完整性和可利用性。计算机系统是由硬件和软件两大部分组成的一个完整的系统。其中,裸机处于系统的最底层,裸机的外面是软件部分。软件部分按照它们的功能和使用特性分为系统软件和应用软件。应用软件是在系统软件的支持下完成各项工作的,它在系统软件的外层。系统软件中的操作系统处于核心地位,负责整个系统的管理和控制,与计算机硬件关系最为密切。计算机系统的组成如图1-1所示。图1-1计算机系统的组成以及操作系统的地位1.1.2操作系统的概念

在计算机系统中引入操作系统的目的可以从三个方面来考察。

1)从用户的观点来看

计算机是为用户提供服务的,计算机所完成的任何工作,都是为了满足用户的计算或处理需求。因此,引入操作系统是让计算机为用户提供最好的服务,构建一个用户和计算机之间的和谐交互环境。

2)从系统管理人员的观点来看

引入操作系统是为了合理地组织计算机工作流程,管理和分配计算机系统硬件及软件资源,使之能为多个用户高效率地共享。

3)从发展的观点来看

引入操作系统是为了给计算机系统的功能扩展提供支撑平台,使之在追加新的服务和功能时更加容易和不影响原有的服务和功能。综上所述,我们可以把操作系统定义为:操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合——它们管理和控制计算机系统中的硬件及软件资源,合理地组织计算机工作流程,以便有效地利用这些资源为用户提供一个具有足够的功能、使用方便、可扩展、安全和可管理的工作环境,从而在计算机与用户之间起到接口的作用。1.1.3操作系统的宗旨

操作系统是重要的核心软件,它管理着计算机系统的各种资源,控制计算机的工作流程,为用户和上层软件提供各种服务功能。所以操作系统的宗旨可概括如下。

1.有效地管理系统资源,提高资源的利用率

现代的计算机系统一般都为多个用户或多个计算任务共同使用,它们共享计算机系统资源。系统所拥有的资源与使用它们的用户和算题任务的需求相比总是要少些,应用程序在执行过程中都要申请系统资源。所以系统资源如何分配,怎样在用户程序之间协调他们的需求,就是操作系统提供的资源管理功能。因此,对操作系统而言,它的宗旨就是充分地利用系统资源,提高资源的利用率。

2.提供良好的界面,方便用户使用

操作系统为方便用户使用计算机,不但提供了许多丰富的服务功能,同时还提供了方便的接口供用户使用,这样,用户无须了解系统中各种资源的使用细节,只用操作系统提供的用户界面,就可方便、直观地使用计算机。随着计算机技术、多媒体技术的发展,提供友好方便的用户界面变得越来越重要了。操作系统伴随着计算机技术本身及其应用的日益发展而逐渐发展并不断完善,它的功能由弱到强,在计算机系统中的地位不断提高。另外,操作系统作为裸机上的第一层软件,与计算机组成和体系结构是密切相关的。我们通常把计算机硬件的发展分为四个阶段:电子管时代、晶体管时代、集成电路时代、大规模和超大规模集成电路时代。为适应上述计算机发展过程,操作系统经历了如下的发展过程:手工操作阶段(无操作系统)→批处理→执行系统→多道程序系统→分时操作系统→实时操作系统→通用操作系统→网络操作系统→分布式操作系统→嵌入式操作系统等。1.2操作系统的形成1.2.1手工操作阶段

在第一代计算机时期,构成计算机的主要元器件是电子管,计算机运算速度较慢(几千次/秒),没有操作系统,甚至没有任何软件。用户直接用机器语言编制程序,并在上机时独占全部计算机资源。用户既是程序员,又是操作员。上机完全是手工操作:先把程序纸带(或卡片)装到输入机上,然后启动输入机把程序和数据送入计算机,接着通过控制台开关启动程序运行。计算完毕,打印机输出计算结果,用户卸下并取走纸带(或卡片)。整个过程都是人工操作。这种由一道程序独占机器及人工操作的情况,在计算机速度较慢时是允许的,由于此时计算机所需时间相对较长,手工操作所占比例还不是很大。

20世纪50年代后期,计算机的运行速度有了很大提高,从每秒几千次、几万次发展到每秒几十万次、上百万次。这时,手工操作的慢速度和计算机的高速度之间形成了矛盾,即所谓的人-机矛盾。为了解决这一矛盾,只有摆脱人工干预,实现作业的自动过渡。这样就出现了批处理。1.2.2早期批处理

在计算机发展的早期阶段,用户上机时需要自己建立和运行作业,并做结束处理。由于没有任何用于管理的软件,所有的运行管理和具体操作都是由用户自己承担的。

为了缩短作业的建立时间,人们研制了监督程序。它是一个常驻内存的小的核心代码,若干用户作业合成一批,形成一个作业执行序列,由监督程序自动地依次进行处理。

1.联机批处理

用户上机前,要提交程序、数据和作业说明书给操作员,再将这些资料穿成纸带或卡片的形式。操作员把提交的一批作业装到输入设备上,然后由监督程序控制送到磁带上。监督程序自动输入第一个作业的说明记录,若系统资源能够满足用户要求,则将该作业的程序、数据调入内存,并从磁带上输入所需要的编译程序,编译程序将用户源程序翻译成目标代码,然后由连接装配程序把编译后的目标代码及所需的子程序装配成一个可执行的程序,接着启动执行。计算完成后输出该作业的计算结果。一个作业处理完毕后,监督程序又可以自动地调取下一个作业处理。重复上述过程,直到该批作业全部处理完毕。联机批处理系统实现了作业自动过渡,同手工操作相比,计算机的使用效率提高了。但在这种系统中,作业的输入输出是联机的,也就是说,作业从输入到打印出结果都是由CPU直接控制的。随着处理机速度的不断提高,处理机和输入输出设备之间的速度差距形成了矛盾。在作业的输入和执行结果的输出过程中,CPU仍处在等待状态,因此CPU的时间仍有很大的浪费。如果把输入输出工作直接交给一个专用机去做,就可以充分发挥CPU的效率,为此产生了脱机批处理。

2.脱机批处理

脱机批处理系统是由主机和卫星机组成的,如图1-2所示。

卫星机只与外部设备打交道,它负责把输入机上的作业输入到输入带上,主机从输入带上调入作业并运行,计算完成后,将结果输出到输出带上,再由卫星机负责把信息打印输出。在这样的系统中,主机和卫星机可以并行操作,充分发挥主机的高速计算能力。因此脱机批处理系统和联机批处理系统相比大大提高了系统的处理能力。图1-2脱机批处理系统1.2.3执行系统

批处理系统实现了作业的自动过渡,它的出现改善了CPU与外部设备的使用情况,使计算机系统的处理能力得以提高。但也存在一些缺点,如磁带需人工拆装,既麻烦又容易出错。而另一个更重要的问题则是系统的安全性问题。在进行批处理的过程中,所涉及的监督程序、系统程序和用户程序之间是一种相互调用关系,任何一个环节出问题,整个系统都会停顿。另外也无法防止用户程序破坏监督程序和系统程序。

20世纪60年代初,硬件获得了两方面的进展,一是通道的引入,二是中断技术的出现,这两项成果导致了操作系统进入执行系统阶段。

通道是一种专用处理部件,它能控制一台或多台外部设备工作,负责外部设备和主存之间的信息传输。它一旦被启动就能独立于CPU运行,这样可使CPU和通道并行操作,而且CPU和输入输出设备也能并行操作。所谓中断,是指主机接到外部信号时马上停止原来的工作,转去处理这一事件,处理完毕后,主机再回到原来的断点继续工作。借助于通道、中断技术,输入输出工作可在主机控制下完成。这时,原来的监督程序的功能扩大了,它不仅要负责调度作业自动地运行,而且还要提供输入输出功能。这个扩展了的监督程序常驻内存,被称为执行系统。

执行系统实现的是联机操作,和早期批处理系统不同的是:输入输出工作是由在主机控制下的通道完成的,主机与通道、主机和外设之间都可以并行操作。在执行系统中,用户程序的输入输出工作是委托给系统实现的,由系统检查其命令的合法性,以避免由于不合法的输入输出命令造成对系统的威胁,因此提高了系统的安全性。1.2.4多道程序系统

上述的批处理系统和执行系统有一个共同之处,就是每次调用一个用户程序进入内存,称为单道运行。单道程序的运行情况如图1-3所示。图1-3单道程序工作示例从图1-3中可以看出,当外部设备进行传输工作时,CPU处于空闲等待状态;反之,当CPU工作时,I/O设备又无事可做。这说明,计算机系统各部件的效能没有得到充分的发挥,其原因在于内存中只有一道程序。我们知道,操作系统的宗旨是要提高资源的利用率,为此,人们设想能否在系统中同时存放几道程序,这就引入了多道程序设计技术。

多道程序运行情况如图1-4所示。图中,用户程序A首先在处理机上运行,当它需要从输入设备输入新的数据时,系统帮助它启动输入设备进行输入,并让用户程序B开始计算。程序B经过一段计算后需要从打印机输出一批数据,系统接收请求并帮助启动打印机工作。如果此时程序A的输入尚未结束,也无其他用户程序需要计算,处理机就处于空闲状态,直到程序A在输入结束后重新运行。若当程序B的打印工作结束时,程序A仍在运行,则程序B继续等待,直到程序A计算结束再次请求I/O传输时,程序B才能占用处理机。图1-4多道程序工作示例多道程序设计是一种软件技术,该技术使同时进入计算机内存的几个相互独立的程序,在管理程序控制之下相互穿插地运行。当某道程序因某种原因不能继续运行下去时,管理程序便将另一道程序投入运行。这样可以使中央处理器及各外部设备尽量处于忙碌状态,从而大大地提高计算机的使用效率。综上所述,多道运行的特征是:

(1)多道,即计算机内存中同时存放几道相互独立的程序。

(2)宏观上并行,即同时进入系统的几道程序都处于运行过程中,在一段时间内它们先后开始了各自的运行,但都未运行完毕。

(3)微观上串行,因为系统中只有一个CPU,所以各道程序轮流使用CPU,交替执行。

在批处理系统中采用多道程序设计技术,就形成了多道批处理系统。在该系统中,要处理的许多作业放在外部存储器中,形成作业队列,等待运行。当需要调入作业时,由操作系统中的作业调度程序根据一定的调度原则,将满足资源条件且符合调度原则的几个作业调入内存,让它们交替运行。采取这种方式,在内存中总是同时存有几道程序,系统资源的利用率是比较高的。1.2.5分时系统

在批处理方式下,用户以脱机操作方式使用计算机,用户在提交作业以后就完全脱离了自己的作业,不管出现什么情况都不能加以干预,只有等该批作业处理结束后,用户才能拿到计算结果。根据结果再作下一步处理,若有错,还得重复上述过程。尽管计算机效率高,但是却给用户使用计算机带来麻烦。

人们十分留恋手工操作阶段的联机工作方式。那时,用户独占机器,并且直接控制程序的运行,可以随时了解程序运行情况。但是,这种工作方式的机器效率极低。那么,是否可以找到一个既能保证机器效率,又能方便用户使用的方法呢?20世纪60年代中期,计算机技术和软件技术的发展实现了这种可能。由于主机速度的不断提高和采用了分时技术,一台计算机可同时为多个终端用户服务,而每个用户可在自己的终端设备上联机使用计算机,就好像自己独占机器一样。采用分时技术可以使一台计算机同时为多个联机终端用户使用,提供联机操作和较快的响应时间,这种处理方式称为分时处理。采用分时技术的系统称为分时系统。在这样的系统中,一台计算机和许多终端设备连接。每个用户可以通过系统发出各种控制命令,请求完成某项工作,而系统则分析从终端发来的命令,完成用户提出的要求,输出一些必要的信息,如给出提示符,报告运行情况和操作结果。用户根据系统给出的信息,向系统提出下一步请求。重复上述交互会话过程,直到用户完成预计的全部工作为止。1.2.6实时系统

20世纪60年代中期计算机进入第三代,计算机的性能和可靠性有了很大的提高,造价亦大幅下降,计算机应用越来越广泛。计算机用于工业过程控制、军事实时控制等,形成了各种实时系统。

实时处理是以快速响应和可预测为特征的。“实时”的含义是指计算机在规定的时间内做出最快的反应。根据被控对象的要求,其响应时间要求在秒级、毫秒级甚至微秒级或

更小。

20世纪60年代中期至70年代中期,出现了一些通用系统,这样的系统可同时支持批量处理、分时处理、实时处理三者或其中的二者,这就形成了通用操作系统。1.2.7操作系统的进一步发展

随着大规模集成电路工艺技术的飞速发展,以及微处理器的出现和发展,计算机有了更大的发展和普及,操作系统也有了进一步的发展,例如,个人计算机上的操作系统、嵌入式操作系统、网络操作系统、分布式操作系统等。通过上一节的讨论,我们已经知道,随着计算机技术和软件技术的发展,已形成了各种类型的操作系统,以满足不同的应用要求。根据使用环境和对计算任务的处理方式不同,操作系统可分为以下几种类型:

(1)批处理操作系统;

(2)分时操作系统;

(3)实时操作系统;

(4)个人计算机操作系统;

(5)网络操作系统;

(6)分布式操作系统。1.3操作系统的类型1.3.1批处理操作系统

批处理操作系统把用户提交的作业成批送入计算机,然后由作业调度程序自动选择作业运行。这样能缩短作业之间的交接时间,减少处理机的空闲等待时间,从而提高系统的效率。批处理系统的主要特征是:

(1)多道性。在内存中可同时驻留多道程序,并允许它们并发执行,从而有效地提高了资源的利用率和系统吞吐量。

(2)无序性。多个作业完成的先后顺序与它们进入内存的顺序之间并无严格的对应关系,即先进入内存的作业可能较后甚至最后完成,而后进入内存的作业又可能先完成。

(3)调度性。作业从提交给系统开始直至完成,需要经过作业调度和进程调度。

多道批处理系统的优点是,由于在内存中装入了多道程序,使它们共享资源,保持资源处于忙碌状态,因此不但提高了系统吞吐量,而且使各种资源得以充分利用。其缺点是无交互性,用户一旦把作业提交给系统后直至作业完成,用户都不能与自己的作业进行交互,而且作业周转时间长,用户使用不方便。1.3.2分时操作系统

分时系统一般采用时间片轮转的方式使一台计算机为多个终端用户服务,对每个用户能保证足够快的响应时间,并提供交互会话的能力。

分时系统的主要特征是:

(1)多路性。允许在一台主机上同时连接多台终端,系统按分时原则为每一个用户服务。宏观上是多个用户同时工作,共享系统资源;而微观上则是每个用户作业轮流运行一个时间片。

(2)独立性。每个用户各占一个终端,彼此独立操作,互不干扰,让用户感觉好像独占主机一样。

(3)及时性。用户的请求能在很短时间内获得响应,此时间间隔是以人们所能接受的等待时间来确定的。

(4)交互性。用户与计算机之间进行“会话”,用户从终端输入命令,提出计算要求,系统收到命令后分析用户的要求并完成之,然后把运算结果通过屏幕或打印机告诉用户,用户可以根据运算结果提出下一步要求,直到全部工作完成。1.3.3实时操作系统

实时系统主要是随着计算机应用于实时控制和实时信息处理而发展起来的。实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。实时系统的主要特征是:

(1)系统对外部实时信号必须及时响应,响应的时间间隔要足以控制发出实时信号的那个环境。

(2)实时系统要求有高可靠性和安全性,系统的效率则是放在第二位的。

(3)系统的整体性强。实时系统要求所管理的联机设备和资源,必须按一定的时间关系和逻辑关系协调工作。

(4)实时系统没有分时系统那样强的交互会话功能,通常不允许用户通过实时终端设备去编写新的程序和修改已有的程序。1.3.4个人计算机操作系统

个人计算机操作系统是一个联机交互式的单用户操作系统。系统在一段时间内仅为一个用户服务。由于一个用户独占计算机系统的资源,使得操作系统中的处理机管理和存储管理变得比较简单,而设备管理和文件系统仍是十分重要的,且文件系统功能应相当丰富,因为它是直接为用户使用的。这类操作系统提供的用户界面与分时系统十分类似,且有交互会话功能,提供键盘命令。方便、友好的界面在这类操作系统中是至关重要的。1.3.5网络操作系统

计算机网络是通过通信设施将物理上分散的具有自治功能的多个计算机系统互联起来的,实现信息交换、资源共享的系统。

网络操作系统的主要特征是:

(1)计算机网络是一个互联的计算机系统的群体。

(2)这些计算机是自治的,每台计算机都有自己的操作系统,各自独立工作。它们在网络协议控制下协调工作。

(3)系统互联要通过通信设施来实现。

(4)系统通过通信设施执行信息交换、资源共享、互操作和协作处理,实现多种应用要求。1.3.6分布式操作系统

粗看起来,分布式操作系统与计算机网络系统没有多大区别。分布式操作系统也可以定义为通过通信网络将物理上分布的具有自治功能的数据处理系统或计算机系统互联起来,实现信息交换和资源共享,协作完成任务。分布式操作系统的主要特征是:

(1)系统内包含有多个物理资源和逻辑资源,它们可以动态地分配给各个任务。

(2)所有资源都必须高度自治而相互配合地工作,它们之间不存在层次控制或主从控制的关系。

(3)所有处理部件是地理分布的,并且部件之间的进程通信是有双边协议的消息通信。

(4)系统内有一个全局操作系统,采用分布式控制的办法,负责全系统的资源管理和运行控制。

(5)系统对用户提供一个透明的、一体化的用户界面。

分布式系统具有高可靠性、可用性和可扩展性,具有容错能力,能对系统内的资源进行动态分配和动态负荷平衡,所以能使系统资源达到最佳的共享效果。1.4.1处理机管理

计算机系统中最重要的资源是中央处理器,没有它,任何计算都不可能运行。在单道程序或单用户的情况下,处理机为一个作业或一个用户所独占,对处理机的管理十分简单。但在多道程序或多用户的情况下,要组织多个作业同时运行,就要解决对处理机分配调度策略、分配实施和资源回收等问题。这就是处理机的管理功能。1.4操作系统的功能1.4.2存储管理

存储管理的主要工作是对存储器进行分配、保护、扩充和管理。

(1)内存分配。在内存中除了操作系统和其他系统软件外,还有一个或多个用户程序。如何分配内存,以保证系统及各用户程序的存储区互不冲突,这就是内存分配问题。

(2)存储保护。系统中有多个程序在运行,如何保证一道程序在执行过程中不会有意或无意地破坏另一道程序?如何保证用户程序不会破坏系统程序?这就是存储保护问题。

(3)内存扩充。当用户作业所需要的内存容量超过计算机系统所提供的内存容量时,如何把内部存储器和外部存储器结合起来管理,为用户提供一个容量比实际容量大得多的虚拟存储器,让用户使用这个虚拟存储器就和使用内存一样方便,这就是内存扩充所要完成的任务。1.4.3设备管理

计算机外设的管理是操作系统中最庞杂、琐碎的部分。设备管理应具有下述功能:

(1)设备分配。根据一定的设备分配原则对设备进行分配。为了使设备与主机并行工作,常采用缓冲技术和虚拟技术。

(2)设备传输控制。实现物理的输入/输出操作,即启动设备、中断处理、结束处理等。

(3)设备独立性。输入/输出设备种类很多,使用方法各不相同。设备管理应为用户提供一个良好的界面,而不必去涉及具体的设备特性,以使用户能方便、灵活地使用这些

设备。1.4.4文件管理

处理机管理、存储管理及设备管理三种功能都是针对计算机的硬件资源的管理,文件管理则是对系统的软件资源的管理。

我们把程序和数据统称为信息或文件。一个文件在暂时不用时,就被放到外部存储器上保存起来。这样,外存上保存了大量的文件。对这些文件如不能很好地管理,就会引起混乱,甚至使文件遭到破坏。这就是文件管理需要解决的问题。信息的共享、保密和保护,也是文件管理所要解决的。如果系统允许多个用户协同工作,那么就应该允许用户共享信息文件。但这种共享应该是受控制的,应该有授权和保密机制。还要有一定的保护机制以免文件被非授权用户调用和修改,即使在意外情况下,如系统失效、用户对文件使用不当,也应能尽量保护信息免遭破坏。1.计算机系统由哪几部分组成?

2.什么是操作系统?操作系统的宗旨是什么?

3.操作系统怎样提高系统的效率?

4.批处理系统是怎样实现计算机操作自动化的?

5.推动批处理系统形成和发展的主要动力是什么?

6.多道程序设计技术的特点是什么?习题

7.为什么引入多道程序设计技术可以提高系统资源的利用率?

8.请简述批处理系统的优缺点。

9.推动分时系统形成和发展的主要动力是什么?

10.分时系统的主要特点是什么?

11.试对分时系统和实时系统进行比较。

12.从资源管理的角度来看,操作系统的基本功能可以分为哪几部分?2.1硬件环境2.2操作系统的逻辑结构2.3用户与操作系统的接口习题2.1.1存储器

存储器是计算机系统中的记忆设备,用来存放程序和数据。目前,构成存储器的存储介质主要采用半导体器件和磁性材料。对于存储器的要求是容量大、速度快、成本低,但是在一个存储器中要求同时兼顾这三方面是比较困难的。为了解决这方面的矛盾,目前在计算机系统中,通常采用多级存储器体系结构,即高速缓冲存储器、主存储器和外存储器,如图2-1所示。CPU能直接访问的存储器称为内存储器,它包括高速缓冲存储器和主存储器。CPU不能直接访问外存储器,外存储器的信息必须调入内存储器后才能由CPU进行

处理。2.1硬件环境图2-1存储系统的分级结构

1.高速缓冲存储器

它是位于CPU与主存储器之间的一种容量较小但速度很高的存储器。一般来说,CPU的速度远高于主存储器,当CPU直接从主存储器中存取数据时要等待一定的时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据则可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。

Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),一般L1Cache主要集成在CPU内部,而L2Cache集成在主板或是CPU上。

2.主存储器

主存储器简称主存,是计算机系统中的主要存储器,用来存放计算机运行期间的大量程序和数据。一个要执行的程序必须装入主存储器,中央处理器可直接访问主存储器,因而任何程序和数据必须被装入主存储器之后中央处理器才能对它们进行操作。

主存储器以“字节”为单位进行编址,若干字节组成一个“字”。

中央处理器可以按地址读出主存储器中一个字节或一个字的内容,读出的内容可以存放在中央处理器设置的内部寄存器(例如指令寄存器、通用寄存器和各种控制寄存器)中,也可把内部寄存器的内容存储到指定地址的主存空间中。

3.外存储器

外存储器简称外存,它是大容量的辅助存储器。目前主要使用磁盘存储器、磁带存储器和光盘存储器。各种外围设备只能与主存储器交换信息,在辅助存储器中的信息只有被读到主存储器之后,才能供中央处理器访问。大多数计算机系统把辅助存储器作为主存储器的扩展,用来保存大量的程序和数据。磁盘可被随机访问,用来存放常用的信息。磁带主要用于备份,存放不常用的信息以及作为系统间信息交换的媒介。为什么设置辅助存储器呢?主要从以下两个方面考虑:

(1)由于主存储器容量的限制,主存不足以存储所有需要的程序和数据;

(2)主存储器不是一种永久性的存储设备,当电源被切断时主存储器中的信息就会消失。

辅助存储器的优点是容量大且能永久地保存信息,缺点是不能被中央处理器直接访问。如果要使用辅助存储器中的信息,应该先把信息传送到主存储器中,然后,中央处理器才能对信息进行操作。2.1.2处理机的态

在计算机系统中,中央处理器会在系统程序和用户程序之间切换,因此中央处理器有两种工作状态:系统态和用户态。

系统态又称核心态或管态,是操作系统的管理程序执行时机器所处的状态。它具有较高的特权,能执行一切硬件指令,访问所有寄存器和内存储区。用户态又称常态或目态,是用户程序执行时机器所处的状态。这是具有较低特权的执行状态,只能执行规定的指令,访问指定的寄存器和内存储区。

计算机系统都有自己的指令系统,在多道程序设计系统中,指令系统分为“特权指令”与“非特权指令”。特权指令仅能由操作系统使用,如设置时钟、清内存等为特权指令;其他指令为非特权指令,用户只能使用非特权指令。当中央处理器处于管态时可执行包括特权指令在内的一切机器指令,当中央处理器处于目态时则不能执行特权指令。所以,操作系统程序占用中央处理器时,应让中央处理器在管态下工作,而用户程序占用中央处理器时,应让中央处理器在目态下工作。如果中央处理器在目态下工作,但却取到了一条特权指令,此时中央处理器将拒绝执行该指令,并形成一个“非法操作”事件。中断装置识别到该事件后,转交给操作系统去处理,由操作系统通知用户:“程序中有非法指令”,必须修改。当系统启动时,硬件装置将中央处理器的初始状态设为管态,然后装入操作系统程序,如果操作系统选择了用户程序占用处理器,则把管态转换成目态。如果中断装置发现了一个事件,则又将其置为管态,让操作系统去处理出现的事件。所以,总能保证操作系统在管态下工作,操作系统退出执行时,让用户程序在目态执行。2.1.3中断技术

计算机系统由硬件和软件两大部分组成。硬件是软件执行的基础,硬件具有中央处理器与外围设备并行工作的能力,各个外围设备也可同时工作。操作系统利用硬件的这种功能,采用多道程序设计技术,允许多用户并行工作。在硬件的中断装置配合下,操作系统能正确地控制各个程序的执行。

1.中断

中断是计算机系统结构的一个重要组成部分。在中断机制中的硬件部分(中断装置)的作用就是在CPU每执行完一条指令后,判断是否有中断事件发生,如果没有事件发生,CPU继续执行;若有事件发生,中断装置中断原先占用CPU的程序的执行,把被中断程序的断点保存起来,让操作系统的处理服务程序占用CPU对事件进行处理,处理完后,再让被中断的程序继续占用CPU执行下去。

2.中断的类型

从中断事件的性质出发,中断可以分为两大类:

(1)强迫性中断事件:包括硬件故障中断,程序性中断,外部中断和输入输出中断等。

(2)自愿性中断事件:是由正在运行的进程执行一条访管指令用以请求系统调用而引起的中断,这种中断也称为“访管中断”。

3.中断的响应

中央处理器每执行一条指令后,硬件的中断装置立即检查有无中断事件发生,若有中断事件发生,则暂停现行进程的执行,而让操作系统的中断处理程序占用处理器,这一过程称为“中断响应”。

中断响应过程中,中断装置要做以下三项工作:

(1)是否有中断事件发生;

(2)若有中断发生,则保护断点信息;

(3)启动操作系统的中断处理程序工作。

4.中断处理

操作系统的中断处理程序对中断事件进行处理时,大致要做三方面的工作:

1)保护被中断进程的现场信息

处理器的运行现场就是指处理机在执行程序过程中任意一个时刻的状态信息的集合。

处理器运行现场包括的内容有:指令计数器(程序计数器),程序状态寄存器,通用寄存器,特殊控制寄存器。

进入中断处理时首先把被中断程序的断点(当前的指令地址)等保存起来,然后让操作系统的处理程序占用处理器。操作系统在处理事件之前,把被中断程序在处理器的各个寄存器中设置的状态保存起来,在事件处理结束后,选中某个程序占用处理器时再把被保存的该程序的状态恢复到各寄存器中,同时把该程序的返回地址(原断点或新的启动点)装入指令地址计数器中。

2)分析中断原因

根据旧的程序状态字(PSW)的中断码可知发生该中断的具体原因。

3)处理发生的中断事件

请求系统创建相应的处理进程进入就绪队列。

5.中断屏蔽

中断屏蔽技术是在一个中断处理没有结束之前不响应其他中断事件,或者只响应比当前级别高的中断事件。

如果当中断装置检查到有中断事件后,便去查看PSW中的中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应。自愿性中断是不能屏蔽的。

6.中断机制在操作系统中的作用

中断机制最大的优点是方便处理随机事件。无论在什么情况下,只要有随机事件发生,操作系统都可以通过中断机制中断当前程序的运行,转而执行处理该事件的服务程序。

因此,中断给操作系统设计带来了很多方便之处:

(1)中断使得实时处理许多紧急事件成为可能。

(2)中断可以实现处理器与外设的并行,提高处理器的执行效率。

(3)中断可以实现多道程序间的切换。

(4)中断还可以让操作系统能够为用户程序提供一系列的系统调用,作为系统服务的支撑平台,简化操作系统和应用程序的开发设计过程。2.2.1结构设计目标

为提高计算机系统资源的利用率和方便用户使用,在计算机系统中必须配备操作系统。

操作系统是一个大型的软件,规模庞大、结构复杂。操作系统必须具有一个清晰、正确的逻辑结构。操作系统的结构设计目标主要考虑正确性、高效性、可维护性、可移植性等要求。

2.2操作系统的逻辑结构

1.正确性

能引起操作系统工作不正确的因素很多,其中最主要的是用户作业的类型以及作业到达系统的时间是随机的。系统中发生的各种事件都是随机的,多个随机到达的作业都要占用中央处理器和使用计算机系统的其他资源,操作系统必须充分估计和把握各种不确定的情况。一个结构良好的操作系统不仅能保证操作系统的正确性而且易于验证其正确性。

2.高效性

操作系统自身的开销,例如占用的主存空间和辅助存储空间、占用的处理器时间等,对计算机系统的效率有很大影响。减少操作系统的开销就能提高计算机系统的效率,尤其对常驻主存储器的核心程序部分更要精心设计。核心程序处于频繁活动状态,是影响计算机系统效率的关键所在,设计核心程序应遵循少而精的原则,使处理既有效又灵活。

3.维护性

一个操作系统交付使用后,有时需对功能进行增加、删除,如发现错误时需要进行修改,为了提高效率要对算法进行调整等。因此,在结构设计时应注意到这些问题,使操作系统容易维护。

4.移植性

所谓移植性,是指能否方便地把操作系统移植到一个新的硬件环境中。为了能方便地移植,在结构设计时,应尽量减少与硬件直接有关的程序量且将其独立封装。这样,在移植时,只需修改这一部分程序,其他部分不必修改。如果能采用国际通用的标准C语言或C++语言编写操作系统程序,那么,只要经过重新编译和设置必要的参数,就可使其适应新的硬件环境。2.2.2层次结构

操作系统是负责管理计算机系统资源的最基本的系统软件,用户是通过调用操作系统的功能来使用计算机的。如何设计和构造这样一个繁琐而又有相当规模的软件呢?通常采用模块分层方法,在硬件基础上分层次构造操作系统的各个部分。

由于操作系统十分庞大,清晰的结构有利于开发和调试。层次结构是一种重要的设计技术,正确性容易得到保证,也提高了可维护性和可移植性。层次结构法的最大特点是把整体问题局部化。一个大型复杂的操作系统被分解成若干单向依赖的层次,由各层的正确性来保证整个操作系统的正确性。采用层次结构不仅结构清晰,而且便于调试,有利于功能的增加、删减和修改。

从资源管理的观点看,操作系统的功能分成四大部分,即处理器管理、存储管理、文件管理、设备管理。

这四大部分相互配合,协调工作,实现对计算机系统的资源管理和控制程序的执行,为用户提供方便的使用接口和良好的运行环境。按照依赖关系,操作系统的一种层次结构如图2-2所示。图2-2操作系统层次结构处理器管理要对中断事件进行处理,要为各程序合理地分配中央处理器的工作时间。它是操作系统的核心程序,是与硬件直接有关的部分。因而,把它放在最内层。存储管理、设备管理和文件管理依次存放在外层。为避免错综复杂的联系可能造成的差错,可规定各层次的依赖关系,图2-2的层次结构是一种外层依赖内层的关系。层次结构的主要优点是有利于系统的设计和调试,实现各层次的功能时都可利用内层提供的功能,不必知道内层的功能是怎样实现的,而只需知道这些功能可做什么。调试工作可从最内层开始,最内层只使用硬件提供的功能,调试时无需考虑其他任何部分。一旦最内层调试通过,则第二层可在最内层提供的功能上执行,依次类推,直到完成各层功能的调试。若在调试某层的功能时发现错误,可断定错误位于当前层,因为内层的各层次已通过调试了。层次结构的主要困难在于层次的划分和安排,由于每一层只能利用位于它内层提供的功能,因而需要仔细地规划每一层的功能,以保证操作系统工作过程中不出现双向依赖关系。如果存在双向依赖关系,则很可能出现无休止的循环,使系统瘫痪。2.3.1命令接口

按照对作业控制方式的不同,命令接口分为脱机命令接口和联机命令接口。通常在批处理系统中,用户以脱机方式使用计算机;而在分时系统和具有交互能力的系统中,使用联机命令接口。

脱机命令接口又称批处理命令接口,通过作业控制语言(JCL,JobControlLanguage)实现,即由一组作业控制命令(或语句)组成。脱机用户不能直接干预作业的运行。用户上机前必须准备好用作业控制语言书写的作业申请书,包括程序和数据等。用户对作业的控制要求以作业控制说明书的方式提交给系统,系统根据作业说明书来分配作业所需资源并控制作业的执行。2.3用户与操作系统的接口联机命令接口又称交互式命令接口,即利用操作系统提供的操作命令来实现人与计算机之间的信息交流。它由一组操作命令组成,这组命令由操作系统的命令解释程序解释执行。不同的操作系统提供不同的操作命令方式,通常采用命令行接口(CLI,CommandLineInterpreter,命令行解释程序)方式和窗口图形接口(GUI,GraphicalUserInterfaces,图形用户接口)方式。

1.作业控制语言

一个用户作业进入计算机系统后,除作业程序执行时要调用系统功能外,用户往往还要告诉系统控制作业执行的步骤。例如,依次做编译、装配、运行等。系统提供了让用户给出作业执行步骤的手段,即作业控制语言和操作控制命令。

用户可以用作业控制语言写出控制作业执行步骤的“作业说明书”,这是一种非交互式的控制方式;也可以从键盘输入操作控制命令或从“菜单”中选择命令来指出作业的执行步骤,这是一种交互式的控制方式。一般在批处理系统中的脱机工作方式下,系统提供作业控制语言。用户对作业的控制意图要利用作业控制语言书写一份作业操作说明书,包括作业申请表、操作说明书、程序和数据。在上机前,用户向系统提出执行作业的请求,包括作业名、需用CPU时间、最迟完成时间、资源请求及使用何种编译程序等。作业说明书由一条条对作业处理的命令组成,如编辑命令、编译命令、连接命令、运行命令等。操作系统根据作业申请表来分配作业所需的资源并注册该作业,通过作业说明书对作业实施控制。

2.命令行方式

在联机方式下,用户通过命令行完成操作命令的提交。用户通过控制台或终端键入操作命令,向系统提出各种服务请求。用户每输入完一条命令,控制就转入命令解释程序,然后命令解释程序对键入的命令解释执行,完成指定的功能。之后,控制转回到控制台或终端,准备接收用户的下一条命令。如此反复,直到作业执行结束。所谓命令行方式,通常是指以一问一答的方式提交任务,即在操作系统的系统提示符下直接输入操作命令,每输入一条命令执行一个任务,通过命令控制计算机。

早期的操作系统都是以命令行方式与用户交互,用户通过命令行提交任务。典型的具有命令行工作界面的操作系统有DOS、UNIX、NetWare等。

3.窗口图形方式

在命令行方式下,用户与操作系统的交互要求用户记忆命令格式。窗口图形方式是指在系统提供的工作窗口中通过菜单命令或工具按钮完成命令的提交,从而完成与操作系统的交互,这种工作界面的最大特点是用户不必死记命令和语法,只需从窗口中选择操作命令即可。当前流行的Windows系列都是具有窗口图形工作界面的操作系统。窗口系统的图形元素及其状态主要包括以下几种。

1)窗口(window)

窗口是屏幕上的矩形区域。窗口中主要包括的图形元素一般有标题条(titlebar)、边框(border)、窗口角(corner)、系统菜单框(systemmenubox)、最大化/最小化按钮(maximize/minimize)、滚动条(scrollbar)等。

窗口的状态一般包括当前/非当前窗口(active/inactive),最大化/最小化/恢复原大小(restore),窗口的前后遮盖,焦点(focus)。

2)图标(icon)

图标是一个小图像(如32×32pixel或64×64pixel),通常供鼠标指针点击。通过不同的图标可以标识不同的对象,如可执行程序、最小化的窗口等。

鼠标指针(mousepointer):鼠标指针通常对应屏幕上的光标(cursor)。

光标在屏幕上只有一个,在不同屏幕位置(上下文)可以呈现不同形状,可以独立于鼠标来直接操纵光标。鼠标点击主要包括左键/右键/中键(left/right/middlebutton),单击(click)/双击(double-click),拖曳(drag)/拖放(drag-and-drop)。

3)按钮(button)

当用鼠标点击按钮时将执行相应的功能,或提供单项或多项选择。

4)菜单(menu)

菜单是临时窗口,可分为菜单条(menubar)、弹出式菜单、下拉式菜单(上下文相关菜单)。

5)对话框(dialogbox)

对话框也是临时窗口,可以显示提示信息(message)或填写用户设置。系统提供的窗口图形方式一般有以下几个特点:

(1)利用图形元素表示功能,即将各种图形元素显示在屏幕上,用户可以通过操纵图形元素(如菜单、图标)来执行相应的功能。

(2)同屏多窗口与并发进程相对应,即屏幕上同时显示多个窗口;一个进程可以对应一个或多个窗口;窗口动态创建、改变、撤销。

(3)输入方式:可以通过鼠标指针点击(或其他定位设备)或键盘输入,通常是即时交互。

(4)一致的图形元素风格可方便用户学习和使用,如按钮、滚动条等。2.3.2程序接口

在源程序一级,用户使用程序设计语言描述算题任务的逻辑要求,例如,打开一个文件、读文件、写文件及请求主存空间等,这些要求的实现只有通过操作系统的功能程序才能完成。操作系统编制了许多不同功能的子程序,用户程序在执行中可以调用这些子程序。由操作系统提供的这些子程序称为子程序系统功能调用程序,或简称为“系统调用”。程序接口就是由一组系统调用命令组成的,是操作系统提供给程序设计人员的接口,供用户以程序方式进行操作,或通过API(ApplicationProgrammingInterface)函数调用系统提供的例行程序,请求操作系统提供服务。例如在DOS系统中提供中断服务功能,在Windows系统中提供WindowsAPI函数。系统调用是为了用户在程序中调用操作系统而提供的一些子功能。系统调用命令是为扩充机器指令、增强系统功能、方便用户使用而提供的。因此,在一些计算机系统中,把系统调用命令称为广义指令。广义指令与机器指令在性质上是不同的,机器指令是用硬件来实现的,而广义指令则是由操作系统提供的一个或多个子程序模块实现的。

系统调用提供了运行程序和操作系统之间的界面,一个操作系统提供的系统调用越多,系统的功能就越强,用户使用起来就越方便。

系统调用命令按其功能大致分为进程管理和控制、进程通信、外部设备的输入输出服务、文件管理和存储空间的管理等。

(1)进程控制,包括进程创建、进程执行、进程撤销、执行等待和执行优先级控制等。

(2)进程通信,用在进程之间传递消息或信号。

(3)设备管理,用来请求和释放有关设备、以及启动设备操作等。

(4)文件管理,包括打开文件、建立文件、读文件、写文件、关闭文件及删除文件等。

(5)存储管理,包括调查作业占据内存区的大小、获取作业占据内存区的始址等。为了能更清楚说明系统调用的实现,下面给出一个小例子:

在DOS操作系统中,系统调用主要功能包括:

(1)设备管理(如键盘、显示器、打印机、磁盘等的管理)。

(2)文件管理和目录操作。

(3)其他管理(如内存、时间、日期等的管理)。这些子程序给用户编程带来很大方便,用户不必了解有关的设备、电路、接口等方面的问题,只需直接调用即可。调用这些子程序的方法如下:

(1)功能号→AH,将系统功能号送到AH寄存器中。比如:将01送给AH,表示从键盘输入一个字符。

(2)入口参数→指定寄存器。

(3) INTDOS函数调用。用户只需给出以上三方面信息,DOS就可根据所给信息自动转入相关子程序执行。

下面给出一个修改系统日期的实例来进一步描述系统调用:

#include“stdio.h”

#include“dos.h”

main()

{

当程序运行后,用户输入DATE命令显示系统日期时,系统日期改为2008-10-20。

在Linux操作系统中,也同样提供了许多功能,我们将在第3章的实例中给出进程控制的系统调用,供大家参考。

通常情况下,当提到系统调用时,会引起和一般过程调用的混淆,那么系统调用和一般的过程调用存在什么区别呢?下面从以下几点进行简单的比较和说明。

1.系统调用是动态调用,而一般过程调用是静态调用

系统调用是动态调用,程序中不包含被调用代码,优点是:用户程序长度缩短;当操作系统升级时,调用方也不必改变用户程序。

系统调用方式的调用地址和返回地址都是不固定的,系统调用指令中不包含调用地址,只包含功能号,是按功能号(在可执行目标程序中)调用的。在操作系统内部,由系统调用处理程序通过系统调用分支表(操作系统的一个数据结构)将功能号转换为相应的指令地址。

系统调用返回指令中不包括返回地址,通过栈保存和弹出返回地址。系统调用返回地址不固定,因为用户程序在不同的地方调用操作系统。

2.运行的系统状态不同

“系统调用”程序执行时往往要使用“启动I/O”等特权指令,所以,“系统调用”是在管态下执行的程序。由于用户程序是在目态下执行的,因此现在有这样一个问题:如果用户程序想要启动外设,或者要完成在目态下无法完成的工作时,怎么办?要实现这一问题必须有三个条件:

(1)需要有一条指令,使处理机能从目态进入管态,并向操作系统提出要其代为完成的工作;

(2)在管态下由操作系统完成用户程序的请求;

(3)操作系统完成所做工作后能返回到用户程序,即从管态又回到原来的目态。

解决这个问题要靠访管指令。访管指令本身不是特权指令,其基本功能是“自愿进管”,而引起访管中断。

访管指令SVC,指令格式如图2-3所示。图2-3系统调用过程图中,SVC为访管指令的操作码,地址码N占8位,表示访管中断的中断码。8位中断码可以表示0~255共256种不同的二进制代码,以每种代码作为一个功能号,它对应一个系统向用户提供的子功能,这些子功能就是系统功能调用。

3.进入方式不同

由于用户程序使用系统调用后要进入系统空间,因此需要调用一个软中断,而普通过程在被调用时没有这个过程。

4.嵌套调用

对系统调用,一般不允许在同一个进程中发生嵌套或递归。用户使用系统调用时,产生一条相应的指令,处理机在执行到该指令时发生相应的中断,并发出有关信号给该处理机构。该处理机构在收到了处理机发来的信号后,启动相关的处理程序完成。系统调用执行过程如图2-4所示。图2-4系统调用过程

(1)为执行系统调用命令做准备。其主要工作是把用户程序的“现场”保留起来,并把系统调用命令的编号等参数放入约定的存储单元。

(2)根据系统调用的编号,访问系统调用入口表,找到相应子程序的入口地址,然后转去执行。

(3)系统调用命令执行完成后的处理。这包括恢复“现场”,并把系统调用的返回参数或参数区首址放入指定的通用寄存器中,以供用户程序使用。1.什么是管态?什么是目态?

2.什么是中断?在操作系统中为何要引入中断?

3.中断的分类有哪些?

4.什么是中断响应?

5.用户与操作系统的接口是什么?

6.什么是系统调用?

7.简述系统调用的执行过程。

8.简述系统调用和一般过程调用的区别。习题3.1进程的引入3.2进程的描述3.3进程控制3.4进程控制的实现举例习题3.1.1程序的顺序执行

1.程序顺序执行

一个程序通常由若干个程序段组成,它们必须按照某种先后次序来执行,仅当前一操作执行完后,才能执行后续操作,这类执行过程就是程序的顺序执行。例如,在处理一个作业时,总是先输入用户的程序和数据,然后进行计算,最后将所得的结果打印出来。若用结点代表各个程序段的操作,其中I代表输入操作,C代表计算操作,P代表打印操作,则上述程序段的执行过程如图3-1所示。对一个作业的输入、计算和打印三个操作,必须顺序执行。3.1进 程 的 引 入图3-1程序的顺序执行

2.程序顺序执行的特征

1)顺序性

当顺序程序在处理机上执行时,处理机的操作是严格按照程序所规定的顺序执行的,即只有前一操作结束后,才能执行后续操作。

2)封闭性

程序是在封闭的环境下运行的。即程序在运行时,它独占全机资源,因而机内各资源的状态只有本程序才能改变。程序一旦开始运行,其执行结果不受外界因素的影响。

3)可再现性

只要程序执行时的环境和初始条件相同,当程序多次重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。3.1.2程序的并发执行

1.程序并发执行

如图3-1所示的输入操作、计算操作和打印操作是一个作业的三个处理过程,逻辑上要求顺序执行。但实际上,实现上述三个步骤的输入机、中央处理机和打印机这三个物理部件是可以同时操作的。由于作业本身的特点,这三个作业步骤只能顺序执行。当有一批作业进行处理时,情况就不同了。输入了作业1的程序和数据后,在对该作业进行计算的同时,可输入作业2的程序和数据,即作业1的计算操作和作业2的输入操作同时进行。如图3-2所示,说明了系统对一批作业进行处理时,各程序段执行的先后顺序。图3-2程序的并发执行从图3-2中可以看出,有的程序执行是有先后顺序的,如:I1先于I2和C1,C1先于P1和C2等。有的程序段可以并发执行,如:I2和C1,C2和P1。所以,对于并发执行的程序来说,它有时处于执行状态,但由于并发程序之间的相互制约关系,有时因需要的某种资源得不到满足,处于暂停状态。因此,并发程序执行时就是像这样停停走走向前推进的。为了能正确反映程序执行时的活动规律和状态变化,要引入一个新的概念——进程,以便从变化的角度动态地描述程序的执行。

2.程序并发执行时的特征

1)间断性

程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,致使在并发程序之间形成了相互制约的关系。例如,图3-2所示的I、C和P是三个相互合作的程序,当计算程序完成Ci-1的计算后,如果输入程序I但计算程序尚未完成Ii的处理,则计算程序就无法进行Ci的处理,致使计算程序暂停运行。又如,打印程序完成了Pi的打印后,若计算程序尚未完成对Ci-1的计算,则打印程序就无法对Ci-1的处理结果进行打印。一旦使某程序暂停的因素消失,计算程序便可恢复执行对Ci进行处理。简言之,相互制约将导致并发程序具有“执行-暂停执行-执行”这种间断性的活动规律。

2)失去封闭性

程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。这样,某程序在执行时,必然会受到其他程序的影响。例如,当处理机资源被其他程序占有时,某程序必须等待。

3)不可再现性

程序在并发执行时,由于失去了封闭性,也将导致失去其可再现性。现以两个并发的循环程序共用一个公共变量N来说明这个问题。设程序A每执行一次都要做N=N+1操作,程序B每隔一定时间打印出N值,并将它重新置为0,变量N的初值为N0。这两个程序如图3-3所示。图3-3两个程序并发执行实例由于程序A和程序B的执行都以各自独立的速度向前推进,故程序A与程序B之间对变量N的操作会有如下三种可能:

(1)程序A的N=N+1操作,在程序B的PRINT(N)和N=0操作之前,如图3-4所示。

这种情况下打印机打印出来的N值为“N0+1”。

(2)程序A的N=N+1操作,在程序B的PRINT(N)和N = 0操作之间,如图3-5所示。

这种情况下打印机打印出来的N值为“N0”。

(3)程序A的N=N+1操作,在程序B的PRINT(N)和N=0操作之后,如图3-6所示。图3-4第一种执行情况图3-6第三种执行情况这种情况下打印机打印出来的N值为“N0”。

之所以出现上述错误,是因为它们公用了一个公共变量N,而又没有采取恰当的措施。这个例子说明并发程序的执行结果与执行速度有关,也就是说,并发程序已丧失了顺序程序所具有的封闭性和可再现性的特征。3.2.1进程的定义

进程的概念是在20世纪60年代初期,首先由美国麻省理工学院的MULTICS和IBM公司的CTSS/360系统引入的,其后又有许多人从不同的角度给进程下过各种定义。其中较能反映进程实质的定义有:

(1)进程是程序的一次执行。

(2)进程可定义为一个数据结构及能在其上进行操作的一个程序。

3.2进 程 的 描 述

(3)进程是一个程序与其数据一起通过处理机的执行所发生的活动。

(4)进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。

据此,可以把进程定义为:可并发执行的程序在处理机上的执行过程。

显然,进程和程序是两个截然不同的概念。程序是指令的有序集合,本身没有任何运行的含义。而进程是程序在处理机上的一次执行过程,是一个动态的概念,进程是有生命期的,能够动态地产生和消亡。其动态性还表现为:“进程由创建而产生,由调度而执行,因得不到资源而暂停,由撤销而消亡”。程序和进程是既有区别又有联系的两个概念,它们的区别如下:

(1)程序是一个静态的概念,而进程是一个动态的概念。

(2)程序的存在是永久的,而进程是有生命期的。

(3)进程是一个能独立运行的基本单位,是系统资源分配和调度的基本单位。

(4)进程与程序之间不是一一对应的,即同一程序同时运行于若干不同的数据集合上,属于若干个不同的进程。3.2.2进程的基本状态

前面已经介绍过,进程并不是一口气运行到底的,它与并发执行的其他进程的执行是相互制约的。进程有时处于运行状态,有时又由于某种原因而暂停,等到使它暂停的原因消失后,它又准备运行了,所以进程在运行中不断地改变其运行状态。一个进程在活动期间至少具备以下三种状态:就绪状态:当进程已经获得除处理机以外的所有资源后,一旦获得CPU,就可以立即运行,这时的进程状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把这些进程排成一个或多个队列,称为就绪队列。

运行状态:进程已获得处理机,它的程序正在执行,这时的进程状态称为运行状态。在单处理机系统中,只能有一个进程处于运行状态。只有在多处理机系统,才存在运行队列。等待状态:进程因发生某事件(如请求I/O等)而暂时停止运行,即使给它CPU也无法运行,这时的进程状态称为等待状态,也称为阻塞状态。把处于等待状态的进程排成一个队列,称为等待队列。有时也按阻塞的原因不同排成多个队列。

进程并非固定地处于某个状态,它将随着程序的执行和外界条件的变化而发生变化,可以用进程状态变迁图(如图3-7所示)来说明系统中进程的状态和这些状态之间变迁的原因。在图3-7中,以结点表示进程的状态,以箭头表示状态的变化。图3-7进程状态变迁图从图3-7中可以看出,处于就绪状态的进程,当进程调度程序为它分配了处理机后,该进程由就绪状态变为运行状态;正在运行的进程因发生某事件而无法执行,则进程将由运行状态变为阻塞状态;处于阻塞状态的进程,若其等待的事件已经发生,则由阻塞状态变为就绪状态;正在执行的进程,如因时间片用完而被暂停执行,该进程由执行状态转为就绪状态。3.2.3进程的描述

当程序并发执行时,由于并发程序之间的相互制约关系,造成程序在执行过程中受阻而暂停,如果系统无法保留该程序的现场,也就意味着无法恢复该程序的现场以继续执行。为了使程序在多道程序设计环境下能并发执行,并能对并发执行的程序加以控制和描述,专门配置了称为“进程控制块”的数据结构。

1.进程控制块

为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB,ProcessControlBlock)。所谓系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管理。进程执行完成时,由系统收回其PCB,该进程便消亡了。

对于不同的操作系统来说,进程PCB所包含的内容会有些不同,但通常会包括表3-1所示的内容。表3-1进程PCB结构对PCB所包含的内容具体说明如下:

(1)进程标识符(NAME):每个进程都必须有唯一的标识符,以区别于系统内的其他进程。在进程创建时,由创建者给出进程的标识符。

(2)进程当前状态(STATUS):说明本进程目前处于何种状态,即运行、就绪或等待,以作为进程调度程序分配处理机的依据。

(3)进程队列指针(NEXT):用于记录处于同一状态下的下一个PCB的地址,以此可以将同一状态的所有进程链接起来。

(4)总链指针(ALL-Q-NEXT):当系统中存在大量进程时,所有的进程根据自己的状态分别处于相应的队列中,这便于对进程实施调度控制。当进行某些管理功能,如执行创建新进程时,就感到系统具有所有进程的总链将是十分方便的。因为进程的标识符必须是唯一的,为了避免重名,必须先检查系统中已有的进程名,如果在各个不同状态的队列中进行查询是非常麻烦的,所以,通过提供一个总链指针来方便查询。PCB中的该项内容是存放总链队列中下一个PCB的地址。

(5)程序开始地址(START-ADDR):该进程的程序从此地址开始执行。

(6)进程优先级(PRIORITY):反映进程要求CPU的紧迫程度,优先级高的进程可以优先获得CPU。

(7)CPU现场保护(CPUSTATUS):当进程因某种原因释放处理机时,CPU现场信息被保存在PCB的该区域中,以便在进程重新获得处理机后继续执行。

(8)通信信息(COMMUNICATION-INFORMATION):记录该进程在执行过程中与别的进程所发生的信息交换情况。

(9)进程家族(PROCESS-FAMILY):有的系统允许进程创建子进程,从而形成一个进程家族树。在PCB中必须指明进程与家族的关系。

(10)占有资源清单(OWN-RESOURCE):列出进程所需资源及当前已分配资源清单。

2.进程的组成

从结构上讲,每个进程都是由程序、数据和一个进程控制块PCB组成的,如图3-8所示。进程的程序部分描述了进程所要完成的功能。数据集合是程序在执行时所需要的数据和工作区。这两部分是进程存在的基础。PCB是进程存在的标识。图3-8进程的组成3.2.4进程PCB的组织方式

在一个系统中,通常存在许多PCB。为能对它们实现有效的管理,应采用适当的方式将它们组织起来。目前常用的组织方式有链接方式和索引方式两种。

1.链接方式

把具有相同状态的PCB用其中的链接字链接成一个队列,这样,可形成就绪队列、若干个阻塞队列和空白队列等。对其中的就绪队列常按进程优先权的大小排列,把优先权高的进程的PCB排在队列前面。此外,也可根据阻塞原因的不同,把处于阻塞状态的进程的PCB排成等待I/O操作完成队列、等待分配内存队列。图3-9所示是一种链接队列的组织

方式。图3-9PCB链接队列示意图

2.索引方式

系统根据所有进程的状态,建立几张索引表。例如,就绪索引表、阻塞索引表等。并把各索引表在内存的首地址记录于内存中的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。按索引方式组织PCB,如图3-10所示。图3-10按索引方式组织PCB3.3.1进程创建

进程创建是由创建原语实现的。当需要进程时,就可以建立一个新进程。被创建的进程称为子进程,创建者称为父进程。

创建原语的主要功能是为被创建进程形成一个PCB,并填入相应的初始值,同时将PCB插入就绪队列,返回一个进程的标识号(PID)。该原语的实现过程如图3-11所示。3.3进程控制图3-11进程创建算法流程图3.3.2进程撤销

进程撤销是由撤销原语实现的。一个进程在完成其任务后,应予以撤销,以便及时释放所占有的各类资源。

撤销原语的主要功能是收回被撤销进程占用的所有资源,并撤销它的PCB,从总链队列中摘除它,然后转进程调度程序。该原语实现过程如图3-12所示。图3-12

进程撤销算法流程图3.3.3进程的阻塞与唤醒

阻塞原语的作用是将进程由执行状态转为阻塞状态,而唤醒原语的作用是将进程由阻塞状态转为就绪状态。

当一个进程所期待的某一事件尚未出现时,该进程调用阻塞原语将自己阻塞起来。阻塞原语在阻塞一个进程时,由于该进程正处于执行状态,应先中断处理机和保存该进程的CPU现场,然后将该进程插入到等待该事件的等待队列中,再从就绪队列中选择一个新的进程投入运行。该原语实现过程如图3-13所示。进程由运行状态转变为阻塞状态是由于进程必须等待某一事件的发生,因此处于等待状态的进程是绝对不可能叫醒自己的。当该进程期待的事件出现时,由发现者进程调用唤醒原语将阻塞的进程唤醒,使其进入就绪状态。发现者进程和被唤醒进程是合作的并发进程。唤醒原语的功能是:当进程等待的事件发生时,唤醒该进程。该原语实现过程如图3-14所示。图3-13进程阻塞算法流程图图3-14进程唤醒算法流程图

1.进程创建

Linux系统中,除初始化进程外,其他进程都是通过fork()系统调用建立的。使用fork()的进程为父进程,通过fork()创建的新进程为子进程。使用fork()系统调用后,对父进程返回子进程的进程号,对子进程返回零。3.4进程控制的实现举例利用fork()系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论