27
第第第 第第第第 第第第 第第第第 重重重重重 重重重重重 第第第第第第第第 第第第第第第第第 第第第第第第第第 第第第第第第第第 第第第第第第第第第第第第 第第第 第第第第第 、、 第第第第第第第第第第第第 第第第 第第第第第 、、

第三章 进程管理

Embed Size (px)

DESCRIPTION

第三章 进程管理. 重点和难点 : 进程的定义和特征 进程的同步和互斥 用信号量机制解决进程同步、互斥、前趋图问题. 3.1 进程的基本概念. 3.1.1 进程的引入 程序的顺序执行、程序的并发执行特征比较 程序的顺序执行 程序的并发执行 1 顺序性 1 间断性 2 封闭性 2 失去封闭性 3 可再现性 3 不可再现性. 进程的引入. 多道程序系统的特点是并行性。为了充分利用系统资源,在主存中同时存放多道作业运行,所以各作业之间是并行的 各程序由于同时存在于主存中,它们之间必定会存在相互依赖,相互制约的关系。 (间接制约关系、直接制约关系) - PowerPoint PPT Presentation

Citation preview

Page 1: 第三章  进程管理

第三章 进程管理第三章 进程管理 重重重重重重重重重重重重 进程的定义和特征进程的定义和特征 进程的同步和互斥进程的同步和互斥 用信号量机制解决进程同步、互斥、前趋图问用信号量机制解决进程同步、互斥、前趋图问题题

Page 2: 第三章  进程管理

3.1 3.1 进程的基本概念进程的基本概念 3.1.1 3.1.1 进程的引入进程的引入 程序的顺序执行、程序的并发执行特征比较程序的顺序执行、程序的并发执行特征比较程序的顺序执行程序的顺序执行 程序的并发执行程序的并发执行1 1 顺序性顺序性 1 1 间断性间断性2 2 封闭性封闭性 2 2 失去封闭性失去封闭性33 可再现性可再现性重重 3 3 不可再现性不可再现性

Page 3: 第三章  进程管理

进程的引入进程的引入 多道程序系统的特点是并行性。为了充分利用系统资源,多道程序系统的特点是并行性。为了充分利用系统资源,在主存中同时存放多道作业运行,所以各作业之间是并行在主存中同时存放多道作业运行,所以各作业之间是并行的的 各程序由于同时存在于主存中,它们之间必定会存在相互各程序由于同时存在于主存中,它们之间必定会存在相互依赖,相互制约的关系。依赖,相互制约的关系。 (间接制约关系、直接制约关 (间接制约关系、直接制约关系)系) 在多道程序系统所带来的复杂环境中,程序具有了并行、在多道程序系统所带来的复杂环境中,程序具有了并行、制约、动态的特性,原来的程序概念,难以刻画系统中的制约、动态的特性,原来的程序概念,难以刻画系统中的情况了。情况了。

• 程序本身完全是静态的概念程序本身完全是静态的概念 • 程序概念也反映不了系统中的并行特性程序概念也反映不了系统中的并行特性

Page 4: 第三章  进程管理

前驱图(前驱图( Procedence GraphProcedence Graph ):是一个有向无循):是一个有向无循环图,图中的每个结点可用于表示一条语句,一个程环图,图中的每个结点可用于表示一条语句,一个程序段或进程;结点间的有向边则表示在两结点之间存序段或进程;结点间的有向边则表示在两结点之间存在的偏序或前驱关系。“在的偏序或前驱关系。“ ”,”, == {(p{(pii ,, ppjj)})} 如果如果 (p(pii ,, ppjj))∈∈ 可写成可写成 ppii p pj j ,,称称 ppii 是是 ppj j 的前驱,的前驱,

而而 ppjj 是是 ppii 的直接后继。的直接后继。 关于前驱图的几个概念:关于前驱图的几个概念:

• 1 1 直接前趋直接前趋• 2 2 直接后继直接后继• 3 3 初始结点初始结点• 4 4 终止结点终止结点• 5 5 结点的重量:该结点所含的程序量或结点的执行时间来结点的重量:该结点所含的程序量或结点的执行时间来计算。计算。

Page 5: 第三章  进程管理

1

2

3

4

5

6

7

存在下面的前驱关系:P1 P2 , P1 P3 ; P1 P4 ; P2 P5 ; P3 P5 ; P5 P7;P4 P6 , P6 P7或表示为:P = {P1,P2,P3,P4,P5,P6,P7} ={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,p5),(P4,P6),(P5,P7),(P6,P7)}

七个结点的前驱图

Page 6: 第三章  进程管理

注意:前驱图中不存在循环。注意:前驱图中不存在循环。 SS22 S S33 ,, SS33 S S22 显然这种前驱关系是不可能满足的,显然这种前驱关系是不可能满足的, SS33 的执的执

行要依赖于行要依赖于 SS22 的执行结果,的执行结果, SS22 的执行结果又要的执行结果又要依赖于依赖于 S3S3 的执行结果,这种程序是不可能执行的执行结果,这种程序是不可能执行下去的。下去的。

Page 7: 第三章  进程管理

一个较大的程序通常都是由若干个程序段一个较大的程序通常都是由若干个程序段组成。在程序执行时,必须按照某种先后组成。在程序执行时,必须按照某种先后次序逐个执行,仅当前一操作执行完后,次序逐个执行,仅当前一操作执行完后,才能执行后继操作。才能执行后继操作。 例如:在进行计算时,总是先输入用户的程序例如:在进行计算时,总是先输入用户的程序和数据,然后才能计算,计算完成后再将结果打和数据,然后才能计算,计算完成后再将结果打印出来。印出来。

11 、、程序的顺序执行程序的顺序执行

Page 8: 第三章  进程管理

I1 C1 P1 P2I2 C1

程序顺序执行时的前驱图对于一个程序段中的多条语句来说,也有一个执行顺序的问题。如果对于下述三条语句的程序段:S1 : a := x + yS2 : b := a - 5S3 : C := b + 1 ( 其中 S2 必须在 a 被赋值以后才能执行;同样 S3 也只能在 b被赋值 以后才能执行 )

Page 9: 第三章  进程管理

22 、、    程序顺序执行时的特征程序顺序执行时的特征 (( 11 ))    顺序性顺序性 处理机的操作,严格按照程序所规定的顺序执行,即处理机的操作,严格按照程序所规定的顺序执行,即只有前一操作结束后,才能执行后继操作。只有前一操作结束后,才能执行后继操作。 (( 22 )) 封闭性(失去交换性)封闭性(失去交换性) 程序是在封闭的环境下运行的。即程序在运行时,它程序是在封闭的环境下运行的。即程序在运行时,它独占全机资源,因而机内各资源的状态(除初始状态独占全机资源,因而机内各资源的状态(除初始状态外),只有程序才能改变它。程序一旦开始运行,其执外),只有程序才能改变它。程序一旦开始运行,其执行结果不受外界因素的影响。行结果不受外界因素的影响。 (( 33 )) 可再现性可再现性 只要程序执行时的环境和初始条件都相同,不论它是只要程序执行时的环境和初始条件都相同,不论它是从头到尾的不停顿的执行,还是“走走停停”地执行,从头到尾的不停顿的执行,还是“走走停停”地执行,都将获得相同的结果。都将获得相同的结果。

Page 10: 第三章  进程管理

3.3. 多道程序系统中,程序执行环境的变化多道程序系统中,程序执行环境的变化计算机能够同时处理多个具有独立功能的程序(批处理系统,计算机能够同时处理多个具有独立功能的程序(批处理系统,分时系统、实时系统、网络与分布式系统)。这样的执行环分时系统、实时系统、网络与分布式系统)。这样的执行环境具有三个特点:境具有三个特点:独立性 独立性 随机性随机性资源共享资源共享硬件资源:硬件资源: CPUCPU 、输入输出设备,存储器、输入输出设备,存储器

软件资源:各种例行程序、各种共享的数据软件资源:各种例行程序、各种共享的数据 多道程序环境下执行程序的道数多道程序环境下执行程序的道数 >> 计算机系统中计算机系统中 CPUCPU 的个数的个数 单单 CPUCPU 中,则由中,则由 NN -- 11 道程序处在等待道程序处在等待 CPUCPU 的状态的状态 输入输出设备有限将导致这些设备被共享、内存有限将导致内输入输出设备有限将导致这些设备被共享、内存有限将导致内存被共享存被共享

Page 11: 第三章  进程管理

程序的并发执行程序的并发执行 I1 I2 I4I3

C1 C2 C3

P1

C4

P4P3P2

程序并发执行时的前驱图

Page 12: 第三章  进程管理

在上图中存在下属的前驱关系:在上图中存在下属的前驱关系: IIii C Cii ,, IIii I Iii ++ 11 ,, CCi i P Pii ,, CCii C Cii ++ 11 ,, P PP Pii ++ 11 IIii ++ 11 和和 CCii及及 PPii -- 11 是可以并发执行的。是可以并发执行的。

Page 13: 第三章  进程管理

例:下述四条语句的程序段画出前驱图例:下述四条语句的程序段画出前驱图SS11 :: aa :=:= x+2x+2SS22 :: bb :=:= yy ++ 44SS33 :: cc :=:= aa ++ bbSS44 :: dd :=:= cc ++ 66

S1

S2

S4S3

Page 14: 第三章  进程管理

1.1. 程序并发执行可分为两种:程序并发执行可分为两种: 多道程序系统的程序执行环境变化所引起的多道多道程序系统的程序执行环境变化所引起的多道程序的并发执行程序的并发执行 由于资源有限,多道程序的并发执行总是伴随着资源的由于资源有限,多道程序的并发执行总是伴随着资源的共享与竞争,制约了各道程序的执行速度。共享与竞争,制约了各道程序的执行速度。 在某道程序段中,包含着一部分可以同时执行或在某道程序段中,包含着一部分可以同时执行或顺序颠倒执行的代码顺序颠倒执行的代码 例如:例如: readread (( aa ); ); readread (( bb ); ); 既可以同时执行,也可以颠倒次序执行,同时执行不会既可以同时执行,也可以颠倒次序执行,同时执行不会改变顺序程序所具有的逻辑行知,可采用并发执行来改变顺序程序所具有的逻辑行知,可采用并发执行来充分利用资源。充分利用资源。

Page 15: 第三章  进程管理

程序并发执行:程序并发执行: 一组逻辑上相互独立的程序或程序段在执一组逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,行过程中,其执行时间在客观上相互重叠,即一个程序段的执行,尚未结束,另一个即一个程序段的执行,尚未结束,另一个程序段的执行已经开始的这种执行方式。程序段的执行已经开始的这种执行方式。

Page 16: 第三章  进程管理

程序并发执行时的特征程序并发执行时的特征 间断性、失去封闭性、不可再现性间断性、失去封闭性、不可再现性 间断性间断性

• 程序在并发执行时,由于它们共享资源或为完成某一项任务而合程序在并发执行时,由于它们共享资源或为完成某一项任务而合作,致使在并发程序之间存在相互制约的关系。作,致使在并发程序之间存在相互制约的关系。 ((II 、、 CC 、、 PP 是三是三个相互合作的程序,当计算程序完成个相互合作的程序,当计算程序完成 CCii -- 11 的计算后,如果输入程的计算后,如果输入程序序 II 尚未完成对尚未完成对 IIii 的处理,则计算程序无法进行的处理,则计算程序无法进行 CCii 处理,致使计处理,致使计算程序在停运行。算程序在停运行。 ))

失去封闭性失去封闭性• 程序在并发执行时,是多个程序共享系统中的各种资程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。程序的运行失去了封闭性。

Page 17: 第三章  进程管理

不可再现性不可再现性 • 程序在并发执行时,由于失去了封闭性,也导致失去程序在并发执行时,由于失去了封闭性,也导致失去了可再现性。了可再现性。 例如:有两个循环程序例如:有两个循环程序 AA 和和 BB ,它们共享一个变量,它们共享一个变量 NN 。。程序程序 AA 每执行一次时都要做每执行一次时都要做 NN :=:= NN ++ 11 操作;程操作;程序序 BB 每执行一次时,都要做每执行一次时,都要做 printprint (( NN )操作,然后)操作,然后再将再将 NN 置成“置成“ 00”” ,程序,程序 AA 和和 BB 以不同的速度运行。以不同的速度运行。(假定某时刻变量(假定某时刻变量 NN 的值为的值为 nn ))• (( 11 ))    NN :=:= NN ++ 11 在在 printprint (( NN )和)和 NN :=:= 00 之之前,此时得到的前,此时得到的 NN 值分别为值分别为 nn ++ 11 ,, nn ++ 11 ,, 00 (( 22 )) NN :=:= NN ++ 11 在在 printprint (( NN )和)和 NN :=:= 00之后,此时得到的之后,此时得到的 NN 值分别为值分别为 nn ,, 00 ,, 11 (( 33 )) NN :=:= NN ++ 11 在在 printprint (( NN )和)和 NN :=:= 00之间,此时得到的之间,此时得到的 NN 值分别为值分别为 nn ,, nn ++ 11 ,, 00

Page 18: 第三章  进程管理

程序并发执行的条件程序并发执行的条件程序并发执行过程可以描述为:程序并发执行过程可以描述为:SS00CobeginCobeginPP11 ;; PP22 ;……;…… PPnnCoendCoendSSnn19661966 年,年, BernsteinBernstein 提出了相邻语句提出了相邻语句 SS11 ,, SS22 可以并发执可以并发执

行的条件。行的条件。 如果并发执行的各程序段中语句或指令满足如果并发执行的各程序段中语句或指令满足 BernsteinBernstein的三个条件,则认为并发执行不会对执行结果的封闭的三个条件,则认为并发执行不会对执行结果的封闭性和可再现性产生影响。性和可再现性产生影响。

Page 19: 第三章  进程管理

将程序中任一语句将程序中任一语句 SSii划分为两个变量的集合划分为两个变量的集合 RR (( SSii )和)和WW (( SSii )其中)其中

RR (( SSii )=)= {a{a11,a,a22,,…………aamm}} 是语句是语句 SSii 在执行其间必须对其在执行其间必须对其进行读写的变量进行读写的变量

WW (( SSii )=)= {b{b11 ,, bb22 ,……,…… bbnn}} 是语句是语句 SSii 在执行其间必在执行其间必须对其进行修改,访问的变量须对其进行修改,访问的变量

如果对于语句如果对于语句 SS11 和和 SS22 ,有,有 ① ① R(SR(S11))∩∩W(SW(S22)) == {{ΦΦ}} ② ② W(SW(S11))∩∩R(SR(S22)) == {{ΦΦ}} ③ ③W(SW(S11) ) ∩∩W(SW(S22)={)={ΦΦ}} 同时成立同时成立即:即: R(SR(S11))∩∩W(SW(S22) ) ∪∪W(SW(S11))∩∩R(SR(S22))∪∪W(SW(S11) ) ∩∩W(SW(S22)) =={{ΦΦ}} 则语句则语句 SS11 和和 SS22 是可以并发执行的。是可以并发执行的。

Page 20: 第三章  进程管理

例:若有两条语句例:若有两条语句 CCii == aa -- bb 和和 WWii == cc ++ 11 ,判断它们,判断它们是否可以并发执行?是否可以并发执行?

解:它们的“读集”和“写集”分别为解:它们的“读集”和“写集”分别为 RR (( CC :=:= aa -- bb )=)= {a{a ,, b}b} ;; RR (( WW :=:= cc ++11 )=)= {c} {c} WW (( CC :=:= aa -- bb )=)= {c} {c} ;; WW (( WWii :=:= cc ++ 11 ))== {w}{w} RR (( CC :=:= aa -- bb )∩)∩ WW (( WWii :=:= cc ++ 11 )) ={={ΦΦ}} RR (( WW :=:= cc ++ 11 )∩)∩ WW (( CC :=:= aa -- bb )) ={c}={c}所以:两条语句不能并发执行。所以:两条语句不能并发执行。

Page 21: 第三章  进程管理

有的同学发现,同一语句的“读集”和“写集”的交有的同学发现,同一语句的“读集”和“写集”的交集是空集。集是空集。RR (( CC :=:= aa -- bb )∩)∩WW (( CC :=:= aa -- bb )=)= {{ΦΦ}}WW (( WW :=:= cc ++ 11 )∩)∩WW (( WW :=:= cc ++ 11 )) ={={ΦΦ}}

其实,同一语句的“读集”和“写集”也其实,同一语句的“读集”和“写集”也可能相同(交集不为空)可能相同(交集不为空)例如:计数语句:例如:计数语句: xx == xx ++ 11读集和写集相同读集和写集相同 RR (( xx == xx ++ 11 )=)= WW(( xx == xx ++ 11 )=)= {x}{x}

Page 22: 第三章  进程管理

课后练习课后练习例:用例:用 BernsteinBernstein 条件判断以下四条语句是条件判断以下四条语句是否两两可以并发执行。否两两可以并发执行。SS11 :: aa :=:= xx ++ yySS22 :: bb :=:= zz ++ 11SS33 :: CC :=:= aa -- bbSS44 :: ww :=:= cc ++ 11

Page 23: 第三章  进程管理

例:例:设有堆栈设有堆栈 SS ,栈指针,栈指针 toptop ,栈中存放内存中相应数据块地址,,栈中存放内存中相应数据块地址,设有两个程序段设有两个程序段 getaddrgetaddr (( toptop )和)和 reladdrreladdr (( blkblk ),其中),其中 getadgetaddrdr (( toptop )从给定的)从给定的 toptop 所指栈中取出相应的内存数据块地址,而所指栈中取出相应的内存数据块地址,而 rreladdreladdr (( blkblk )则将内存数据块地址)则将内存数据块地址 blkblk 放入堆栈放入堆栈 SS 中。中。

a

b

e

f

a

b

e

f

a

b

e

f

top 执行 top top + 1后

toptop getaddr

为了控制和协调各程序段执行过程中的软硬件资源共享和竞争,必须有一个描述各程序执行过程和共享资源的基本单位。(这个单位被成为进程,或任务 task )

Page 24: 第三章  进程管理

进程的定义进程的定义 进程有许多各式各样的定义进程有许多各式各样的定义(( 11 )进程是可以并发执行的计算部分)进程是可以并发执行的计算部分(( 22 )进程是一个独立的可以调度的活动)进程是一个独立的可以调度的活动(( 33 )进程是一个抽象的实体,当它执行某个任务时,将要分配)进程是一个抽象的实体,当它执行某个任务时,将要分配和释放各种资源和释放各种资源(( 44 )行为的规则叫程序,程序在处理机上执行的活动称为进程。)行为的规则叫程序,程序在处理机上执行的活动称为进程。(( 55 )一个进程是一系列逐一执行的操作,而操作的确切含义则)一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程。有赖于以何种详尽程度来描述进程。进程:一个具有独立功能的程序对某个数据集在处理机 进程:一个具有独立功能的程序对某个数据集在处理机 上的执行过程和分配资源的基本单位。上的执行过程和分配资源的基本单位。(在这里,程序指一组操作序列,而数据集则是接受程(在这里,程序指一组操作序列,而数据集则是接受程序规定操作的一组存储单元的内容。序规定操作的一组存储单元的内容。 ))

Page 25: 第三章  进程管理

比较进程和程序的区别:比较进程和程序的区别:答:答: 1 1 进程是一个动态的概念进程是一个动态的概念,进程的实质是程序的一次执,进程的实质是程序的一次执行过程,动态性是进程的基本特征,同时进程是有一定的行过程,动态性是进程的基本特征,同时进程是有一定的生命期的;而程序只是一组有序指令的集合,本身并无运生命期的;而程序只是一组有序指令的集合,本身并无运动的含义,是静态的。动的含义,是静态的。22 并发性并发性,并发性是进程的重要特征,引入进程的目的正是,并发性是进程的重要特征,引入进程的目的正是为了使其程序和其它程序并发执行;为了使其程序和其它程序并发执行;而程序而程序 (( 没有建立进没有建立进程程 )) 是不能并发执行的。是不能并发执行的。33 独立性独立性,是指进程一个能独立运行、独立分配资源和独立,是指进程一个能独立运行、独立分配资源和独立调度的基本单位;调度的基本单位;凡未建立进程的程序,都不能作为一个凡未建立进程的程序,都不能作为一个独立的单位参加运行。独立的单位参加运行。 44 不同的进程可以包含同一个程序,同一个程序在执行中不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。也可以产生多个进程。

Page 26: 第三章  进程管理

作业和进程的关系作业和进程的关系 (区别) (区别)1 1 作业是用户向计算机提交任务的任务实体。在作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将它放入外用户向计算机提交作业之后,系统将它放入外存中的作业等待队列中等待执行;而进程则是存中的作业等待队列中等待执行;而进程则是完成用户任务的执行实体,是向系统申请分配完成用户任务的执行实体,是向系统申请分配资源的基本单位。资源的基本单位。2 2 一个作业可由多个进程组成,且必须至少由一一个作业可由多个进程组成,且必须至少由一个进程组成,反之不然。个进程组成,反之不然。3 3 作业的概念主要用在批处理系统中,而进程的作业的概念主要用在批处理系统中,而进程的概念则用在几乎所有的多道系统中。概念则用在几乎所有的多道系统中。

Page 27: 第三章  进程管理

在操作系统中为什么要引进进程这个概念在操作系统中为什么要引进进程这个概念 ??它会产生什么影响它会产生什么影响 ?? 答:在操作系统中为什么要引进进程这个概念答:在操作系统中为什么要引进进程这个概念 ??它会产生什么影响它会产生什么影响 ??