首页 > 资料专栏 > 经营 > 运营治理 > 信息技术 > 进程管理经典培训讲义(doc 75).rar

进程管理经典培训讲义(doc 75).rar

SLP129
V 实名认证
内容提供者
资料大小:136KB(压缩后)
文档格式:DOC(80页)
资料语言:中文版/英文版/日文版
解压密码:m448
更新时间:2017/2/19(发布于陕西)

类型:积分资料
积分:12分 (VIP无积分限制)
推荐:升级会员

   点此下载 ==>> 点击下载文档


“进程管理经典培训讲义(doc 75).rar”第1页图片 图片预览结束,如需查阅完整内容,请下载文档!
文本描述
进程管理

操作系统中最核心的概念是进程,进程是对正在运行的程序的一种抽象,是资源分配和独立运行的基本单位,操作系统的所有内容都是围绕进程展开的,操作系统的四大特征也是基于进程而形成的。所以操作系统的学习者和设计者都要尽早地理解进程。本章就来阐述有关进程的问题。

1 进程的概念
1.1 程序的并发执行
现在所有的计算机都能同时做几件事情。在我们使用计算机运行程序的时候,时常会一边听着光盘上的音乐,一边从网上下载着软件,一边还编辑着文本文件。在某一时段同时发生几件事的现象称为并发。我们知道,计算机为我们自动地做某事,实际上是CPU自动执行存放在内存中的程序,同时做几件事就是同时执行几道不同的程序。如果这几道程序同时在不同的CPU上执行,则称之为“并行”,如果它们分时地运行在同一个CPU上则称之为“并发”。在单CPU条件下同时运行几道程序,从宏观上看,这几道程序是同时向前推进,但从微观上观察则是由单CPU按照时间段轮流执行每个程序的一小段,使每个程序都运行到程序的开始与结束之间的某一处。从逻辑上讲,这几道程序都在运行,但从CPU的执行轨迹上观察,却是轮流地为每个程序执行一段时间,循环往复,直到所有程序依次完成。我们目前使用的计算机几乎都是单CPU的机器,但是都能为我们同时完成几件不同的工作,就是采用的CPU分时原理。因此,逻辑上的并行称为“并发”。

程序的并发执行是在多道程序环境下完成的,而在单道程序工作环境中,程序是顺序执行的。程序的这两种不同的执行方式,体现出不同的特性。

1. 程序的顺序执行及其特性
一个具有独立功能的程序独占CPU运行,直至得到最终结果的过程称为程序的顺序执行。例如,用户要求计算机完成一道程序的运行时,通常先输入用户的程序和数据,然后运行程序进行计算,最后将结果打印出来。假设系统中有2个程序,而每个程序都由三个程序段I、C、P组成,其中,I表示从输入机上读入程序的信息,C表示执行程序的计算过程,P表示在打印机上打印出程序的计算结果。在单道环境下,每一程序的这三个程序只能是一个接一个地顺序执行,也就是输入、计算和打印三者串行工作,并且前一个程序结束后,才能执行下一个程序。执行顺序如图1所示。

图1程序的顺序执行
由上述顺序程序的执行情况可以看出,程序的顺序执行具有如下特点:
① 顺序性。当顺序程序在CPU上执行时,CPU严格地顺序执行程序规定的动作,每个动作都必须在前一动作结束后才能开始。除了人为的干预造成机器暂时停顿外,前一动作的结束就意味着后一动作的开始。程序和计算机执行程序的活动严格一一对应。

② 独占资源。程序在执行过程中,独占全部资源,除了初始状态外,只有程序本身规定的动作才能改变这些资源的状态。

③ 结果无关性。程序的执行结果与其执行速度无关。也就是说,CPU在执行程序的两个动作之间如有停顿不会影响程序的执行结果,如果程序的初始条件不变,当重复执行时,一定能得到相同的结果。

上述特点概括起来就是程序的顺序性、封闭性和可再现性。所谓顺序性指的是程序的各部分能够严格地按程序所确定的逻辑次序顺序地执行。所谓封闭性指的是程序一旦开始执行,其计算结果就只取决于程序本身,除了人为改变机器运行状态或机器故障外,不受外界因素的影响。所谓可再现性是指当该程序重复执行时,必将获得相同的结果。这给程序的调试带来了很大的方便。

程序的并发执行及其特性
现代计算机在物理设计和逻辑设计中采用并行操作技术,使多种硬件设备能并行工作。硬件的并行操作技术为程序的并发执行提供了物质基础。在多道程序操作系统支持下,不但在多机系统中它可同时执行多个不同的程序,即使是在单机系统中,从逻辑上或宏观上看,多个程序也能并发执行。

对于任何一个程序i,其输入操作Ii、计算操作Ci、打印操作Pi这三者必须顺序执行,但对n个程序来说,则有可能并发执行。例如:输入程序在完成第i个程序的输入操作后,计算程序在对第i个程序进行计算的同时,可再启动输入程序,进行第i+1个程序的输入操作,这就使得第i+1个程序的输入操作和第i个程序的计算操作能并发执行。图2给出了输入、计算、打印程序对一批程序进行处理的执行顺序。在该例中I1先于Cl和I2,Cl先于Pl和C2,Pl先于P2,I2先于C2和I3,……。这说明有些操作必须在其它操作之后执行,另外有些操作却可以并行地执行。此外从图中可以看出:I2与Cl、I3与C2与P1、I4与C3与P2是重叠的。多道程序的并发执行大大地提高了系统的处理能力,改善了系统资源的利用效率。

图2程序的并发执行
程序的并发执行,是否还能保持顺序执行时的特性呢?下面我们通过例子来说明程序并发执行时的特性。

设有观察者和报告者并行工作。在一条单向行驶的公路上经常有卡车通过。观察者不断观察并对通过的卡车计数,报告者定时地将观察者的计数值打印出来,然后将计数器重新清“0”。此时我们可以写出如下程序,其中parbegin表示多个程序可以并发执行。

int n=0;void observer(void){while (1){

n=n+1;remainder of observer;}}
void reporter(void){while(TRUE){
…print(n);n=0;remainder of reporter;}
}void main( )
{
parbegin(observer( ),reporter( ));
}
由于观察者和报告者各自独立地并行工作,n=n+1的操作,既可以在报告者的print (n) 和n=0操作之前,也可以在其后,还可以在print (n) 和n=0之间,即可能出现以下三种执行序列:
①n=n+1;print(n) ;n=0;
②print(n) ;n=0 ;n=n+1;
③print(n) ;n=n+1 ;n=0;
假设在开始某个循环之前,n的值为s,则在完成一个循环后,对上述三个执行序列打印机打印的n值和执行后的n值如下表所示:
表1
执行序列


打印的值
s+1
s
s

执行后的值1由上表可见,由于观察者和报告者的执行速度不同,导致了计算结果的不同,这就是说,程序并发执行已丧失了顺序执行所保持的封闭性和可再现性。而产生了如下一些新的特征:
① 间断性
如果并发执行的程序与其它程序竞争资源失败而阻塞,或运行到一个时间片结束,它都会放弃CPU,使自己无法继续运行下去,但是当别的程序释放资源,使它能获得申请的资源并再次被调度选中时,它又能继续运行下去。这就使并发执行的程序具有执行—暂停—执行的活动规律。

② 失去封闭性
程序在并发执行时,多个程序共享系统中的所有资源,因此这些资源的使用状态将由多个程序改变,使程序运行失去了封闭性。

③ 不可再现性
由于程序的并发执行,打破了由某一道程序独占系统资源时的封闭性,也必将导致失去程序执行的可再现性。

程序的并发执行所表现出的特性说明以下两个问题:
⑴ 程序和计算机执行程序的活动不再一一对应
程序和计算机执行程序的活动是两个概念,程序是指令的有序集合,是静态的概念;而计算机执行程序的活动是指令序列在CPU上的执行过程,或CPU按照程序执行指令序列的过程。通常把计算机执行程序的活动,称为“计算”,显然,“计算”是一个动态的概念。如前所述,程序在顺序执行时,程序和“计算”之间保持一一对应的关系,但在并发执行时,一个并发程序可为多个用户作业调用,而使该程序处于多个“执行”过程中,从而形成了多个“计算”,这就是说,多个“计算’可能是在不同数据集上执行同一程序,所以程序和“计算”不再一一对应。例如在分时系统中,内存中一个编译程序的副本同时为几个用户作业编